六自由度协作臂两种 DH 参数建模方式
-
机械臂的 DH 参数建模主要为了正向与逆向运动学计算,需要关注以下参数:① 连杆长度 a a a;② 连杆扭角 α \alpha α;③ 偏置 d d d;④ 关节角 θ \theta θ;⑤ o f f s e t offset offset
-
DH 法简化就是不考虑 y 轴位移和旋转的 2 个自由度,仅考虑 x x x 和 z z z 轴的位移与旋转,因此通过四个参数(上述 ① — ④)表示六自由度位姿;参数 ⑤ 主要控制机械臂的初始状态,一般 DH 建模用不到,只是 matlab 仿真时可能会需要
-
四个参数可以分为关节变量和固定参数,旋转关节下关节变量是关节角 θ \theta θ,移动关节下关节变量是偏置 d d d
-
目前主要有两种 DH 参数建模方法,其中标准DH主要适用在开式运动链的机械结构上,而对闭链机构建立坐标系会发生坐标系重合的风险从而产生歧义;改进 DH 参数建模不会产生歧义应用范围更广,在闭式运动链结构建模上(如并联、四足等)会使运动求解过程更加简单
-
由于选择 z z z 轴, x x x 轴和原点有很大的自由性,所以以下只是建系的一种选择,怎么建系需要根据自身情况来判断
建模
对于协作臂,如下竖直状态即为默认初始状态,对关节、连杆的序号定义如下所示
SDH
1. 确定 z 轴
(1)基本原则:设置 z i z_i zi 为第 i + 1 i+1 i+1 个关节的驱动轴(感觉很抽象,但毕竟关节从 1 开始计数至 n,而为了便于定义, z z z 要从 0 开始计数至 n-1;其实这样关联也符合一种约定,即关节 i i i 被驱动时,连杆 i i i 以及其相连的坐标系 o i x i y i z i o_ix_iy_iz_i oixiyizi 会经历一个相应的运动)
(2)如果第 i + 1 i+1 i+1 个关节是转动关节(平动关节),则 z i z_i zi 是第 i + 1 i+1 i+1 个关节的转动轴(移动轴)
(3) z z z 轴方向任意,但通常平行的 z z z 轴方向尽量相同(如下图为电机旋转反方向)【之前曾考虑是不是以确保逆时针旋转为正来确定 $z $轴方向,后来想想没必要,建立 urdf 用于仿真时里面可以设置旋转的正方向,此处 DH 建模不应受到限制】
2. 确定原点
(1)基本原则:除了基座原点 o 0 o_0 o0,其余原点选取为轴 z z z 公法线与轴 z z z 的交点
(2)基坐标系 o 0 x 0 y 0 z 0 o_0x_0y_0z_0 o0x0y0z0 固定不动, o 0 o_0 o0 可选择轴 z 0 z_0 z0 上任意一点
(3)会存在三种不同的情况:
- 轴 z i − 1 z_{i-1} zi−1 与 轴 z i z_i zi 异面:取两轴线公垂线与 z i z_i zi 的交点为 o i o_i oi
- 轴 z i − 1 z_{i-1} zi−1 与 轴 z i z_i zi 平行:公垂线无数,可自由选择 o i o_i oi;一般选择经过 o i − 1 o_{i-1} oi−1 的公垂线与 z i z_i zi 的交点或者轴 z i z_i zi 与轴 z i + 1 z_{i+1} zi+1 的公垂线与 z i z_i zi 的交点为 o i o_i oi
- 轴 z i − 1 z_{i-1} zi−1 与 轴 z i z_i zi 相交:选择交点为 o i o_i oi
3. 确定 x 轴
(1)基本原则:除了基坐标系的 x 0 x_0 x0 轴,其余选取轴线之间的公垂线为 x x x 轴
(2)基坐标系的 x 0 x_0 x0 轴可任意选取
(3)依据确定原点的思路找轴线 z i − 1 z_{i-1} zi−1 与 轴线 z i z_i zi 之间的公垂线,选择公垂线为 x i x_i xi 轴,方向为关节 i i i 指向关节 i + 1 i+1 i+1 的方向
(4)如果轴 z i − 1 z_{i-1} zi−1 与 轴 z i z_i zi 相交无公垂线,则选择 x i x_i xi 为轴 z i − 1 z_{i-1} zi−1 与 轴 z i z_i zi 构成的平面的垂线方向,正方向随意选择
(5)通常平行的 x x x 轴尽量方向相同(不相同也没事)
4. 确定 y 轴
右手定则确定
5. 补充坐标系
补充末端工具坐标系,与坐标系 o 5 x 5 y 5 z 5 o_5x_5y_5z_5 o5x5y5z5 姿态相同,只有一个偏移
6. 确定参数
SDH 参数顺序: θ \theta θ → d d d → α \alpha α → a a a(这个顺序应该是计算这些参数的顺序,需要基于计算上个参数的变换结果,具体可参考下面的知乎链接,个人计算时似乎没感觉有这个要求)
参数定义:
- 关节角 θ i \theta_i θi:绕 z i − 1 z_{i-1} zi−1 轴(垂直于 z i − 1 z_{i-1} zi−1 的平面内),轴 x i − 1 x_{i-1} xi−1 转至轴 x i x_i xi 的角度,符号根据右手定则确定
- 偏置 d i d_i di:沿 z i − 1 z_{i-1} zi−1 轴,原点 o i − 1 o_{i-1} oi−1 至 z i − 1 z_{i-1} zi−1 与 z i z_i zi 的公垂线( x i x_i xi 轴)的距离,方向根据沿 z i − 1 z_{i-1} zi−1 轴的具体方向确定
- 连杆扭角 α i \alpha_i αi:绕 x i x_i xi 轴,轴 z i − 1 z_{i-1} zi−1 转至轴 z i z_i zi 的角度,方向通过右手定则确定
- 连杆长度 a i a_i ai:沿 x i x_i xi 轴(关节轴线公垂线,一定是正方向),轴 z i − 1 z_{i-1} zi−1 与轴 z i z_i zi 的距离,总为正值
- o f f s e t offset offset 主要控制机械臂的初始状态
【协作臂尺寸图】
【初始状态与 SDH 建模结果】
协作臂通常以竖直状态为初始状态,但个人使用过程中一般以如下状态为初始状态。为了确保当前状态下关节变量 θ \theta θ 为 0,因此需要修改 o f f s e t offset offset(将当前状态下计算得到的 θ \theta θ 值赋给 o f f s e t offset offset)。通过上述方式建立的具体 SDH 如下图和下表所示
i i i | θ i \theta_i θi | d i d_i di | α i \alpha_i αi | a i a_i ai | o f f s e t offset offset |
---|---|---|---|---|---|
1 | 0 | 140 | π 2 \frac{\pi}{2} 2π | 0 | 0 |
2 | 0 | 0 | 0 | 375 | π 2 \frac{\pi}{2} 2π |
3 | 0 | 0 | 0 | 345 | − π 2 -\frac{\pi}{2} −2π |
4 | 0 | 122 | − π 2 -\frac{\pi}{2} −2π | 0 | − π 2 -\frac{\pi}{2} −2π |
5 | 0 | 122 | − π 2 -\frac{\pi}{2} −2π | 0 | − π 2 -\frac{\pi}{2} −2π |
6 | 0 | 93 | 0 | 0 | 0 |
MDH
MDH 与 SDH 的区别在于连杆上坐标系建立的位置不同:SDH 方法将连杆的坐标系固定在连杆的后端,而 MDH 方法将连杆的坐标系固定在连杆的前端
1. 确定 z 轴
(1)基本原则:设置 z i z_i zi 为第 i 个关节的驱动轴
(2)如果第 i i i 个关节是转动关节(平动关节),则 z i z_i zi 是第 i i i 个关节的转动轴(移动轴)
(3) z z z 轴方向任意,但通常平行的 z z z 轴方向尽量相同(如下图为电机旋转反方向)
2. 确定原点
(1)基本原则:除了末端坐标系原点 o 6 o_6 o6,选取轴 z z z 公法线与轴 z z z 的交点
(2)会存在三种不同的情况:
- 轴 z i z_i zi 与 轴 z i + 1 z_{i+1} zi+1 异面:取两轴线公垂线与 z i z_i zi 的交点为 o i o_i oi
- 轴 z i z_i zi 与 轴 z i + 1 z_{i+1} zi+1 平行:公垂线无数,可自由选择 o i o_i oi;一般选择经过 o i − 1 o_{i-1} oi−1 的公垂线与 z i z_i zi 的交点或者经过 o i + 1 o_{i+1} oi+1 的公垂线与 z i z_i zi 的交点为原点 o i o_i oi
- 轴 z i z_i zi 与 轴 z i + 1 z_{i+1} zi+1 相交:选择交点为 o i o_i oi
(3) o 6 o_6 o6 可选择轴 z 6 z_6 z6 上任意一点,一般会选择末端工具的末端
3. 确定 x 轴
(1)基本原则:除了末端坐标系的 x 6 x_6 x6 轴,选取轴线之间的公垂线为 x x x 轴
(2)依据确定原点的思路找轴线 z i z_i zi 与 轴线 z i + 1 z_{i+1} zi+1 之间的公垂线,选择公垂线为 x i x_i xi 轴,方向为关节 i i i 指向关节 i + 1 i+1 i+1 的方向
(3)如果轴 z i z_i zi 与 轴 z i + 1 z_{i+1} zi+1 相交无公垂线,则选择 x i x_i xi 为轴 z i z_i zi 与 轴 z i + 1 z_{i+1} zi+1 构成的平面的垂线方向,正方向随意选择
(4)末端坐标系的 x 6 x_6 x6 轴可任意选取,一般方向可与 x 5 x_5 x5 轴相同
(5)通常平行的 x x x 轴尽量方向相同(不相同也没事)
4. 确定 y 轴
右手定则确定
5. 补充坐标系
补充基坐标系,一般就是基座底部
6. 确定参数
MDH 参数顺序: α \alpha α → a a a → θ \theta θ → d d d
参数定义:
- 连杆扭角 α i \alpha_i αi:绕 x i x_i xi 轴,轴 z i z_i zi 转至轴 z i + 1 z_{i+1} zi+1 的角度,方向通过右手定则确定
- 连杆长度 a i a_i ai:沿 x i x_i xi 轴(关节轴线公垂线,一定是正方向),轴 z i z_i zi 与轴 z i + 1 z_{i+1} zi+1 的距离,总为正值
- 关节角 θ i \theta_i θi:绕 z i z_i zi 轴(垂直于 z i z_i zi 的平面内),轴 x i − 1 x_{i-1} xi−1 转至轴 x i x_i xi 的角度,符号根据右手定则确定
- 偏置 d i d_i di:沿 z i z_i zi 轴,轴 x i − 1 x_{i-1} xi−1 至轴 x i x_i xi 的距离,方向根据沿 z i z_i zi 轴的具体方向确定
【初始状态与 MDH 建模结果(浅蓝色的那个坐标是坐标系1)】
i i i | θ i \theta_i θi | d i d_i di | α i − 1 \alpha_{i-1} αi−1 | a i − 1 a_{i-1} ai−1 | o f f s e t offset offset |
---|---|---|---|---|---|
1 | 0 | 140 | 0 | 0 | 0 |
2 | 0 | 0 | π 2 \frac{\pi}{2} 2π | 0 | π 2 \frac{\pi}{2} 2π |
3 | 0 | 0 | 0 | 375 | − π 2 -\frac{\pi}{2} −2π |
4 | 0 | 122 | 0 | 345 | − π 2 -\frac{\pi}{2} −2π |
5 | 0 | 122 | − π 2 -\frac{\pi}{2} −2π | 0 | − π 2 -\frac{\pi}{2} −2π |
6 | 0 | 93 | − π 2 -\frac{\pi}{2} −2π | 0 | 0 |
参考链接
https://zhuanlan.zhihu.com/p/146588712
《机器人建模与控制》
《机器人学导论》
构建 URDF:https://weibo.com/ttarticle/p/show?id=2309404820496083452171