第三章:坐标系与姿态表示
各位工程师朋友,大家好。我是老张,在惯导这个行当里摸爬滚打了十几年。今天咱们来聊聊坐标系和姿态表示。说实话,这是惯导系统最基础、也最容易出错的地方。我见过太多项目,最后定位精度上不去,回头一查,坐标系定义就搞混了。
你想想看,一个飞行器在天上飞,它得知道自己“在哪儿”、“朝哪儿”。这两个问题,都离不开坐标系。咱们这一章,就把这些“地基”打牢。
3.1 常用坐标系
惯导里常用的坐标系,说白了就四种。我习惯把它们分成两类:一类是“不动”的参考系,一类是“跟着动”的载体系。
3.1.1 地心惯性系(i系)
这是最“绝对”的坐标系。原点在地心,Z轴指向北极,X轴指向春分点。它不随地球自转,是牛顿定律成立的参考系。
关键点: 陀螺仪测量的角速度,就是相对于这个系的。我在项目中遇到过,有人把陀螺输出直接当成了相对于地球的角速度,结果导航误差飞了。记住,陀螺测的是“惯性空间”里的角运动。
3.1.2 地球系(e系)
也叫地心地固系。原点还是地心,但Z轴指向北极,X轴指向本初子午线与赤道的交点。它跟着地球一起转。
为什么需要它? 因为我们要输出经纬度、高度。这些坐标,都是相对于地球系的。说白了,GPS给出的位置,就是地球系下的坐标。
3.1.3 导航系(n系)
这是最常用的“当地水平系”。原点在载体质心,Z轴指向天顶(或者地心,看定义),X轴指向北,Y轴指向东。也就是我们常说的“北东地”或“东北天”。
我个人习惯用“北东地”。因为这样俯仰角、横滚角的定义比较直观。嗯,这里要注意:不同厂家、不同标准,导航系的定义可能不一样。做系统集成时,一定要先对齐这个。
3.1.4 载体系(b系)
原点在载体质心,X轴指向载体前方,Y轴指向右侧,Z轴指向下方。这就是“右前下”坐标系。IMU(惯性测量单元)就是固联在这个系上的。
你想想看,IMU输出的加速度和角速度,都是载体系下的。我们要把它转换到导航系,才能做导航解算。这个转换,就是姿态矩阵干的事。
核心总结: 四种坐标系,各有各的用处。i系是基准,e系是输出,n系是解算,b系是测量。搞混了,导航就全乱了。
3.2 姿态表示方法
姿态,就是载体系相对于导航系的旋转关系。怎么描述这个旋转?有三种主流方法:欧拉角、方向余弦矩阵、四元数。我挨个说说。
3.2.1 欧拉角
最直观的方法。用三个角度:航向角(ψ)、俯仰角(θ)、横滚角(φ)。就像你描述一个人“先转个身,再抬头,再歪头”。
优点: 物理意义清晰,一看就懂。
缺点: 有“万向锁”问题。当俯仰角接近±90°时,航向和横滚会耦合,丢失一个自由度。我在做飞行器测试时,就遇到过俯仰角拉到85°,结果航向角突然跳变。当时吓出一身冷汗。
避坑指南: 我曾经在写姿态解算程序时,直接用欧拉角做微分方程更新。结果在俯仰角接近90°时,计算直接发散。后来才意识到,欧拉角只适合做“显示”,不适合做“递推”。
3.2.2 方向余弦矩阵(DCM)
用一个3x3的矩阵来表示旋转。矩阵的每一列,就是载体系坐标轴在导航系下的投影。
优点: 没有奇点,可以表示任意姿态。矩阵乘法可以直接做坐标变换。
缺点: 9个元素,计算量大。而且必须保证正交性,否则会引入误差。
我记得在早期DSP上做惯导解算时,每算一步都要做一次正交化修正。不然跑几分钟,矩阵就“歪”了,导航精度直线下降。
3.2.3 四元数
这是目前最常用的方法。用四个数(q0, q1, q2, q3)来表示旋转。它没有奇点,计算量小,而且容易做插值。
核心公式:
// 四元数更新(离散化)
q_new = q_old + 0.5 * Ω * q_old * dt
其中 Ω 是角速度构成的反对称矩阵
优点: 只有4个参数,计算效率高。只需要做归一化,不需要正交化。
缺点: 不够直观。你看到一组四元数,很难直接想象出姿态是什么样。
我的建议: 内部解算用四元数,输出显示时再转成欧拉角。这样既保证了计算效率,又方便人看。我在所有项目里都是这么干的。
3.3 三种方法的对比
| 方法 | 参数个数 | 奇点问题 | 计算量 | 直观性 | 推荐场景 |
|---|---|---|---|---|---|
| 欧拉角 | 3 | 有(万向锁) | 小 | 高 | 显示、人机交互 |
| 方向余弦矩阵 | 9 | 无 | 大 | 中 | 坐标变换、理论分析 |
| 四元数 | 4 | 无 | 小 | 低 | 姿态解算、实时系统 |
3.4 知识体系结构图
下面这张图,是我自己画的。它把本章的核心逻辑串起来了。你一看就明白:坐标系是“舞台”,姿态表示是“演员的姿势”。
3.5 实战中的选择建议
说了这么多,到底该用哪种?我根据经验,给几个建议:
- 做算法原型验证: 用欧拉角。直观,调试方便。但注意避开大俯仰角。
- 做嵌入式实时系统: 用四元数。计算快,没有奇点。我所有的飞控代码,姿态更新全用四元数。
- 做坐标变换、多传感器融合: 用方向余弦矩阵。矩阵运算方便,容易做误差分析。
最后说一句: 坐标系和姿态表示,是惯导的“语言”。语言不通,什么都干不了。我每次带新人,第一件事就是让他们把坐标系定义写清楚,贴在工位上。别嫌麻烦,这能省下后面无数个加班的夜晚。
公众号:蓝海资料掘金营,微信deep3321