1. 坐标系基础:刚体与位姿描述、旋转矩阵、齐次变换矩阵
各位同学,咱们开始第一讲。
做机器人控制,说白了就是跟坐标系打交道。你想想看,机械臂末端在哪儿?相机看到的物体在哪儿?这些都得靠坐标系串起来。我刚开始做项目时,总觉得坐标系变换是数学课的事,结果第一次联调就栽了跟头——机械臂抓歪了,查了半天才发现是旋转矩阵写反了。从那以后,我再也不敢轻视这个基础了。
1.1 刚体与位姿描述
什么是刚体?简单说,就是受力不变形的物体。我们的机械臂连杆、末端执行器,都可以近似看作刚体。
描述一个刚体在空间中的状态,需要两个信息:位置和姿态。合起来叫位姿。
- 位置:用三维坐标 (x, y, z) 表示,相对于某个参考坐标系。
- 姿态:描述刚体怎么“转”的,常用旋转矩阵、欧拉角、四元数等。
核心概念:位姿 = 位置 + 姿态。缺一不可。
我习惯用齐次变换矩阵把两者打包在一起,后面会细讲。
1.2 旋转矩阵
旋转矩阵是描述姿态最直接的工具。它是一个 3×3 的正交矩阵,行列式为 +1。
为什么用矩阵?因为方便计算。两个旋转叠加,就是矩阵乘法。我当年在调试视觉引导抓取时,相机坐标系到机械臂基坐标系的旋转,就是靠矩阵乘法一步步算出来的。
绕坐标轴的旋转
绕 X、Y、Z 轴旋转 θ 角,对应的旋转矩阵如下:
| 旋转轴 | 旋转矩阵 R |
|---|---|
| 绕 X 轴 |
|
| 绕 Y 轴 |
|
| 绕 Z 轴 |
|
个人经验:写代码时,我习惯用右手定则验证旋转方向。大拇指指向旋转轴正方向,四指弯曲方向就是正旋转。曾经有个同事把正负号搞反了,结果机械臂在调试时直接撞到安全围栏……嗯,还好速度不快。
旋转矩阵的性质
- 正交性:RTR = I,R-1 = RT
- 行列式为 +1:保证是纯旋转,没有镜像
- 不满足交换律:R1R2 ≠ R2R1,旋转顺序很重要
避坑指南:我曾经在写运动学正解时,把两个旋转矩阵的顺序搞反了。结果算出来的末端位置差了十万八千里。记住:矩阵乘法不满足交换律,先转哪个轴,后转哪个轴,必须跟实际物理顺序一致。
1.3 齐次变换矩阵
旋转矩阵只能描述姿态,不能描述位置。齐次变换矩阵把旋转和平移统一到一个 4×4 矩阵里:
T = [R t]
[0 1]
其中:
R:3×3 旋转矩阵
t:3×1 平移向量
0:1×3 零向量
1:标量 1
为什么用齐次坐标?因为可以把旋转和平移合并成一次矩阵乘法。这在串联机械臂的运动学计算中特别有用——每个关节的变换矩阵连乘,就能得到末端位姿。
齐次变换矩阵的逆
实际控制中,经常需要求逆变换。比如已知末端在基坐标系下的位姿,想求基坐标系在末端坐标系下的位姿。
T^(-1) = [R^T -R^T * t]
[0 1 ]
这个公式我建议你记牢。我在做手眼标定时,几乎每天都在用这个逆变换。
1.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以把它当作坐标系变换的“地图”。
1.5 实战要点总结
| 知识点 | 关键点 | 常见坑 |
|---|---|---|
| 位姿描述 | 位置 + 姿态,缺一不可 | 只记位置忘了姿态 |
| 旋转矩阵 | 正交、行列式为 1、不交换 | 旋转顺序搞反、正负号写错 |
| 齐次变换矩阵 | 4×4,统一旋转和平移 | 逆变换公式记错 |
| 矩阵乘法 | 左乘右乘意义不同 | 坐标系变换方向搞混 |
我的习惯:每次写变换代码前,先在纸上画坐标系。画清楚再写代码,能省掉一半的调试时间。真的,别偷这个懒。
好了,这一章就到这里。坐标系变换是机器人控制的“语言”,不熟练的话后面寸步难行。建议你把旋转矩阵和齐次变换矩阵的公式手推一遍,写代码时心里才有底。