第一章 坐标系与姿态表示:从零开始理解导航的“语言”
大家好,我是你们的老朋友。今天咱们正式开讲《多源传感器融合导航从零到一实战》的第一章。
说实话,我刚开始接触组合导航那会儿,最头疼的就是坐标系。什么地心地固系、导航系、载体系,还有欧拉角、四元数……一堆名词砸过来,人都是懵的。但后来我发现,坐标系其实就是导航的“语言”。你想想看,如果连说话的基本单位都搞不清楚,那后面的融合算法、卡尔曼滤波,根本没法聊。
所以这一章,咱们就把坐标系和姿态表示彻底讲透。我会结合自己踩过的坑,带你一步步建立直觉。
1.1 常用坐标系:导航世界的“地图”
先问大家一个问题:你在手机上导航,地图上的“北”是哪个北?
嗯,这个问题其实不简单。导航里常用的坐标系有三个,我一个个说。
1.1.1 地心地固系(ECEF)
地心地固系,英文叫 Earth-Centered Earth-Fixed,简称 ECEF。它的原点在地球质心,Z轴指向北极,X轴指向本初子午线与赤道的交点,Y轴按右手定则确定。
说白了,这个坐标系是跟着地球一起转的。你站在地面上不动,你在ECEF系里的坐标是不变的。
我在做卫星导航接收机的时候,经常要处理ECEF坐标。比如GPS输出的位置,默认就是ECEF系的。但你要把它转成经纬高,就得先理解这个坐标系。
1.1.2 导航系(NED / ENU)
导航系,也叫当地水平坐标系。最常用的是北东地(NED)和东北天(ENU)。
我个人习惯用NED系。为什么呢?因为飞机、车辆的运动,天然就是“北向、东向、地向”这样分解的。你开车往北走,那北向速度就是正的,多直观。
导航系的原点通常选在载体所在的位置。比如你的车当前在某个点,那导航系的原点就在那个点,X轴指向北,Y轴指向东,Z轴指向地心(向下)。
1.1.3 载体系(Body Frame)
载体系,顾名思义,就是固定在载体上的坐标系。比如你的手机、无人机、汽车,都有自己的“身体坐标系”。
通常定义:X轴指向载体前方(前进方向),Y轴指向右侧,Z轴指向下方(符合右手定则)。
为什么需要载体系?因为IMU(惯性测量单元)测量的加速度和角速度,都是相对于载体系的。你手机平放时,Z轴感受到的是重力加速度;但手机竖起来,重力就跑到Y轴上了。
1.2 欧拉角与旋转矩阵:描述姿态的“老搭档”
有了坐标系,接下来就要描述“载体相对于导航系是怎么转的”。这就是姿态表示。
1.2.1 欧拉角:直观但有限制
欧拉角用三个角度来描述旋转:横滚角(Roll)、俯仰角(Pitch)、航向角(Yaw)。
举个例子:你坐在飞机上,飞机抬头是俯仰,左右倾斜是横滚,转弯是航向。
欧拉角的优点是直观。你一看“横滚30度”,脑子里就能想象出那个画面。
但欧拉角有个致命问题——万向锁(Gimbal Lock)。当俯仰角接近±90度时,横滚和航向会变得无法区分。说白了,就是自由度丢失了。
1.2.2 旋转矩阵:数学上完美
旋转矩阵是一个3x3的正交矩阵,它能把一个向量从一个坐标系旋转到另一个坐标系。
比如,从载体系到导航系的旋转矩阵 R,满足:
v_nav = R * v_body
旋转矩阵没有万向锁问题,而且可以连续旋转。但它的缺点是参数多(9个元素),而且必须满足正交约束,计算起来稍微麻烦一点。
欧拉角和旋转矩阵可以互相转换。公式我就不列了,大家记住一点:欧拉角适合给人看,旋转矩阵适合给计算机算。
1.3 四元数基础:现代导航的“瑞士军刀”
四元数,听起来很高大上,其实没那么神秘。它就是一个四维复数,形式是:
q = w + x*i + y*j + z*k
其中 w 是实部,x、y、z 是虚部。而且 i² = j² = k² = ijk = -1。
为什么用四元数?三个原因:
- 无万向锁:可以表示任意姿态
- 计算高效:只需要4个参数,比旋转矩阵的9个少
- 插值平滑:做姿态插值时,四元数比欧拉角平滑得多
我记得第一次用四元数做姿态解算时,被它的乘法规则搞晕了。后来我总结了一个口诀:
1.3.1 四元数与旋转矩阵的转换
四元数和旋转矩阵可以互相转换。给定四元数 q = [w, x, y, z],对应的旋转矩阵 R 为:
R = [[1-2(y²+z²), 2(xy-wz), 2(xz+wy)],
[2(xy+wz), 1-2(x²+z²), 2(yz-wx)],
[2(xz-wy), 2(yz+wx), 1-2(x²+y²)]]
反过来,从旋转矩阵也可以提取四元数。这个公式在姿态解算中经常用到。
1.3.2 四元数的归一化
四元数必须满足模长为1,即 w² + x² + y² + z² = 1。如果计算过程中模长偏离了1,一定要做归一化。
1.4 知识体系总览
为了让大家更直观地理解本章的知识结构,我画了一张SVG图。它展示了坐标系、姿态表示方法以及它们之间的关系。
1.5 本章小结
这一章我们讲了三个坐标系、三种姿态表示方法。说实话,内容不算少,但都是后面所有章节的基础。
我个人建议,初学者可以先从欧拉角入手建立直觉,然后尽快过渡到四元数。因为在实际工程中,四元数才是主流。你想想看,现在主流的开源飞控、机器人框架,哪个不是用四元数?
嗯,今天就到这里。下一章我们会讲IMU的测量模型和误差特性,那是传感器融合的“原材料”。咱们到时候见。