第1章:基础数学回顾——向量与坐标系、刚体运动与姿态表示

各位同学,欢迎来到《速度约束下的路径跟踪》课程。我是你们的老朋友,一个在机器人控制领域摸爬滚打多年的工程师。

今天咱们聊点基础,但别小看基础。我见过太多项目,最后出问题都出在最基础的数学概念上。说白了,向量、坐标系、姿态表示这些玩意儿,就是咱们和机器人沟通的“语言”。语言不通,活儿肯定干不好。

1.1 向量与坐标系:机器人的“世界观”

机器人怎么知道自己在哪?它得有个参考系。这就是坐标系。

世界坐标系,就是咱们定义的“绝对”位置。比如房间的东北角是原点,X轴朝东,Y轴朝北。机器人说“我在(1,2)”,就是相对于这个原点说的。

机器人坐标系,是绑在机器人身上的。比如车头方向是X轴,左侧是Y轴。传感器测得“前方1米有障碍”,这个“前方”就是机器人自己的坐标系。

这两个坐标系之间怎么转换?靠向量。

核心概念:一个向量,在不同坐标系下有不同的坐标值。但向量本身(长度、方向)是不变的。

举个例子。我在做AGV(自动导引车)项目时,激光雷达装在车头,它测到障碍物的坐标是相对于雷达的。但我要控制的是车体中心,所以必须把雷达坐标转换到车体坐标系,再转换到世界坐标系。一步错,步步错。

坐标变换公式很简单:

// 二维情况
// 已知:点P在坐标系A中的坐标 (x_A, y_A)
// 坐标系A到坐标系B的平移向量 t_AB
// 旋转矩阵 R_AB
// 求:点P在坐标系B中的坐标 (x_B, y_B)

x_B = R_AB[0][0] * x_A + R_AB[0][1] * y_A + t_AB[0]
y_B = R_AB[1][0] * x_A + R_AB[1][1] * y_A + t_AB[1]

嗯,这里要注意:旋转矩阵是正交矩阵,它的逆等于它的转置。这个性质在后续推导中会反复用到。

1.2 刚体运动与姿态表示:让机器人“动起来”

刚体运动,说白了就是“平移+旋转”。机器人不会变形,所以它的运动就是这两个动作的组合。

姿态表示,是描述机器人“朝哪看”的数学工具。常用的有三种:

  • 旋转矩阵:9个元素,冗余大,但直观,适合推导公式。
  • 欧拉角:3个角度(横滚、俯仰、偏航),直观但容易遇到“万向锁”。
  • 四元数:4个元素,无奇点,适合插值和计算。

我个人习惯,在控制算法里用四元数,在可视化或人机交互时转成欧拉角。为什么?因为四元数做插值平滑,不会像欧拉角那样突然“卡住”。

避坑指南:我曾经在无人机项目中,直接用欧拉角做姿态控制。结果飞机做大角度机动时,横滚和偏航突然耦合,差点炸机。后来换成四元数,问题就解决了。记住:大角度运动,别用欧拉角。

旋转矩阵

旋转矩阵R是一个3x3的正交矩阵,满足R^T R = I,det(R)=1。它把向量从一个坐标系旋转到另一个坐标系。

比如绕Z轴旋转θ角:

R_z(θ) = [
    [cosθ, -sinθ, 0],
    [sinθ,  cosθ, 0],
    [0,      0,    1]
]

连续旋转就是矩阵乘法。注意顺序:先绕X轴转,再绕Y轴转,对应的旋转矩阵是 R = R_y * R_x。顺序不能乱,因为矩阵乘法不满足交换律。

四元数

四元数 q = (w, x, y, z),其中w是实部,(x,y,z)是虚部。它表示绕单位向量 (x,y,z) 旋转 2*arccos(w) 角度。

为什么用四元数?因为它没有奇点,而且插值简单。比如两个姿态之间做平滑过渡,用四元数的球面线性插值(SLERP)就行。

// 四元数乘法(用于组合旋转)
q1 * q2 = (w1*w2 - x1*x2 - y1*y2 - z1*z2,
           w1*x2 + x1*w2 + y1*z2 - z1*y2,
           w1*y2 - x1*z2 + y1*w2 + z1*x2,
           w1*z2 + x1*y2 - y1*x2 + z1*w2)

// 用四元数旋转向量 v
v_rot = q * v * q_conj  // q_conj 是 q 的共轭

注意:四元数虽然好,但调试时很难直观看出“朝哪”。我一般会在代码里同时打印欧拉角,方便肉眼检查。但控制回路里只用四元数,避免奇点。

1.3 运动学基础:机器人怎么“走”

运动学,研究的是位置、速度、加速度之间的关系,不考虑力。说白了,就是“给定车轮转速,机器人会怎么动”。

对于轮式机器人,最经典的是差速驱动模型:

  • 左右轮速度分别为 v_l, v_r
  • 轮距为 L
  • 机器人线速度 v = (v_l + v_r) / 2
  • 机器人角速度 ω = (v_r - v_l) / L

你想想看,如果左右轮速度一样,机器人直行。如果左轮慢右轮快,机器人右转。就这么简单。

但实际项目中,轮子会打滑,电机有响应延迟。所以运动学模型只是“理想情况”,真正控制时还得加反馈。

我记得有一次,在工厂里调试AGV,运动学模型算出来路径很完美,但实际跑起来总是偏。后来发现是地面有油渍,轮子打滑了。从那以后,我每次都会在模型里加一个“打滑因子”,虽然不精确,但至少能兜底。

1.4 知识体系总览

下面这张图,是我自己画的本章知识结构。你可以把它当作一个“地图”,后续章节都会围绕这些基础展开。

路径跟踪数学基础 向量与坐标系 刚体运动与姿态表示 运动学基础 世界坐标系 机器人坐标系 旋转矩阵 四元数 欧拉角 差速驱动模型 阿克曼模型 核心:坐标系变换 + 姿态插值 + 运动学模型 = 路径跟踪基础

这张图里,三个分支是并列关系。但实际应用中,它们是交织在一起的。比如你要做路径跟踪,得先知道机器人当前在世界坐标系下的位置(坐标系变换),然后知道它朝哪看(姿态表示),最后才能算出怎么控制轮子(运动学模型)。

好了,第一章就到这里。这些基础概念,后续章节会反复用到。如果你现在觉得有点模糊,没关系,后面我会结合具体案例再讲。

可可精品资料库