机械臂笔记(一)D-H 参数表建立
一般我们采用矩阵来表示机械臂末端的位置和姿态信息,其中位置信息可以用一个三维向量表示:
初始姿态(朝向)信息可以用一个单位正交矩阵表示:
其中
可以通过下图myCobot 280 机械臂为例,对比理解
齐次变换
通过齐次变换可以通过一次齐次矩阵乘法完成坐标系间的旋转、平移变换。变换矩阵也是齐次矩阵,形式上和
平移变换
如果需要将向量
旋转变换
将一个三维向量左乘一个旋转矩阵,即可实现旋转操作,有以下三种基本的旋转操作(分别绕
空间中的旋转可以通过上边两两组合得到,机械臂中一般组合
齐次变换(左乘)
整合
齐次变换(右乘)
假设初始位姿矩阵和变换矩阵如下所示:
分别计算
单位正交矩阵左乘的值等于右乘的值,所以齐次变换后的姿态矩阵看不出来区别。但是位置向量的区别比较明显。
- 齐次变换矩阵左乘:表示变换是相对世界坐标系原点的变换,旋转基于世界坐标系原点,先旋转再平移,平移都是沿世界坐标轴方向;
- 把物体在世界坐标系下旋转
, ;
- 把物体在世界坐标系下旋转
- 齐次变换矩阵右乘:表示变换是相对前一个坐标系,旋转轴基于一个坐标系的原点,先旋转再平移,平移是沿前一个坐标系的坐标轴方向,就像是多个关节依次“粘在”前一个关节上
- 夹爪坐标系下向前走
,
- 夹爪坐标系下向前走
下图是一个例子的展示(
上文提到,机械臂末端的位姿信息也是用齐次矩阵表示的。如果机械臂中有多个关节,假如直到每个关节相对于前一个关节的齐次变换矩阵,依次相乘就能计算出末端相对于起始位置的坐标信息。
D-H 参数表的建立
关节坐标系间的变换无非是平移和旋转,通常选择
建表步骤
确定每个关节的
轴,尽量不要改变 轴方向: - 转动关节
轴沿转动轴方向; - 平动关节
轴沿伸缩方向;
- 转动关节
确定每个关节的
轴,尽量不要改变 轴方向: - 选择当前关节与上一个关节
轴的公垂线方向; - 如果当前关节与上一个关节平行,则选择两个关节连线的方向;
- 选择当前关节与上一个关节
确定(关节)坐标系原点,一般选在关节轴(的几何中心)上:
- 选择当前关节与上一个关节
轴相交,则选择交点; - 选择当前关节与上一个关节
轴平行,常选择上一轴的投影或连杆长度起点,以保证 DH 参数唯一性; - 当前关节与上一个关节
轴异位(既不平行也不相交)。选择公垂线与当前轴的交点作为坐标系原点。
- 选择当前关节与上一个关节
标准D-H 参数表中旋转平移操作的顺序
- 先按
轴(起始坐标系)旋转 ,使得 轴指向一致; - 再沿
轴(起始坐标系)平移 ,使得 轴重合; - 再沿新的
轴(目标坐标系)平移 ,使得两个坐标系原点重合; - 最后新的
轴(目标坐标系)旋转 ,使得两个坐标系完全一致;
改进D-H 参数表中旋转平移操作的顺序
改进D-H 与标准D-H 算法相比,差异点主要在旋转平移的操作顺序,并且
- 先按
轴(起始坐标系)旋转 ,使得 轴指向一致; - 再沿
轴(起始坐标系)平移 ,使得 轴重合; - 再按新的
轴(目标坐标系)旋转 ,使得两个坐标系原点重合; - 最后沿新的
轴(目标坐标系)平移 ,使得两个坐标系完全一致。
示例:PUMA 560 改进D-H 参数表

需要注意的是第三节机械臂的转动轴不是平行的,存在位移
1. 确定z 轴及方向

2. 根据z 轴方向确定x 轴方向
x 轴的指向尽量保持不变,z 轴也是,这样得到的参数表会比较简洁。
3. 填写参数表
| 当前坐标系 | 下一个关节 | ||||
|---|---|---|---|---|---|
正向过程的矩阵计算过程见参考资料[5-6]。需要注意的是,这样建立的参数表的世界坐标系原点位于第1,2 轴的交点。
