URDF(Universal Robot Description Format——通用机器人描述格式)是ROS里使用的一种机器人的描述文件,包含的内容有:连杆、关节,运动学和动力学参数、可视化模型、碰撞检测模型等。简单的机器人模型可以人工编写,但是对于复杂的模型,转动惯量等参数计算复杂,人工编写很费时费力,好在ROS wiki 中提供一款将Solidworks模型转换为URDF文件的插件sw2urdfSetup。最近从淘宝上购买了一款开源的六自由度的机械臂,卖家提供了完整的Solidworks装配图及零件图(如下图示),但是并没有提供该机械臂的ROS驱动,也没有URDF模型,打算自行完成ROS相关驱动支持,并开展基于该机械臂的强化学习控制研究。
本机械臂看似简单,也包含了近90个零件,其中机械抓部分相对特殊与复杂,因为机械抓虽然包含有6个关节,但是只有一个关节直接受舵机驱动,其余的关节由这个关节联动,sw2urdfSetup插件不能直接处理这种情况,必须对生成的URDF文件进行调整。
本文完成了机械臂机械抓部分的URDF模型建立以及gazebo运动仿真的支持,具体包含以下几个过程:
(1)solidworks中将机械抓部分装配体的建立与调整
这部分工作是将机械抓部分的零件拿出来建立一个单独的装配体,如下:
然后在装配体内部根据URDF中每个link包含的部分聚合成不同的装配体,各部分如下(依次为base_link、left_knuckle_link、right_knuckle_link、left_inner_knuckle_link、right_inner_knuckle_link、left_finger_link、right_finger_link):
注意每一个装配体link上要建立坐标系与基准轴(编辑link装配体时菜单操作:插入——参考几何体——基准轴或坐标系),其中基准轴用于选择表示为joint的运动轴,子link的坐标系原点在父link对应的基准轴方向上(一个父link对应几个子link就有几个基准轴),坐标系的一个轴应该与基准轴平行。这些坐标系与基准轴在sw2urdfSetup插件生成URDF文件时需要。
基准轴与坐标系应该在link的子装配体中添加,如上面第一幅图示,第二副图是带坐标系与基准轴显示的总的装配体模型,将材料改成了黄铜,所以颜色变了,我这里没有进一步调整了。
(2)基于sw2urdfSetup插件生成机械抓URDF文件
可以参考下面的博客文章和ROS wiki,注意有三个地方需要修改:
https://blog.youkuaiyun.com/gpeng832/article/details/73917487
我这里的版本中实际操作与上面链接中有所不同:加载插件后,插件菜单位置在 工具——file——export as URDF,而不是教程里说的工具栏。
配置每个link,主要是坐标系与基准轴不要搞错了:
点击 “preview and export”,配置每个关节jiont,主要是配置限制 limit ,一个都不能空,一开始我的 速度与力矩 没有设置,自动生成了零,会导致gazebo中关节没法运动:
点击 next,大部分都是自动生成:
最后点完成生成相关文件,保存对话框文件名称中的SolidWorks装配体后缀要去掉。参考下面链接修改