第1章:坐标系与变换——机器人轨迹规划的数学基石
各位工程师朋友,大家好。我是老张,在机器人行业摸爬滚打了十几年。今天咱们开始聊《Simulink运动轨迹规划实战》的第一章——坐标系与变换。
说实话,我刚入行那会儿,觉得坐标系这东西太简单了,不就是XYZ嘛。直到有一次,我调试一个六轴机械臂,工具末端死活对不准目标点,折腾了两天,最后发现是工具坐标系标定错了0.5毫米。嗯,从那以后,我再也不敢小看坐标系了。
核心观点:机器人轨迹规划的本质,就是解决“点在不同坐标系下的表达与转换”问题。你搞懂了坐标系变换,轨迹规划就通了50%。
1.1 世界坐标系与机器人基坐标系
世界坐标系,说白了就是整个工作空间的“绝对参考系”。你可以把它想象成车间里的一个固定点,所有机器人的位置都相对于它来描述。
机器人基坐标系,则是固定在机器人底座上的坐标系。我习惯把它叫做“机器人的家”。
为什么要有两个坐标系?你想想看,车间里可能有多台机器人协同工作。每台机器人都有自己的基坐标系,但最终都要统一到世界坐标系下,才能知道彼此的相对位置。
| 坐标系 | 固定位置 | 典型用途 |
|---|---|---|
| 世界坐标系 | 工作空间固定点 | 多机器人协同、全局路径规划 |
| 基坐标系 | 机器人底座 | 机器人自身运动学计算 |
我的经验:在Simulink中建模时,我通常把世界坐标系设为模型的全局参考系,然后通过变换矩阵把基坐标系挂上去。这样后期调整机器人位置时,只需要改一个变换矩阵就行,不用动整个模型。
1.2 工具坐标系
工具坐标系,就是固定在机器人末端执行器上的坐标系。比如焊枪的尖端、夹爪的中心点。
为什么要单独定义工具坐标系?因为机器人控制的是法兰盘(末端接口)的位置,而我们真正关心的是工具末端的位置。这两者之间有一个固定的偏移。
我在项目中遇到过最典型的坑:换了一个不同长度的焊枪,忘了更新工具坐标系参数,结果焊接轨迹全部偏了。嗯,那次返工让我记住了——换工具必标定。
警告:工具坐标系标定误差会直接放大到轨迹末端。一个0.1度的角度误差,在1米长的工具末端就会产生约1.7毫米的位置偏差。对于精密装配来说,这可能是致命的。
1.3 齐次变换矩阵
齐次变换矩阵,是坐标系变换的“瑞士军刀”。它是一个4×4的矩阵,同时包含了旋转和位移信息。
结构很简单:
T = [ R p ]
[ 0 1 ]
其中R是3×3的旋转矩阵,p是3×1的位移向量。最后一行是[0 0 0 1],这是齐次坐标的固定格式。
为什么用4×4矩阵?因为这样可以把旋转和位移统一成一个矩阵乘法,方便连续变换。比如从世界坐标系到工具坐标系的变换:
T_world_to_tool = T_world_to_base * T_base_to_flange * T_flange_to_tool
在Simulink中,我通常用矩阵乘法模块(Matrix Multiply)来实现这个链式变换。注意矩阵乘法的顺序——左乘表示从右向左变换。
关键点:齐次变换矩阵的逆矩阵,就是反向变换。比如已知T_world_to_tool,求T_tool_to_world,直接求逆就行。Simulink里有现成的矩阵求逆模块。
1.4 欧拉角与四元数
欧拉角和四元数,都是描述旋转的方式。但它们的脾气完全不同。
欧拉角:直观,但有个致命问题——万向锁。我记得有一次做姿态规划,用欧拉角插值,结果在某个角度附近机器人突然“翻了个跟头”。查了半天,就是万向锁搞的鬼。
四元数:不直观,但稳定。它用四个数(一个实部+三个虚部)表示旋转,没有奇异性,插值平滑。
| 特性 | 欧拉角 | 四元数 |
|---|---|---|
| 直观性 | 高(XYZ角度) | 低(四个数) |
| 万向锁 | 有 | 无 |
| 插值平滑性 | 差 | 好(球面线性插值) |
| 计算效率 | 高 | 中等 |
我的建议:在Simulink中做轨迹规划,我一般用四元数做内部计算,只在人机交互界面显示欧拉角。这样既保证了计算稳定性,又方便调试时理解。
四元数的基本形式:
q = [w, x, y, z]
其中w是实部,x、y、z是虚部。单位四元数满足w² + x² + y² + z² = 1。
四元数乘法(用于连续旋转):
q_result = q1 * q2
注意乘法顺序——和矩阵乘法一样,不满足交换律。
1.5 知识体系总览
下面这张图,是我自己总结的坐标系与变换知识体系。你可以把它当作本章的“地图”。
这张图的核心逻辑是:三个坐标系 → 齐次变换矩阵 → 两种旋转表示 → 实际应用。你顺着这个脉络走,就不会迷路。
1.6 避坑指南
最后,分享几个我踩过的坑:
- 我曾经在Simulink中直接用欧拉角做连续旋转,结果姿态跳变。后来改用四元数乘法,问题解决。
- 我曾经搞混了矩阵乘法的左右顺序,导致变换结果完全相反。记住:左乘是从右向左变换。
- 我曾经忘了归一化四元数,导致旋转矩阵不正交。Simulink里加个归一化模块就能避免。
一句话总结:坐标系是机器人的“世界观”,变换矩阵是“翻译官”,欧拉角和四元数是“表达方式”。搞懂这三者,轨迹规划就成功了一半。
公众号:蓝海资料掘金营,微信deep3321