第二章 运动学基础(一):空间坐标系与变换、刚体姿态描述

各位同学,欢迎来到Stewart平台控制的第一堂硬核课。今天我们要聊的,是运动学里最基础、也最绕不开的东西——空间坐标系与变换。

说实话,我刚入行那会儿,觉得坐标系变换不就是几个矩阵相乘嘛,有啥好学的?直到我第一次调Stewart平台,发现动平台死活对不准目标位姿……嗯,后来花了整整两天排查,最后发现是旋转矩阵的乘法顺序搞反了。从那以后,我再也不敢小看这些“基础”了。

2.1 空间坐标系:我们到底在哪儿?

先问个问题:你描述一个点的位置,靠什么?

答案很简单——坐标系。没有坐标系,位置就是一句空话。

在Stewart平台里,我们通常需要两个坐标系:

  • 基坐标系 {B}:固定在地面,原点在平台底座中心。这是我们的“绝对参考”。
  • 动坐标系 {P}:固定在动平台上,原点在动平台中心。它跟着平台一起动。

你想想看,控制Stewart平台,本质上就是控制{P}相对于{B}的位置和姿态。说白了,就是回答两个问题:

  1. 动平台中心在哪儿?(位置)
  2. 动平台朝哪个方向?(姿态)

核心概念:位置用3×1向量描述,姿态用3×3旋转矩阵描述。合在一起,就是6自由度的位姿。

2.2 刚体姿态描述:别让平台“歪着”

描述姿态,我见过最常用的有三种方式:欧拉角、旋转矩阵、四元数。今天先聊前两个。

2.2.1 欧拉角:直观但容易踩坑

欧拉角说白了就是三个角度:绕X轴转(滚转roll)、绕Y轴转(俯仰pitch)、绕Z轴转(偏航yaw)。

但这里有个大坑——旋转顺序。我记得有一次,同事用ZYX顺序算出来的结果,跟我用XYZ顺序算的完全对不上。两个人吵了半天,最后发现是顺序问题。

避坑指南:我曾经在项目中吃过“万向锁”的亏。当pitch角接近±90°时,roll和yaw会失去一个自由度。所以,如果你的平台工作范围包含大角度俯仰,建议别用欧拉角,改用四元数。

欧拉角的旋转矩阵(ZYX顺序)长这样:

R = Rz(yaw) * Ry(pitch) * Rx(roll)

其中:
Rx(roll)  = [1, 0,          0;
             0, cos(roll), -sin(roll);
             0, sin(roll),  cos(roll)]

Ry(pitch) = [cos(pitch),  0, sin(pitch);
             0,           1, 0;
             -sin(pitch), 0, cos(pitch)]

Rz(yaw)   = [cos(yaw), -sin(yaw), 0;
             sin(yaw),  cos(yaw), 0;
             0,         0,        1]

2.2.2 旋转矩阵:数学上最干净

旋转矩阵R是一个3×3的正交矩阵,满足R^T * R = I,且det(R)=1。它把动坐标系中的向量,变换到基坐标系中。

我个人习惯用旋转矩阵做中间计算,因为乘法顺序清晰,不容易出错。但缺点也很明显——9个参数,冗余度太高。

小技巧:在实际代码里,我通常用欧拉角做用户输入(直观),内部计算全用旋转矩阵(稳定),最后输出时再转回欧拉角。这样既方便调试,又保证精度。

2.3 齐次坐标:把位置和姿态打包

好,现在我们有位置向量p(3×1)和旋转矩阵R(3×3)。能不能把它们合在一起?

当然可以。齐次坐标就是干这个的。

一个4×4的齐次变换矩阵T长这样:

T = [R, p;
     0, 1]

其中:
R:3×3旋转矩阵
p:3×1位置向量
最后一行:[0, 0, 0, 1]

为什么用齐次坐标?两个原因:

  • 统一运算:旋转和平移可以写成一个矩阵乘法,不用分开算。
  • 链式变换:从基坐标系到动坐标系,中间可能经过多个关节。每个关节一个T矩阵,连乘就得到最终位姿。

举个例子,Stewart平台的逆运动学,本质上就是:

  1. 已知动平台的目标位姿(用T矩阵表示)
  2. 计算每个支腿的长度

而第一步,就是把动平台上的铰点坐标,通过T矩阵变换到基坐标系下。

数学表达

设动平台上某铰点在{P}系中的坐标为Pa,在{B}系中的坐标为Ba,则:

Ba = T * Pa

其中T是{P}相对于{B}的齐次变换矩阵。

2.4 知识体系总览

下面这张图,是我自己总结的本章知识结构。你把它理清了,后面学运动学就顺了。

运动学基础:空间坐标系与变换 空间坐标系 基坐标系{B} vs 动坐标系{P} 刚体姿态描述 欧拉角 / 旋转矩阵 齐次坐标 4×4变换矩阵T 位置向量 p (3×1) 自由度:6 (位置+姿态) 欧拉角:roll, pitch, yaw 旋转矩阵 R (3×3, 正交) ⚠ 注意:万向锁问题 T = [R p; 0 1] 链式变换:T_total = T1 * T2 * ... 核心:用齐次变换矩阵 T 统一描述位置+姿态 为后续逆运动学、动力学控制打下基础

2.5 本章小结

好了,这一章的内容就这些。总结一下:

  • 坐标系是描述位置和姿态的“基准”。Stewart平台里,基坐标系和动坐标系是两个最重要的参考。
  • 欧拉角直观,但要注意旋转顺序和万向锁。旋转矩阵数学干净,但参数冗余。
  • 齐次坐标把位置和姿态打包成4×4矩阵,方便链式变换和编程实现。

下一章,我们会用这些工具,正式推导Stewart平台的逆运动学方程。到时候你会发现,今天学的这些,全是“子弹”。


公众号:蓝海资料掘金营,微信deep3321