机器人控制系列教程之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 分钟前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
向阳逐梦1 天前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人
朽木成才1 天前
小程序快速实现大模型聊天机器人
小程序·机器人
聆思科技AI芯片1 天前
实操给桌面机器人加上超拟人音色
人工智能·机器人·大模型·aigc·多模态·智能音箱·语音交互
新加坡内哥谈技术2 天前
开源Genesis: 开创机器人研究的全新模拟平台
机器人·开源
野蛮的大西瓜2 天前
文心一言对接FreeSWITCH实现大模型呼叫中心
人工智能·机器人·自动化·音视频·实时音视频·文心一言·信息与通信
高克莱2 天前
【钉钉群聊机器人定时发送消息功能实现】
java·spring boot·机器人·调度任务
小俱的一步步2 天前
钉钉自定义机器人发送群消息(加签方式、http发送)
机器人·钉钉
三月七(爱看动漫的程序员)2 天前
Knowledge Graph Prompting for Multi-Document Question Answering
人工智能·gpt·学习·语言模型·自然语言处理·机器人·知识图谱
努力进修3 天前
【机器学习】当教育遇上机器学习:打破传统,开启因材施教新时代
人工智能·机器学习·机器人