[具身智能-613]:IMU 九轴惯性测量传感器:原始数据含义 → 推导数据种类 → 对应原始数据源 → 匹配算法 → 现成算法库
一、九轴 IMU 基础构成
九轴 IMU =3 轴加速度计+ 3 轴陀螺仪 + 3 轴磁力计
通信接口:I2C / SPI
输出形式:9 路 16 位有符号原始整数(范围:-32768 ~ +32767)
二、九轴原始数据 每路含义详解
1)三轴加速度计 \(A_x,A_y,A_z\)
物理含义感知自身线性加速度 + 地球重力加速度
- 静止时:只受重力
- 运动时:重力 + 运动惯性加速度
轴定义
- \(A_x\):绕 X 轴前后加速度
- \(A_y\):绕 Y 轴左右加速度
- \(A_z\):竖直方向加速度(静止≈1g)
特点静态倾角准、动态抖动大;无航向参考。
2)三轴陀螺仪 \(G_x,G_y,G_z\)
物理含义感知绕三轴的瞬时转动角速度单位:°/s
轴定义
- \(G_x\):绕 X 轴翻滚角速度
- \(G_y\):绕 Y 轴俯仰角速度
- \(G_z\):绕 Z 轴水平旋转角速度
特点动态响应极快、姿态顺滑;长时间积分会零点漂移。
3)三轴磁力计 \(M_x,M_y,M_z\)
物理含义感知地球磁场三轴分量,等效数字电子罗盘
轴定义
- \(M_x、M_y、M_z\):空间三轴磁场强度
特点唯一能提供地理正北基准,用来修正偏航 Yaw 漂移;六轴无磁力计,Yaw 必飘。
三、IMU 推导数据种类、对应原始数据源、适配算法
按从简单到高阶分层整理,一目了然:
层级 1:物理工程量(原始值换算为真实单位)
推导数据
- 加速度 \(a_x,a_y,a_z\) 单位:g
- 陀螺仪 \(g_x,g_y,g_z\) 单位:°/s
- 磁力计 \(m_x,m_y,m_z\) 单位:μT
依赖原始数据
全部 9 轴原始数据
所用算法
量程标定换算公式(无复杂滤波)
- 加速度 (±2g):\(a = Raw / 16384.0\)
- 陀螺仪 (±250°/s):\(g = Raw / 131.0\)
- 磁力计:\(m = Raw / 0.15\)
层级 2:静态欧拉角(俯仰 / 横滚)
推导数据
- Pitch 俯仰角
- Roll 横滚角
依赖原始数据
仅 3 轴加速度计
所用算法
三角函数反正切atan2纯重力矢量分解,无融合。
局限
静止准、一动就抖;无法解 Yaw。
层级 3:六轴融合姿态(稳定 Pitch/Roll)
推导数据
平滑无抖动:Pitch、Roll
依赖原始数据
3 轴加速度 + 3 轴陀螺仪(六轴)
适配算法
- 一阶互补滤波(最简单、嵌入式首选)
- 基础卡尔曼滤波
局限
Pitch/Roll 稳定,Yaw 长期漂移,无正北基准。
层级 4:九轴全姿态 AHRS(完整欧拉角)
推导数据
- Pitch 俯仰
- Roll 横滚
- Yaw 偏航 / 航向角(正北 0°~360°,不漂移)
依赖原始数据
3 轴加速度 + 3 轴陀螺仪 + 3 轴磁力计(完整九轴)
适配算法
- Mahony 滤波(轻量、算力小、机器人 / 云台标配)
- Madgwick 滤波(精度更高、姿态更顺滑,无人机 / SLAM)
- EKF 扩展卡尔曼(工业级、抗干扰强、惯导 / AGV)
层级 5:四元数、姿态矩阵
推导数据
- 四元数 \(q_0,q_1,q_2,q_3\)
- 旋转姿态矩阵
依赖原始数据
九轴全量数据
适配算法
Mahony / Madgwick / EKF 内置输出作用:避免欧拉角万向锁,用于 3D 姿态、机器人坐标变换。
层级 6:导航级衍生数据
推导数据
- 分离重力后的线性加速度
- 速度(加速度二次积分)
- 位置轨迹(速度积分)
依赖原始数据
九轴 + 可选 GPS / 气压计
适配算法
EKF/UKF 多传感器融合
四、汇总对照表(可直接收藏)
表格
| 推导数据类型 | 依赖原始数据源 | 对应核心算法 |
|---|---|---|
| 物理工程量 (g/°/s/μT) | 九轴全部原始值 | 量程标定公式 |
| 静态 Pitch/Roll | 仅加速度 3 轴 | atan2 三角函数 |
| 六轴平滑 Pitch/Roll | 加速度 + 陀螺仪(6 轴) | 互补滤波、卡尔曼 |
| 九轴全姿态Pitch/Roll/Yaw | 加速度 + 陀螺仪 + 磁力计(9 轴) | Mahony、Madgwick、EKF |
| 四元数 / 姿态矩阵 | 九轴 | Mahony/Madgwick/EKF |
| 速度 / 位置导航数据 | 九轴 + GPS / 气压 | EKF/UKF 多源融合 |
五、现成可用的 IMU 算法库(不用自己写算法)
1、Python 库(树莓派 4B/5、RK3568/RK3588 通用)
① ahrs(专业标准库)
bash
运行
pip install ahrs内置:Mahony、Madgwick、EKF、四元数欧拉角互转,直接输入 9 轴物理量,输出姿态角。
② imufusion(极简封装)
bash
运行
pip install imufusion内置成熟 AHRS 融合,一行代码出稳定姿态。
2、C/C++ 嵌入式库(RK3568/RK3588 / 单片机 / RTOS)
- Mahony AHRS 开源库:轻量、无依赖、占用极小
- Madgwick AHRS 开源库:高精度 3D 姿态
- RT-Thread 传感器框架:自带 IMU 驱动 + 姿态解算
- FreeRTOS 官方 IMU 算法组件
3、硬件内置解算(零算法开发)
BNO055九轴芯片内部硬件完成 Mahony 融合,直接读出 Pitch/Roll/Yaw,无需任何算法编程。
六、核心总结
- 原始 9 轴:加速度→静态倾角;陀螺仪→动态平滑;磁力计→锁定航向。
- 推导数据逐级依赖:物理量→静态角→六轴姿态→九轴全姿态→四元数→导航数据。
- 算法匹配:简单用互补滤波、标准用 Mahony、高精度用 Madgwick、工业导航用 EKF。
- 开发直接用库:Python 用
ahrs,C 用 Mahony/Madgwick 开源库,无需自研解算。
