Skip to content

机械臂笔记(一)D-H 参数表建立

一般我们采用矩阵来表示机械臂末端的位置和姿态信息,其中位置信息可以用一个三维向量表示:

(1)P=[xyz]T=[xyz]

初始姿态(朝向)信息可以用一个单位正交矩阵表示:

(2)T0=[100010001]

其中(2)式中的每一列表示机械臂末端的x,y,z轴朝向。整合(1)(2) 可以得到一个齐次矩阵

(3)T=[T0P01]=[100x010y001z0001]

可以通过下图myCobot 280 机械臂为例,对比理解(3)式。
myCobot-280.png

齐次变换

通过齐次变换可以通过一次齐次矩阵乘法完成坐标系间的旋转、平移变换。变换矩阵也是齐次矩阵,形式上和(3)式一样,只是代表的物理意义不太一样。

平移变换

如果需要将向量P 分别沿世界坐标系的x,y,z 轴平移x0,y0,z0,则可以左乘下面矩阵:

(4)T=[100x0010y0001z00001]

旋转变换

将一个三维向量左乘一个旋转矩阵,即可实现旋转操作,有以下三种基本的旋转操作(分别绕x,y,z 轴旋转):

(5)Rx(θ)=[10000cos(θ)sin(θ)00sin(θ)cos(θ)00001]Ry(θ)=[cos(θ)0sin(θ)00100sin(θ)0cos(θ)00001]Rz(θ)=[cos(θ)sin(θ)00sin(θ)cos(θ)0000100001]

空间中的旋转可以通过上边两两组合得到,机械臂中一般组合Rz,Rx

齐次变换(左乘)

整合(4)(5)两式,则可得到齐次变换矩阵(以绕x 轴旋转后再平移为例):

(6)T=[100x00cos(θ)sin(θ)00sin(θ)cos(θ)00001]=[RP01]

齐次变换(右乘)

假设初始位姿矩阵和变换矩阵如下所示:

(7)T0=[c0s0x0s0c0y0001]T=[c1s1x1s1c1y1001]

分别计算T0T,TT0

(8)T0T=[c0c1s0s1(c0s1+s0c1)x0+c0x1s0y1s0c1+c0s1c0c1s0s1y0+s0x1+c0y1001]TT0=[c1c0s1s0(c1s0+s1c0)c1x0s1y0+x1s1c0+c1s0c1c0s1s0s1x0+c1y0+y1001]

单位正交矩阵左乘的值等于右乘的值,所以齐次变换后的姿态矩阵看不出来区别。但是位置向量的区别比较明显。

  • 齐次变换矩阵左乘:表示变换是相对世界坐标系原点的变换,旋转基于世界坐标系原点,先旋转再平移,平移都是沿世界坐标轴方向;
    • 把物体在世界坐标系下旋转90°T=Rz(90°)T
  • 齐次变换矩阵右乘:表示变换是相对前一个坐标系,旋转轴基于一个坐标系的原点,先旋转再平移,平移是沿前一个坐标系的坐标轴方向,就像是多个关节依次“粘在”前一个关节上
    • 夹爪坐标系下向前走1cmT=TTransx(1)

下图是一个例子的展示(x0=x1=1,y0=y0=0,θ0=π4,θ1=0)说明:
r_l_multiply.svg

上文提到,机械臂末端的位姿信息也是用齐次矩阵表示的。如果机械臂中有多个关节,假如直到每个关节相对于前一个关节的齐次变换矩阵,依次相乘就能计算出末端相对于起始位置的坐标信息。

D-H 参数表的建立

关节坐标系间的变换无非是平移和旋转,通常选择z,x 轴为基准轴,然也可以用z,y 轴,但不常见。

建表步骤

  1. 确定每个关节的z 轴,尽量不要改变z 轴方向:

    • 转动关节z 轴沿转动轴方向;
    • 平动关节z 轴沿伸缩方向;
  2. 确定每个关节的x 轴,尽量不要改变x 轴方向:

    • 选择当前关节与上一个关节z 轴的公垂线方向;
    • 如果当前关节与上一个关节平行,则选择两个关节连线的方向;
  3. 确定(关节)坐标系原点,一般选在关节轴(的几何中心)上:

    • 选择当前关节与上一个关节z 轴相交,则选择交点;
    • 选择当前关节与上一个关节z 轴平行,常选择上一轴的投影或连杆长度起点,以保证 DH 参数唯一性;
    • 当前关节与上一个关节 z 轴异位(既不平行也不相交)。选择公垂线与当前轴的交点作为坐标系原点。

标准D-H 参数表中旋转平移操作的顺序

(9)ii1T=Rotzi1(θi)Transzi1(di)Transxi(ai)Rotxi(αi)
  1. 先按zi1 轴(起始坐标系)旋转θi,使得xi,xi1轴指向一致;
  2. 再沿zi1 轴(起始坐标系)平移di,使得xi,xi1轴重合;
  3. 再沿新的xi1 轴(目标坐标系)平移ai,使得两个坐标系原点重合;
  4. 最后新的xi1 轴(目标坐标系)旋转αi,使得两个坐标系完全一致;

改进D-H 参数表中旋转平移操作的顺序

(10)ii1T=Rotxi1(θi)Transxi1(di)Transzi(ai)Rotzi(αi)

改进D-H 与标准D-H 算法相比,差异点主要在旋转平移的操作顺序,并且x轴的选择是参考当前关节与下一个关节:

  1. 先按xi1 轴(起始坐标系)旋转αi,使得zi,zi1轴指向一致;
  2. 再沿xi1 轴(起始坐标系)平移ai,使得zi,zi1轴重合;
  3. 再按新的zi1 轴(目标坐标系)旋转θi,使得两个坐标系原点重合;
  4. 最后沿新的zi1 轴(目标坐标系)平移di,使得两个坐标系完全一致。

示例:PUMA 560 改进D-H 参数表

puma-560.png
需要注意的是第三节机械臂的转动轴不是平行的,存在位移a3puma-560-arm_3.png

1. 确定z 轴及方向

puma-560-axis_z.png

2. 根据z 轴方向确定x 轴方向

x 轴的指向尽量保持不变,z 轴也是,这样得到的参数表会比较简洁。

3. 填写参数表

当前坐标系i1下一个关节iRx/αidx/aiRz/θidz/di
0100θ10
12π20θ20
230a2θ3d3
34π2a3θ4d4
45π20θ50
56π20θ60

正向过程的矩阵计算过程见参考资料[5-6]。需要注意的是,这样建立的参数表的世界坐标系原点位于第1,2 轴的交点

参考资料

  1. 机械臂 运动学 D-H经典方法和改进D-H方法参数表建立
  2. 从零手搓人形机械臂之运动学板块(一)
  3. 详解PUMA 560机械臂的改进D-H参数和标准D-H参数表示
  4. 在线机械臂(改进)D-H 参数表可视化
  5. Forward Kinematics of PUMA 560
  6. 详解PUMA 560机械臂的改进D-H参数和标准D-H参数表示