2. 运动学基础回顾:DH参数法、齐次变换矩阵、正运动学建模

好,咱们正式开始。在进入参数辨识这个深水区之前,我强烈建议先把运动学基础夯实。你想想看,如果连机器人怎么动起来的都说不清楚,那辨识出来的参数你敢用吗?

我个人习惯把这一章叫做“地基工程”。地基不稳,楼盖得再高也是危房。咱们今天就把DH参数法、齐次变换矩阵和正运动学建模这三块基石,一块一块码清楚。

2.1 DH参数法:给关节“上户口”

DH参数法,说白了就是一套给机器人每个关节和连杆“上户口”的规则。它用四个参数,就能唯一确定相邻两个坐标系之间的相对位置和姿态。

这四个参数分别是:

  • θ (关节角):绕Z轴的旋转角度。对于旋转关节,这是变量;对于移动关节,这是常量。
  • d (连杆偏距):沿Z轴的平移距离。对于移动关节,这是变量。
  • a (连杆长度):沿X轴的平移距离。通常是个固定值,由机械设计决定。
  • α (连杆扭角):绕X轴的旋转角度。也是固定值,反映了两个关节轴线的空间扭曲程度。

我在项目中遇到过一个问题:一个六轴机器人,末端精度总是差那么0.5mm。查来查去,最后发现是DH参数表里一个连杆的α角写反了符号。嗯,这种错误最坑人,因为代码逻辑完全正确,但物理世界不认账。

核心要点:DH参数法的精髓在于“从基座到末端,逐级建立坐标系”。每一级变换只依赖四个参数,清晰且模块化。

这里有一个标准的DH参数表格式,你可以直接套用:

连杆 i θ_i (度) d_i (mm) a_i (mm) α_i (度)
1 θ1 d1 a1 α1
2 θ2 d2 a2 α2
3 θ3 d3 a3 α3

我的小技巧:在建立DH参数表时,我习惯先画一个简化的连杆图,把每个关节的Z轴方向标出来。这样能有效避免符号错误。你试试看,真的管用。

2.2 齐次变换矩阵:运动的“数学翻译官”

有了DH参数,下一步就是把它翻译成数学语言。齐次变换矩阵就是这个翻译官。它是一个4x4的矩阵,把旋转和平移打包在一起处理。

一个标准的齐次变换矩阵长这样:

| R(3x3)   T(3x1) |
| 0 0 0      1    |

其中,R是旋转矩阵,T是平移向量。为什么用4x4?说白了就是为了把旋转和平移统一成矩阵乘法,方便连续变换。

根据DH参数,相邻连杆的变换矩阵可以写成:

T_i = Rot(z, θ_i) * Trans(z, d_i) * Trans(x, a_i) * Rot(x, α_i)

展开后就是:

| cosθ_i  -sinθ_i*cosα_i   sinθ_i*sinα_i   a_i*cosθ_i |
| sinθ_i   cosθ_i*cosα_i  -cosθ_i*sinα_i   a_i*sinθ_i |
|   0         sinα_i           cosα_i          d_i      |
|   0           0               0              1        |

我曾经犯过一个低级错误:在代码里把旋转和平移的顺序搞反了。结果仿真时机器人末端直接飞到了外太空。嗯,从那以后我每次写变换矩阵都会先在心里默念一遍“先转后移,顺序不能乱”。

避坑指南:齐次变换矩阵的乘法不满足交换律。也就是说,T1 * T2 和 T2 * T1 的结果完全不同。我曾经因为搞混了变换顺序,导致一个焊接机器人的轨迹完全偏离,焊出了一条歪歪扭扭的焊缝。切记,顺序就是一切。

2.3 正运动学建模:从关节空间到笛卡尔空间

正运动学,就是已知每个关节的角度(或位移),求末端执行器的位姿。说白了,就是“给关节角度,算出手在哪儿”。

建模过程很简单:把从基座到末端的所有齐次变换矩阵乘起来。

T_0n = T_01 * T_12 * T_23 * ... * T_(n-1)n

其中,T_0n 就是末端相对于基座的位姿矩阵。它的左上角3x3是姿态,右上角3x1是位置。

举个例子,一个两连杆平面机械臂的正运动学:

// 假设连杆长度 a1=1.0, a2=0.8
// 关节角度 θ1=30°, θ2=45°

// 计算 T_01
T_01 = [cos30  -sin30  0  a1*cos30;
        sin30   cos30  0  a1*sin30;
          0       0    1     0    ;
          0       0    0     1    ];

// 计算 T_12
T_12 = [cos45  -sin45  0  a2*cos45;
        sin45   cos45  0  a2*sin45;
          0       0    1     0    ;
          0       0    0     1    ];

// 末端位姿
T_02 = T_01 * T_12;

我在做第一个机器人项目时,就是用这个公式手动算了一遍末端位置,然后和仿真结果对比。当看到计算结果和仿真完全吻合时,那种成就感,嗯,真的很爽。

关键认知:正运动学是唯一确定的。给定一组关节角度,末端位姿是唯一解。这也是为什么参数辨识可以基于正运动学模型来反推参数误差。

为了让你更直观地理解整个知识体系,我画了一张图:

运动学基础:知识体系结构图 DH参数法 齐次变换矩阵 正运动学建模 θ, d, a, α 坐标系建立规则 旋转矩阵 R(3x3) 平移向量 T(3x1) T_0n = T_01 * T_12 * ... 关节空间 → 笛卡尔空间 核心逻辑 DH参数 → 齐次变换矩阵 → 正运动学模型 这是参数辨识的数学基础,必须烂熟于心

这张图把三者的关系理得很清楚。DH参数是输入,齐次变换矩阵是工具,正运动学模型是输出。你想想看,参数辨识的本质,就是通过测量末端位姿的误差,反过来修正DH参数表中的值。

我的建议:在学习参数辨识之前,先花一周时间把正运动学模型写到烂熟。最好能用Python或MATLAB写一个通用的正运动学求解器,支持任意自由度的串联机器人。这个工具在后面做辨识时会反复用到。

好了,运动学基础就回顾到这里。记住,DH参数是骨架,齐次变换矩阵是血肉,正运动学建模就是让这个机器人活起来的过程。下一章,我们会正式进入参数辨识的核心——误差模型与最小二乘法。

可可精品资料库