第二章 运动控制基础理论:坐标系与变换、刚体运动学与正逆运动学

各位同学,欢迎来到运动控制的核心理论课。说实话,很多做运动控制的工程师,写代码一把好手,但一碰到坐标系变换就头疼。我当年刚入行时也踩过这个坑——有一次调试六轴机械臂,死活对不准目标点,折腾了两天,最后发现是坐标系搞反了。嗯,从那以后,我再也不敢轻视这些基础理论了。

2.1 坐标系与齐次坐标变换

先聊聊坐标系。你想想看,机械臂要抓一个杯子,它得知道杯子在哪儿,自己的手在哪儿。这些位置信息,都得靠坐标系来描述。

常用的坐标系有三种:

  • 世界坐标系:固定在空间中的参考系,所有物体都相对于它定义
  • 工具坐标系:固定在机械臂末端执行器上,随它一起运动
  • 基坐标系:固定在机械臂底座上,是机械臂自身的参考系

那怎么描述一个坐标系相对于另一个坐标系的位置和姿态呢?这就引出了齐次坐标变换矩阵。

齐次变换矩阵 T 是一个 4×4 的矩阵,它把旋转和平移统一在一个框架里:

T = [ R   p ]
    [ 0   1 ]

其中 R 是 3×3 的旋转矩阵,p 是 3×1 的平移向量。

我个人习惯用齐次坐标,因为它能把复杂的变换写成矩阵乘法。比如,从基坐标系到工具坐标系的变换,可以写成:

T_tool_base = T_1 * T_2 * T_3 * ...

每个 T 代表一个关节的变换。这样写出来,代码结构特别清晰。

小技巧:我在项目中经常用欧拉角表示旋转,但要注意万向锁问题。建议用四元数做插值,用旋转矩阵做计算,各取所长。

2.2 刚体运动学基础

刚体运动学,说白了就是研究物体怎么动,但不考虑让它动的力。我们关心的是位置、速度、加速度之间的关系。

一个刚体在空间中有6个自由度:3个平移自由度(x, y, z)和3个旋转自由度(roll, pitch, yaw)。描述刚体运动,我们需要:

  • 位置:用三维向量表示
  • 姿态:用旋转矩阵、欧拉角或四元数表示
  • 速度:线速度和角速度

这里有个关键概念——雅可比矩阵。它把关节空间的速度映射到末端执行器的速度:

v_end = J(q) * q_dot

其中 v_end 是末端速度,q_dot 是关节速度,J(q) 就是雅可比矩阵。

注意:雅可比矩阵是位置相关的。当机械臂处于奇异位形时,雅可比矩阵会降秩,导致某些方向失去控制能力。我曾经在调试一个六轴机器人时,就因为没注意奇异点,导致末端突然失控,差点撞坏夹具。

2.3 正运动学:以2R机械臂为例

正运动学,就是已知关节角度,求末端位置。说白了,你告诉电机转多少度,我告诉你手在哪儿。

拿最简单的2R机械臂来说——它有两个旋转关节,像人的上臂和前臂。

设两个连杆长度分别为 L1 和 L2,关节角度为 θ1 和 θ2。末端位置 (x, y) 可以写成:

x = L1 * cos(θ1) + L2 * cos(θ1 + θ2)
y = L1 * sin(θ1) + L2 * sin(θ1 + θ2)

这个公式看着简单,但背后是齐次变换矩阵的连乘结果。我建议你亲手推导一遍,对理解多轴机器人很有帮助。

代码实现

def forward_kinematics(theta1, theta2, L1, L2):
    x = L1 * cos(theta1) + L2 * cos(theta1 + theta2)
    y = L1 * sin(theta1) + L2 * sin(theta1 + theta2)
    return x, y

2.4 逆运动学:从位置反推关节角

逆运动学就反过来了——已知末端位置,求关节角度。这在实际应用中更常见,因为我们要告诉机器人「去抓那个杯子」,而不是「转多少度」。

对于2R机械臂,逆运动学有解析解。给定目标位置 (x, y),我们可以求出:

cos(θ2) = (x² + y² - L1² - L2²) / (2 * L1 * L2)
θ2 = ± arccos(cos(θ2))  // 注意有两个解

θ1 = atan2(y, x) - atan2(L2 * sin(θ2), L1 + L2 * cos(θ2))

这里有个有意思的地方——θ2 有正负两个解,对应「肘部向上」和「肘部向下」两种姿态。这就是所谓的多解问题。

避坑指南:我曾经在项目中遇到逆运动学无解的情况——目标点超出了机械臂的工作空间。所以一定要先检查可达性,再求解。另外,多解时要根据当前关节位置选择最近的那个解,避免关节大范围跳动。

2.5 知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张图:

运动控制基础理论 坐标系与齐次变换 刚体运动学 正逆运动学 世界/工具/基坐标系 齐次变换矩阵 6自由度描述 雅可比矩阵 正运动学公式 逆运动学求解 核心:用数学描述机械臂的运动关系

2.6 本章小结

这一章我们聊了三个核心内容:

  1. 坐标系与齐次变换——用矩阵统一描述位置和姿态
  2. 刚体运动学——理解物体怎么动,雅可比矩阵是关键
  3. 正逆运动学——以2R机械臂为例,掌握从关节到末端、从末端到关节的映射

这些理论看着抽象,但实际调试时处处用得到。我建议你找个2R机械臂的仿真环境,亲手写一遍正逆运动学的代码,把公式变成可运行的函数。只有亲手写过,才能真正理解。

一句话总结:坐标系是运动的语言,变换是沟通的桥梁,正逆运动学是控制的核心。这三样东西,是运动控制工程师的看家本领。

专注资料整理