4、运动学基础(二):标准D-H参数法、建立机械臂连杆坐标系、正运动学求解

好,咱们接着聊。上一章我们把刚体变换和齐次矩阵讲透了,那都是基本功。这一章要动真格的了——怎么用一套标准的方法,把机械臂的“骨架”描述清楚,然后算出它的末端到底在哪儿。

说白了,D-H参数法就是给机械臂的每个关节和连杆“上户口”。你给它四个参数,它就能告诉你,这根杆子相对于上一根杆子是怎么摆的。我当年第一次接触这个,觉得不就是四个数嘛,有啥了不起?后来真上手做项目才发现,这四个数要是定错了,后面所有计算全白搭。

4.1 标准D-H参数法:四个参数定乾坤

标准D-H参数法,核心就是四个参数。记住,是四个,不是五个,也不是三个。它们分别是:

  • 连杆长度 ai-1:从 Zi-1 轴到 Zi 轴,沿 Xi-1 轴方向测量的距离。说白了,就是两根关节轴之间的“最短距离”。
  • 连杆扭角 αi-1:从 Zi-1 轴到 Zi 轴,绕 Xi-1 轴旋转的角度。这个角度决定了两个关节轴是平行、垂直还是歪着。
  • 连杆偏距 di:从 Xi-1 轴到 Xi 轴,沿 Zi 轴方向测量的距离。对于移动关节,这个值就是变量。
  • 关节角 θi:从 Xi-1 轴到 Xi 轴,绕 Zi 轴旋转的角度。对于旋转关节,这个值就是变量。

你可能会问,为什么是这四个?其实这是经过无数前辈验证的,最少参数就能完整描述两个相邻连杆之间的相对位置和姿态。我在做六轴机器人标定时,曾经试过用六个参数,结果冗余得一塌糊涂,最后还是老老实实回到D-H。

核心口诀:先沿 X 轴平移 a,再绕 X 轴转 α,然后沿 Z 轴平移 d,最后绕 Z 轴转 θ。顺序不能乱,乱了坐标系就全错了。

4.2 建立连杆坐标系:从图纸到数学

有了参数,下一步就是给每个连杆建坐标系。这一步特别容易出错,我建议你按下面的步骤来,别跳步。

  1. 找关节轴:先画出所有关节的旋转轴(Z轴)。记住,Zi 轴沿着关节 i+1 的运动方向。
  2. 定原点:Zi 轴和 Zi-1 轴的公垂线与 Zi 轴的交点,就是坐标系 {i} 的原点。
  3. 定 X 轴:Xi 轴沿着公垂线方向,从 Zi-1 指向 Zi。
  4. 定 Y 轴:右手定则,Yi = Zi × Xi。

嗯,这里要注意一个特殊情况:如果两个 Z 轴平行,那公垂线就不唯一了。我个人的习惯是,取经过前一个坐标系原点的公垂线,这样计算最方便。

下面这张图,是我用 SVG 画的,展示了标准D-H参数法中相邻连杆坐标系的定义关系。你看一眼就能明白这四个参数是怎么“量”出来的。

标准D-H参数法:相邻连杆坐标系定义 Z_{i-1} X_{i-1} Y_{i-1} O_{i-1} Z_i X_i Y_i O_i a_{i-1} d_i α_{i-1} θ_i 图例: Z轴(关节轴) X轴(公垂线方向) a_{i-1}:连杆长度 d_i:连杆偏距

4.3 正运动学求解:从关节空间到操作空间

坐标系建好了,D-H参数也填好了,接下来就是机械臂的“终极一问”:给定六个关节角度,末端到底在哪儿?

正运动学求解,说白了就是连乘。把每个相邻连杆的变换矩阵乘起来,就得到了从基座到末端的总变换矩阵。

相邻连杆的变换矩阵公式长这样:

i-1T_i = Rot_x(α_{i-1}) · Trans_x(a_{i-1}) · Rot_z(θ_i) · Trans_z(d_i)

展开成矩阵形式就是:

i-1T_i = 
| cosθ_i   -sinθ_i   0   a_{i-1} |
| sinθ_i·cosα_{i-1}  cosθ_i·cosα_{i-1}  -sinα_{i-1}  -d_i·sinα_{i-1} |
| sinθ_i·sinα_{i-1}  cosθ_i·sinα_{i-1}   cosα_{i-1}   d_i·cosα_{i-1} |
| 0         0         0   1         |

看着有点吓人,对吧?其实你仔细看,左上角3x3是旋转矩阵,右上角3x1是平移向量。我当年学的时候,硬是把这个矩阵抄了十遍,抄到闭着眼睛都能写出来。

我的小技巧:别死记硬背。你只要记住变换顺序是“先转α,再移a,再转θ,再移d”,然后按这个顺序去乘对应的基本变换矩阵,结果自然就出来了。我在项目里从来都是现场推导,从不背公式。

4.4 实战:六轴机械臂的D-H参数表

光说不练假把式。咱们拿一个典型的六轴工业机器人来举例。假设它的结构是:RRRRRR(六个旋转关节)。

建好坐标系后,填出来的D-H参数表大概长这样:

连杆 i ai-1 αi-1 di θi
1 0 0° d1 θ1
2 a1 -90° 0 θ2
3 a2 0° 0 θ3
4 a3 -90° d4 θ4
5 0 90° 0 θ5
6 0 -90° d6 θ6

有了这张表,正运动学就是机械的矩阵乘法。把每个 i-1T_i 算出来,然后:

0T_6 = 0T_1 · 1T_2 · 2T_3 · 3T_4 · 4T_5 · 5T_6

结果矩阵的左上角3x3就是末端的姿态,右上角3x1就是末端的位置。搞定。

避坑指南:我曾经在做一个协作机器人项目时,因为把 α 的符号搞反了,导致仿真里机器人末端飞到了天花板外面。查了两天才发现是正负号的问题。所以,填参数表时,α 的方向一定要和右手定则一致,别想当然。

4.5 验证你的正运动学

算完了怎么知道对不对?我教你三个土办法:

  • 零位验证:把所有关节角设成0,看看末端位置是不是在机械臂的“伸直”状态。如果不在,那肯定错了。
  • 单关节运动:只动一个关节,看末端轨迹是不是一个圆。如果是,说明这个关节的变换矩阵对了。
  • 与实物对照:拿尺子量一下机械臂在某个姿态下的实际位置,和计算结果对比。误差应该在毫米级。

嗯,其实说白了,正运动学就是一套“按图索骥”的功夫。只要坐标系建对了,参数填准了,剩下的就是耐心地做矩阵乘法。别怕麻烦,我刚开始做的时候,每个矩阵都手算验证,算到第三遍才敢用。

这一章的内容就到这儿。记住,D-H参数法是机械臂运动学的基石,后面所有的轨迹规划、动力学、控制,都建立在这四个参数之上。把基础打牢,后面才能走得远。


可可精品资料库