【ROS学习】Solidworks模型转化为URDF文件格式+三连杆机械臂示例+逆运动学

2023-10-28

URDF(Universal Robot Description Format)——通用机器人描述格式,它是ROS里边使用的一种机器人的描述文件,包含的内容有:连杆、关节,运动学和动力学参数、可视化模型、碰撞检测模型等。

到目前为止,本文的主要内容有两个:(1)将solidworks里绘制的三连杆机械臂的三维模型转化为URDF文件,并在rviz中打开;(2)在rviz中测试该模型的逆运动学。

一, 将Solidworks模型转化为URDF文件

这里写图片描述

下载sw_urdf_exporter插件:

下载ROS提供的solidworks转urdf的插件安装文件(链接)—sw2urdfSetup.exe,安装之后再打开solidworks(如果你的solidworks版本无法加载插件的话,多试几个版本,本人使用的是2014版本)后会在菜单栏上的自定义选项旁边箭头下找到“插件”,并点击,如下图所示:
这里写图片描述

加载插件:

进入如下界面,选择“SW2URDF”插件并选择,点击确定加载,如下图:
这里写图片描述

绘制机械臂的简易模型:

本文要研究的是平面三连杆构型的机械臂,一般我们习惯将关节的轴设为Z轴,故在绘制机械臂模型的时候,注意将各个关节的轴的坐标定义准确,如下一步骤和图片所示。

添加坐标系和转轴:

在绘制各个连杆的零件图的时候,添加各自的坐标系和转轴(其实就是下一个连杆的关节轴),点击菜单栏中的“插入”->“参考几何体”->“坐标系”,“基准轴”,5个连杆的坐标系和转轴如下图所示,从左至右连杆的名称分别为:base_link(coordinate0,axis0),link1(coordinate1,axis1),link2(coordinate2,axis2),link3(coordinate3,axis3),gripper(coordinate_gripper)。
这里写图片描述

在URDF界面设置坐标系和转轴:

打开要转换的模型的装配体,如下图所示,在工具栏上出现file选项,点击出现Export to URDF,左边会出现URDF Exportor的属性界面:
这里写图片描述
下面是分别对各个连杆的坐标系和转轴进行设置,使用了前面添加的坐标系和轴,具体来说就是:
link1的坐标系为coordinate1,绕axis0旋转,关节类型:revolute;
link2的坐标系为coordinate2,绕axis1旋转,关节类型:revolute;
link3的坐标系为coordinate3,绕axis2旋转,关节类型:revolute;
gripper的坐标系为coordinate_gripper,绕axis3,它是固定(fixed)关节。
然后点击“preview and export”:
这里写图片描述

设置关节极限

需要在红框处填写上界和下界,否则在运行的时候会出错,然后点击“finish”,会生成package文件,注意默认生成的名字带有后缀.SLDASM,需要将其改成不带下标点并且全都为小写字母的名称,否则编译会出错。
这里写图片描述

生成package文件

生成的package文件如下图所示:
这里写图片描述
可以在urdf文件夹里找到生成的urdf文件。

修正package文件内容

我在测试的时候发现生成的package文件里有些是错误的,直接编译是无法通过的,需要修正的地方有三个:(1)package.xml里的的作者邮箱;(2)将urdf文件夹的名字改为robots;(3)将display.launch里的一个参数改成“True”。

如下所示,默认生成的package.xml里的email是不合法的,只要改成合法的email就可以了。

  </description>
  <author>me</author>
  <maintainer email="me2email.com" /> //改为合法的email
  <license>BSD</license>
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roslaunch</build_depend>

如下所示,display.launch文件里的里的False改为True,否则无法打开Joint State Publish工具。

<launch>
  <arg
    name="model" />
  <arg
    name="gui"
    default="False" />//将False改为True
  <param
    name="robot_description"
    textfile="$(find manipulator34)/robots/manipulator34.urdf" />

ROS下测试

通过roslaunch 命令启动display.launch以后,在rviz的界面中将Global Options下的Fixed Frame 由map改为base_link(自己定义的基座的名字),最终效果如下图所示:
这里写图片描述
这里写图片描述

二, 在rviz中进行逆运动学测试

本部分的内容是使用Moveit提供的setup_assistant来配置机械臂的package文件,需要使用到上一部分生成的URDF文件。
使用命令

roslaunch moveit_setup_assistant setup_assistant.launch

打开setup_assistant:

这里写图片描述

点击Create New Moveit Configuration Package 导入URDF文件(在上一部分已经生成的文件中找到URDF文件)

这里写图片描述

设置Self-Collision,点击Generate Default Collsion Matrix :

这里写图片描述
设置Virtual Joints,Parent Frame Name应设为world_frame:
这里写图片描述
Planning Groups设置名称,选择运动学求解器,然后点击Add Kin. Chain:
这里写图片描述
把base_link设置为Base Link,把gripper设置为Tip Link:
这里写图片描述
设置一个Robot Pose:
这里写图片描述
End Effectors 和Passive Joints 没有设置,暂时不知道这两项有什么用。
作者信息的邮箱的格式一定要准确:
这里写图片描述
然后生成配置文件,选择目录和package的名称。
这里写图片描述
运行package 的demo.launch,在rviz中点击机械臂末端的小球和箭头,随着末端位置的变化,机械臂的构型会逐渐变化,这就是求解逆运动学的过程。
这里写图片描述
还可以给定一个起始位置和终点位置,使用OMPL提供的规划器进行运动规划:
这里写图片描述
暂时还不知道如何在rviz中添加障碍物,以后慢慢琢磨。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ROS学习】Solidworks模型转化为URDF文件格式+三连杆机械臂示例+逆运动学 的相关文章

  • 【python学习笔记】seaborn模块

    目录 热力图介绍 seaborn模块绘制热力图 热力图介绍 热力图是一种特殊的图表 它是一种通过对色块着色来显示数据的统计图表 在绘图时 需要指定每个颜色映射的规则 一般以颜色的强度或色调为标准 比如颜色越深的表示数值越大 程度越深 颜色越
  • spark运行报错:(null) entry in command string: null chmod 0644

    在WIndows操作系统中本地运行spark程序 报以下错误 null entry in command string null chmod 0644 后面是目的目录 解决方法 下载hadoop dll文件 并拷贝到c windows sy

随机推荐

  • JS中的call()和apply()方法和区别

    一 方法定义 apply 调用一个对象的一个方法 用另一个对象替换当前对象 例如 B apply A arguments 即A对象应用B对象的方法 call 调用一个对象的一个方法 用另一个对象替换当前对象 例如 B call A args
  • 分析996个词根在各大考纲词汇中的作用(五)总结精选篇

    CET4 CET6 GRE IELTS TOEFL 考研英语总的词汇量为14055 分析词根总数为996 有11544个单词分布在这些词根中 剩下的2511个词汇没有任何词根信息 本文精选5206个跟词根结合最紧密的单词 superword
  • KVM的HVM虚拟机使用非串口方式建立virsh console 连接

    在去年写的文章中 http blog csdn net dobell article details 14442457 写到了怎么利用serial 设备进行console连接 不过比较麻烦 因为1 需要修改虚拟机内部的grub启动选项 2
  • unity学习笔记-有关打包安卓apk的一些注意事项

    unity学习笔记 有关打包安卓apk的一些注意事项 打包到build project的时候报错 报错信息里出现了jdksdk等 打包报错显示andriodfestxml文件版本有问题 有关urp线管环境打包的时候的一些注意事项 在编辑器里
  • 一款开源的文件搜索神器,终于不用记 find 命令了

    Python微信订餐小程序课程视频 https blog csdn net m0 56069948 article details 122285951 Python实战量化交易理财系统 https blog csdn net m0 5606
  • pppd程序的参数——man手册翻译

    文章目录 pppd全称 摘要 描述 常用的选项 ttyname 串口名 speed 波特率 asyncmap map auth call name connect script 连接脚本 crtscts defaultroute defau
  • chatgpt赋能python:Python处理Word文档

    Python处理Word文档 介绍 Microsoft Word是业界最流行的办公文档编辑工具之一 对于文档处理工作 Word是必不可少的工具之一 然而 尽管Word是十分强大的 但在处理大量数据时 手动处理每个文件是费时费力的 幸运的是
  • 数值分析——LU分解(LU Factorization)

    本系列整理自博主21年秋季学期本科课程 数值分析I 的编程作业 内容相对基础 参考书 David Kincaid Ward Cheney Numerical Analysis Mathematics of Scientific Comput
  • Python 多线程 start()和run()方法的区别(三)

    在实例调用的函数中加入打印当前线程的名字 分别用start 方法和run 方法启动线程检查有什么区别 start 方法 import threading import time def worker count 1 while True i
  • Linux epoll 与 Windows IOCP比较

    前言 epoll 和 IOCP IO Completion Ports 分别是 Linux 和 Windows 系统上的高效网络模型 相比其他网络模型 同样是 polling 方式 这两种模型有如下特点 在系统资源允许下 监控的文件描述符没
  • pandas中to_datetime()时间处理

    pandas to datetime arg errors raise utc None format None unit None pandas通常用于处理成组日期 不管这些日期是DataFrame的轴索引还是列 to datetime方
  • 入职字节外包一个月,我离职了····

    有一种打工人的羡慕 叫做 大厂 真是年少不知大厂香 错把青春插稻秧 但是 在深圳有一群比大厂员工更庞大的群体 他们顶着大厂的 名 做着大厂的工作 还可以享受大厂的伙食 却没有大厂的 命 他们就是大厂的 外包员工 什么都做了 和什么都没做其实
  • idea注释快捷键

    具体实现步骤 1 打开系统设置Setting Ctrl Alt S快捷键 2 Editor gt Live Templates gt 点击 号 添加一个templates group来放置自己快捷键 效果图如下 3 选中创建的group g
  • 在Excel VBA中使用字典

    序言 VBA的基础数据类型里面并没有字典类型 但字典其实在很多应用场景中都很有用 那么如何在VBA中使用字典 本文就用几个例子和大家交流探讨一下 场景1 某个医院每天都会从不同的制造商那里进三种材料中的一种 每天的进价都有可能不同 现在公司
  • NodeRed-第三篇:tcp接入

    1 用tcp in节点接入数据 设置为监听 设置端口号 设置输出为buffer 2 用function节点将buffer转换为string var a msg payload msg payload a return msg 3 用json
  • Android语音识别

    今天从网上找了个例子实现了语音识别 个人感觉挺好玩的 就把代码贴出来与大家分享下 Android中主要通过RecognizerIntent来实现语音识别 其实代码比较简单 但是如果找不到设置 就会抛出异常ActivityNotFoundEx
  • 【Java 笔记】使用Fastjson2时,对象转json首字母大小写问题

    开发环境 一 JSON 转 Object 1 问题 2 解决方案 二 Object转 JSON 三 SpringBoot设置fastjson2 为默认 pom xml 2 配置类 四 FastJson2 注解 默认 2 JSONType 类
  • zabbix 快速入门

    zabbix 快速入门 zabbix介绍 Zabbix是由 Alexei Vladishev 开发的一种网络监视 管理系统 基于Server Client架构 可以使用多种方式监视 可以只使用 Simple Check 不需要安装 Clie
  • CTF-12.web安全SSI注入

    SSl注入攻击介绍 SSl server side inject 的出现是为了赋予html静态页面动态的效果 通过ssI来执行系统命令 并返回对应的结果 如果在网站目录中发现了 stm shtm shtml 并且网站对于SSI的输入没有做到
  • 【ROS学习】Solidworks模型转化为URDF文件格式+三连杆机械臂示例+逆运动学

    URDF Universal Robot Description Format 通用机器人描述格式 它是ROS里边使用的一种机器人的描述文件 包含的内容有 连杆 关节 运动学和动力学参数 可视化模型 碰撞检测模型等 到目前为止 本文的主要内