3、IMU坐标系定义:载体坐标系、导航坐标系、IMU内参坐标系,坐标变换基础
聊到IMU,绕不开的就是坐标系。说实话,很多刚入行的朋友觉得IMU不就是测个加速度和角速度嘛,直接拿来用不就行了?嗯,我刚开始也这么想,直到第一次做实车测试,发现IMU装歪了,整个融合结果全飘了……从那以后,我对坐标系这件事就再也不敢马虎了。
今天咱们就把IMU相关的三个核心坐标系掰扯清楚:载体坐标系、导航坐标系、IMU内参坐标系。顺便把坐标变换的基础也一并搞定。
3.1 三个坐标系,各司其职
你想想看,IMU本身是一个物理器件,它有自己的安装方向。而车体也有自己的前进方向。导航算法呢,又需要在一个全局的参考系里算位置。这三个东西如果不统一,数据就是乱的。
3.1.1 载体坐标系(Body Frame)
载体坐标系,说白了就是跟着车走的坐标系。一般定义成:
- X轴:指向车头前方
- Y轴:指向车身右侧
- Z轴:指向车顶上方(右手定则)
我在项目中遇到过一个问题:某款车的IMU安装位置偏左,而且有5度的俯仰安装角。如果不做坐标系对齐,融合出来的姿态直接就歪了。所以,载体坐标系的核心作用就是——描述IMU相对于车体的安装关系。
3.1.2 导航坐标系(Navigation Frame)
导航坐标系,就是算法算位置、算速度时用的那个“世界坐标系”。常见的有:
- ENU坐标系:东-北-天,我最常用的
- NED坐标系:北-东-地,航空领域常见
我个人习惯用ENU,因为直观。东向是X,北向是Y,天向是Z。你想想看,我们在城市里开车,东和北就是水平面,天向就是高度,多好理解。
导航坐标系是固定不动的(相对于地球表面)。IMU测到的加速度和角速度,最终都要转换到这个坐标系下,才能做积分和融合。
3.1.3 IMU内参坐标系(Sensor Frame)
这个坐标系,是IMU芯片自己定义的。每个IMU厂家都有自己的习惯:
- 有的把X轴指向芯片的某个引脚方向
- 有的把Z轴定义为垂直于封装平面
- 甚至有的IMU的加速度计和陀螺仪的坐标系还不一样!
我曾经踩过一个坑:某款IMU的datasheet里写的是右手系,但实际测试发现陀螺仪的Z轴方向是反的。后来查了半天,发现是厂家把“正方向”定义成了顺时针旋转……嗯,从那以后,我拿到新IMU的第一件事就是做标定实验,确认内参坐标系的方向。
3.2 坐标变换基础
三个坐标系之间怎么转换?核心就是旋转矩阵和平移向量。
3.2.1 旋转矩阵
假设我有一个点P,在坐标系A中的坐标是P_A,在坐标系B中的坐标是P_B。那么:
P_B = R_AB * P_A
其中R_AB就是坐标系A到坐标系B的旋转矩阵。它是一个3x3的正交矩阵,行列式为+1。
旋转矩阵怎么求?常见的有三种方式:
- 欧拉角:绕X、Y、Z轴依次旋转,直观但容易遇到万向锁
- 四元数:无万向锁,插值方便,我推荐用这个
- 轴角表示:绕某个单位向量旋转一定角度
我个人习惯用四元数做融合,因为计算稳定,而且没有奇异性。但在调试时,我会把四元数转成欧拉角来看,毕竟直观嘛。
3.2.2 平移向量
如果两个坐标系的原点不重合,还需要加上平移:
P_B = R_AB * P_A + t_AB
t_AB就是坐标系A的原点在坐标系B中的坐标。这个在IMU安装位置补偿时特别重要。
3.3 知识体系总览
下面这张图,是我自己总结的坐标系关系。你看一眼就能明白整个逻辑:
3.4 实战中的坐标系对齐
说了这么多理论,咱们来点实际的。假设你拿到一个IMU,怎么确认它的坐标系?
- 静态测试:把IMU水平放置,看加速度计输出。Z轴应该是9.8 m/s²,X和Y接近0。如果不对,说明坐标系定义有问题。
- 旋转测试:绕某个轴旋转90度,看陀螺仪积分后的角度变化。这个能验证陀螺仪的轴方向。
- 安装标定:把IMU装到车上后,做一组已知运动(比如直线加速、匀速转弯),用GPS或视觉做参考,反算出安装矩阵。
好了,关于IMU坐标系的三个定义和变换基础,咱们就聊到这儿。记住一句话:坐标系不对,融合白费。下一节咱们会深入聊IMU的测量模型和误差特性,到时候这些坐标系知识都会用上。