机器人控制系列教程之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 分钟前
滑膜观测器(学习记录)
stm32·单片机·学习·matlab·机器人
feasibility.4 小时前
一台 2500 美元的开源双足人形平台 LeRobot Humanoid,正在让“教机器人走路”变成可复现的事
机器人·开源
考研保研资料分享5 小时前
自动化与机器人保研经验:四校夏令营笔面试、英语考核及复习规划(2025)
面试·机器人·自动化
zhangrelay21 小时前
用ROS2Lyrical实验报告册思路重做蓝桥云课ROS1实验并改进
linux·笔记·学习·ubuntu·机器人
具身AGI21 小时前
人类演示补成机器人域,触觉共训才成立
机器人
山顶夕景1 天前
【VLA】Qwen-VLA:VLM+DiT统一多模态理解与连续机器人动作生成
机器人·多模态·扩散模型·具身智能·vla·dit·vlm
mtouch3331 天前
视频与三维场景融合投射系统解析:从地图标定到镜头参数调校的完整流程
人工智能·机器人·虚拟现实·电子沙盘·数字沙盘
黑妹天下第一乖1 天前
第08讲 · 视觉与相机流水:Spectra ISP 与实时检测
人工智能·嵌入式硬件·数码相机·机器人·接口隔离原则·iot
XMAIPC_Robot1 天前
RK3576/RK3588+FPGA+AI数据采集系统:实时性与边缘AI算力兼顾
人工智能·fpga开发·机器人·数据采集·rk3588+fpga·rk3576+fpga
海盗12341 天前
AI 新闻日报 2026-10-05:三周重构 30 万行 / macOS 给智能体加权限锁 / 具身订单结构被摆上台面
人工智能·macos·重构·机器人·人工智能aigc