机器人控制系列教程之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文件夹中即可

往期推荐

相关推荐
硅谷秋水4 小时前
具身智能中的生成多智体协作:系统性综述
人工智能·深度学习·机器学习·语言模型·机器人
菜鸟小芯4 小时前
DAY4 基于 OpenClaw + 飞书开放平台实现 AI 新闻推送机器人
人工智能·机器人·飞书
向上的车轮4 小时前
机器人未来会发展出自我意识吗?
人工智能·机器人
人机与认知实验室5 小时前
春晚人形机器人的未来发展趋势:态势感知与势态知感
机器人
工业HMI实战笔记5 小时前
工业机器人HMI:协作机器人的人机交互界面
人工智能·ui·性能优化·机器人·自动化·人机交互·交互
feasibility.5 小时前
用memU bot做飞书ai办公机器人(含本地ollama模型接入+可视化图表mcp)
人工智能·科技·机器人·飞书·工具·agi·mcp
正宗咸豆花19 小时前
物理AI革命:当算法走出屏幕,制造业如何被重新定义
人工智能·机器人·开源
田里的水稻1 天前
FA_规划和控制(PC)-瑞德斯.谢普路径规划(RSPP))
人工智能·算法·数学建模·机器人·自动驾驶
志栋智能1 天前
AI驱动的安全自动化机器人:从“告警疲劳”到“智能免疫”的防御革命
运维·人工智能·安全·机器人·自动化
田里的水稻1 天前
FA_规划和控制(PC)-规律路图法(PRM)
人工智能·算法·机器学习·机器人·自动驾驶