3、IMU坐标系定义:载体坐标系、导航坐标系、IMU内参坐标系,坐标变换基础

聊到IMU,绕不开的就是坐标系。说实话,很多刚入行的朋友觉得IMU不就是测个加速度和角速度嘛,直接拿来用不就行了?嗯,我刚开始也这么想,直到第一次做实车测试,发现IMU装歪了,整个融合结果全飘了……从那以后,我对坐标系这件事就再也不敢马虎了。

今天咱们就把IMU相关的三个核心坐标系掰扯清楚:载体坐标系、导航坐标系、IMU内参坐标系。顺便把坐标变换的基础也一并搞定。

3.1 三个坐标系,各司其职

你想想看,IMU本身是一个物理器件,它有自己的安装方向。而车体也有自己的前进方向。导航算法呢,又需要在一个全局的参考系里算位置。这三个东西如果不统一,数据就是乱的。

3.1.1 载体坐标系(Body Frame)

载体坐标系,说白了就是跟着车走的坐标系。一般定义成:

  • X轴:指向车头前方
  • Y轴:指向车身右侧
  • Z轴:指向车顶上方(右手定则)

我在项目中遇到过一个问题:某款车的IMU安装位置偏左,而且有5度的俯仰安装角。如果不做坐标系对齐,融合出来的姿态直接就歪了。所以,载体坐标系的核心作用就是——描述IMU相对于车体的安装关系。

重要提醒: 载体坐标系的原点通常选在车辆质心,但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的第一件事就是做标定实验,确认内参坐标系的方向。

避坑指南: 千万不要直接相信datasheet里的坐标系定义。我建议你做一个简单的旋转实验:把IMU绕某个轴转90度,看输出值的变化,就能验证坐标系方向是否正确。

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安装位置补偿时特别重要。

小技巧: 如果你只是做姿态融合(比如VIO),平移可以忽略。但如果你要做位置融合(比如GPS+IMU),平移必须补偿,否则会有明显的杠杆臂效应。

3.3 知识体系总览

下面这张图,是我自己总结的坐标系关系。你看一眼就能明白整个逻辑:

IMU内参坐标系 Sensor Frame 芯片自身定义 需标定验证 载体坐标系 Body Frame 车体前进方向 右手定则 导航坐标系 Navigation Frame ENU / NED 全局固定参考系 安装矩阵 R_sensor2body 姿态变换 R_body2nav 坐标变换流程 1. 原始IMU数据(加速度、角速度)在内参坐标系下 2. 通过安装矩阵 R_sensor2body 转换到载体坐标系 3. 通过姿态矩阵 R_body2nav 转换到导航坐标系 4. 在导航坐标系下进行积分、融合、滤波 关键点 三个坐标系必须 严格对齐

3.4 实战中的坐标系对齐

说了这么多理论,咱们来点实际的。假设你拿到一个IMU,怎么确认它的坐标系?

  1. 静态测试:把IMU水平放置,看加速度计输出。Z轴应该是9.8 m/s²,X和Y接近0。如果不对,说明坐标系定义有问题。
  2. 旋转测试:绕某个轴旋转90度,看陀螺仪积分后的角度变化。这个能验证陀螺仪的轴方向。
  3. 安装标定:把IMU装到车上后,做一组已知运动(比如直线加速、匀速转弯),用GPS或视觉做参考,反算出安装矩阵。
我的经验: 坐标系对齐这件事,宁可多花一天做标定,也不要省。我曾经因为赶进度,直接用了厂家给的默认安装参数,结果融合出来的轨迹歪了10度……后来花了三天才找到问题。嗯,从那以后,坐标系标定成了我的“必做项”。

好了,关于IMU坐标系的三个定义和变换基础,咱们就聊到这儿。记住一句话:坐标系不对,融合白费。下一节咱们会深入聊IMU的测量模型和误差特性,到时候这些坐标系知识都会用上。

可可精品资料库