3. 坐标系与姿态表示
在六轴IMU采集与姿态测量中,传感器输出的加速度和角速度都是相对于自身安装位置测量的。要让这些数据具有物理意义,必须先明确“相对于哪个坐标系”,再选择一种姿态表示方法把旋转关系描述出来。本节围绕载体坐标系、导航坐标系、欧拉角、方向余弦矩阵和四元数五个核心概念展开,并给出它们之间的转换关系。
一、两个基础坐标系:载体坐标系与导航坐标系
载体坐标系(Body Frame,记作 b 系)固定在运动载体上,原点通常取在IMU的测量中心。三轴方向与传感器敏感轴一致:x 轴指向载体前方,y 轴指向右方,z 轴指向下方(也可按右手系定义为前-右-下或前-右-上,需与器件手册一致)。IMU输出的加速度、角速度默认都在 b 系下表达。
导航坐标系(Navigation Frame,记作 n 系)是姿态解算的参考基准,常见选择为“东北天”(ENU)或“北东地”(NED)。n 系原点可固定于初始位置,三轴分别指向地理东、北、天(或北、东、地)。姿态测量的本质,就是求取 b 系相对于 n 系的旋转关系。
二、姿态的四种表示方法
欧拉角用三个角度描述旋转,最常用的是 Z-Y-X 顺序:先绕 z 轴偏航(Yaw,ψ),再绕 y 轴俯仰(Pitch,θ),最后绕 x 轴横滚(Roll,φ)。欧拉角直观、易读,但存在万向节死锁:当俯仰角接近 ±90° 时,偏航与横滚耦合,解算会退化。
方向余弦矩阵(DCM,也称旋转矩阵 R)是一个 3×3 正交矩阵,其元素为两坐标系基向量之间的方向余弦。它无奇异点,可直接用于向量坐标变换:vn = Rbn · vb。缺点是含 9 个参数、存在冗余,且数值积分后需正交化。
四元数用一个实部和三个虚部表示旋转,q = [q0, q1, q2, q3]T,满足单位约束 q02+q12+q22+q32=1。它无奇异、计算量小、适合递推更新,是姿态解算中最常用的内部表示。
三、相互转换的核心流程
实际工程中,姿态解算通常以四元数为内部状态,按以下流程完成表示转换:
- 初始化:由加速度计在静止时估计初始横滚与俯仰,由磁力计或已知航向确定偏航,得到初始欧拉角。
- 转四元数:将初始欧拉角按 Z-Y-X 顺序转换为单位四元数 q₀。
- 递推更新:用陀螺仪角速度 ω 构造四元数微分方程 q̇ = 0.5 · q ⊗ ω,积分得到新四元数并归一化。
- 输出转换:需要显示时把四元数转欧拉角;需要做向量旋转时把四元数转 DCM。
// 四元数微分方程递推(简化示意)
q0 = q0 + 0.5 * dt * (-q1*wx - q2*wy - q3*wz);
q1 = q1 + 0.5 * dt * ( q0*wx + q2*wz - q3*wy);
q2 = q2 + 0.5 * dt * ( q0*wy - q1*wz + q3*wx);
q3 = q3 + 0.5 * dt * ( q0*wz + q1*wy - q2*wx);
// 归一化
norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
q0/=norm; q1/=norm; q2/=norm; q3/=norm;
四、四种表示方法对比
| 表示方法 | 参数个数 | 是否奇异 | 计算复杂度 | 典型用途 |
|---|---|---|---|---|
| 欧拉角 | 3 | 有(±90°死锁) | 低 | 人机显示、航向输出 |
| 方向余弦矩阵 | 9 | 无 | 中 | 向量坐标变换、旋转计算 |
| 四元数 | 4 | 无 | 低 | 姿态递推、滤波融合 |
五、案例与常见误区
案例:无人机悬停姿态输出。飞控内部用四元数做互补滤波或卡尔曼滤波,每 1 ms 更新一次;对外通过 MAVLink 发送欧拉角供地面站显示;在控制律中把期望推力方向从 n 系转到 b 系时,则使用 DCM。三种表示各司其职,而不是互相替代。
误区一:欧拉角顺序混用。Z-Y-X 与 X-Y-Z 得到的矩阵完全不同,代码中必须与公式、器件手册保持一致,否则横滚和偏航会互换。
误区二:四元数不归一化。长时间积分后四元数模长漂移,会导致旋转矩阵不再正交,姿态出现缩放和扭曲,必须每步归一化。
误区三:把 b 系与 n 系数据直接相加。加速度计输出在 b 系,重力参考在 n 系,必须先做 R·aᵇ 变换后再比较,否则倾角计算完全错误。
本节小结:b 系是传感器数据所在系,n 系是姿态参考系;欧拉角直观但有死锁,DCM 适合坐标变换,四元数适合递推更新。掌握“欧拉角 ↔ 四元数 ↔ DCM”的双向转换,是后续姿态解算与传感器融合的数学基础。