本文仅描述连杆机构的D-H模型转URDF文件方法(纯手打,不依赖SolidWorks),其它机构请自行修改
...
...
...
标签代表一个连杆
代表一个连杆,其中有关于连杆所有三维和物理信息的描述:形状,颜色,质量,转动惯量,碰撞体积,详细的描述请移步ROS wiki,在这里我们只介绍我们需要的一些属性:
这个我们先只需要用
需要重点关注的:
例如:
其中 xyz代表在上一个坐标系中,这个连杆距离坐标系原点的位移;
rpy代表当前连杆在上一个坐标系中的旋转
注意,每次都是先旋转,后平移。
需要强调的是:这只代表连杆机构在视觉上进行旋转平移,同理,连杆机构的惯性属性坐标系和碰撞检测坐标系也可以进行旋转平移,但这都不会引起连杆末端关节坐标系的旋转平移。
此处省略了连杆的惯性属性
关节元素描述关节的运动学和动力学,还指定关节的安全限制。
我们重点关注关节坐标系相对于上一个关节坐标系的旋转平移是如何做到的
origin标签中的 x,y,z代表当前关节在上一个关节坐标系中沿着x,y,z轴平移量,单位是米;r,p,y带便当前坐标系在上一个坐标系中绕x,y,z轴的旋转弧度,单位是rad,由此通过连杆的树型结构便可以确定整个机器人主题上所有关节的位置和欧拉角。
首先,确认自己的机械臂 D-H参数,我们从网上找一个做实验
先创建机器人的base_link,这个连杆是整个机器人和外界链接的第一个连杆,默认初始方向为竖直向上。根据连杆1的D-H参数,base_link表示为:
然后创建关节1,关节1是连接base_link和link1(我们马上要创建个的下一个连杆),根据连杆2的D-H参数,joint1表示如下:
注意这里的origin参数
xyz = “0 0 0”;表示关节1在上一个坐标系中(即初始坐标系)没有位移;
rpy = “1.5708 0 1.5708”,表示关节1的坐标系在上一个坐标系中绕x轴旋转90°,绕z轴旋转90°;
注:绕y轴的旋转在D-H参数表中使用绕x 绕z组合表示,例如绕y轴90° = 绕z轴90° + 绕x轴90°
依据连杆1数据确定连杆2的位置和方向,依据连杆2数据创建新的link1:
同理,根据后边的连杆D-H参数可以依次建立连杆和关节element。
续:
再按照此过程编写完URDF文件后,joint的坐标和方向已经不存在问题了,link的方向可能需要调整,时间原因,过几天优化后把全自动生成URDF文件的python脚本放上来