机器人控制系列教程之URDF自动生成工具

URDF文件的编写较为复杂,ROS官方提供了URDF的SolidWorks插件,可方便地将 SW 零件和装配体导出为 URDF 文件。导出器将创建一个类似 ROS 的软件包,其中包含网格、纹理和机器人(URDF 文件)目录。对于单一的 SolidWorks 零件,零件导出器将提取材料属性并在 URDF 中创建一个链接。对于装配体,导出器将根据 SW 装配体层次结构建立链接并创建树形结构。导出器可自动确定适当的连接类型、连接变换和轴。可以通过SolidWorks直接生成可用的URDF描述文件。

工具下载及安装

solidworks_urdf_exporter插件适配了多个版本的SolidWorks软件,具体需要下载那个版本可通过这个链接:

https://github.com/ros/solidworks_urdf_exporter/releases,自行下载。需要注意的是Windows系统下面只需要下载.exe文件,双击运行安装即可。

安装完成后,打开SolidWorks软件在"工具->Tools"中即可看到该插件

机器人三维模型运动副定义

笔者本次使用的机器人为一个六自由度的串联机器人,该三维模型可通过如下链接进行下载。链接:https://pan.baidu.com/s/1ANM1Vhj2lCB0Knc0uukvnQ?pwd=tech,提取码:tech。下载的所有文件如下图所示:

你可在SW(SolidWorks)软件中新建一个装配体文件,一次导入Base.SLDPRT、Link_1.SLDPRT、Link_2.SLDPRT、Link_3.SLDPRT、Link_4.SLDPRT、Link_5.SLDPRT、Link_6.SLDPRT、Link_7.SLDPRT各部件,在每个部件的导入过程中定义各个部件的运动副,这个机器人中的运动副均为旋转幅。

URDF文件导出设置

在"工具->Tools->Export as URDF"中打开刚才安装的插件。或者直接在右上角搜索框输入urdf,比较方便。设置base_link(可自定义修改)。修改图中与base_link相连link个数时会在下方创建Empty_link,由于我已经设置成了Link_1,所以名称不一样。

其中,"Global Origin Coordinate System"建议选择"Automatically Generate"表示程序自动生成,鼠标点击"Automatically Generate"下方的矩形框,再点击机器人的Base部件,矩形框下方的数量设置为1,表示与该部件链接的部件有1个,即可将该部件设置完成。

同理,鼠标点击下方部件树中的Link_1部件,即可弹出Link_1部件的相关设置如下:

其中,最上方可自定义设置部件的名称和关节名称,"Reference Coordinate System"相关坐标系选择对应的"Origin_Joint_1","Reference Axis"相关坐标轴选择为"Automatically Generate",当然也可以直接自行选择,"Joint Type"选择为"Automatically Detect"表示自动检测,但有时会检测错误,所以这里我们选择revolute,因为我们在前期搭建机器人装配体的时候已经设置了关节的类型。其余设置均与上述Base部件中的设置相同。

以此类推,将所有的部件设置完成,即可看到完整的部件树如下,需要注意的是这个机器人中末端的手部是由两个部件组成的,所以在设置Link_5的时候需要将所属的子部件选择为2,并且手部两个部件之间是平移副的形式,在"Joint Type"中应该选择"prismatic"

然后鼠标单击"Preview and Export"预览并导出,此时,SW软件将进入短暂的计算时间。

计算完成后,将弹出如下界面:

您可点选各个关节,设置他们的角度的范围、摩擦系数、阻尼系数以及对应控制器的软限位等等,注:角度的范围必须设置不然无法进行后续的控制器搭建,也无法导入Simulink中 ,设置完成之后,点击右下角的"Next",即可进入下一步部件的属性设置,同理,您可点击各个部件来设置他们的位置、角度、转动惯量、显示效果等等。

设置完成之后,右下角可以看到有两个选择:只导出URDF文件和导出URDF文件和网格数据,这两个区别就在于是否导出实体的网格数据,建议选择导出URDF文件和网格数据。选择文件夹后即可导出。

导出文件解析

导出之后的文件夹如下图所示。

其中:

  1. config:该文件夹包含一个 "joint names_YourPackageName.yml "文件,包含在生成的 URDF 文件中可用的关节点名称。
  2. launch:该文件夹包含两个文件。"display.launch "用于在 Rviz 中打开机器人。gazebo.launch "用于在 GAZEBO 中启动机器人。
  3. meshhes:此文件夹包含机器人所有链接的".stl "文件。若在上一步中选择只导出URDF文,则此文件为空。
  4. textures:此文件夹为空。
  5. URDF:此文件夹包含机器人的 URDF 文件(见本文附录)。对机器人的描述,包含链接、关节、关节位置和运动范围、质量属性、惯性属性等信息。此外,该文件夹还包含一个 S_RobotAsm.csv 文件。
  6. CMakeLists.txt:该文件是 CMake 编译系统的输入文件,用于构建软件包。描述了如何构建代码以及在何处安装。或更改此文件中的代码顺序。
  7. export:包含在 SOLIDWORKS 中创建软件包时生成的日志。
  8. package.xml:该文件定义了有关软件包的属性,例如软件包名称、版本号、作者、维护者以及与其他 catkin 软件包的依赖关系。

导入MATLAB软件

到开MATLAB软件进入到导出的这个文件夹路径下,在命令行窗口输入show(importrobot('urdf/S_Robot_urdf.urdf')),即可显示出该机器人模型如下图所示。

另外,若需要导入到Simulink中可在命令行中输入smimport('urdf/S_Robot_urdf.urdf'),MATLAB将自动打开Simulink以Simscape模块的形式生成模型文件,如下图所示。

在Simulink中点击"运行",即可在MATLAB中看到机器人模型。

若出现如下报错,是因为导入的urdf文件找不到网格数据文件了,将mesh文件夹复制到urdf文件夹中即可

往期推荐

相关推荐
热心市民R先生14 小时前
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块
机器人
风暴智能14 小时前
获取相机图像(ROS2)
linux·机器人·无人机
一颗小树x14 小时前
【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示
机器人·零样本·具身导航·对象导航
Blossom.1181 天前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
硅谷秋水1 天前
学习以任务为中心的潜动作,随地采取行动
人工智能·深度学习·计算机视觉·语言模型·机器人
虹科智能自动化1 天前
虹科应用 | 探索PCAN卡与医疗机器人的革命性结合
机器人·工业4.0·pcan
MocapLeader2 天前
VR和眼动控制集群机器人的方法
目标跟踪·机器人·人机交互·vr·虚拟现实·多机器人协同
FL171713142 天前
MATLAB机器人系统工具箱中的loadrobot和importrobot
人工智能·matlab·机器人
sy_cora2 天前
IEEE 列表会议第五届机器人、自动化与智能控制国际会议
运维·人工智能·机器人·自动化
遨博学院2 天前
机器人示教操作
机器人