当前位置: 首页 > news >正文

[具身智能-615]:MU 九轴惯性测量传感器:9轴原始数据->物理量换算 ->四元数 -> 欧拉角(角度) 过程详细解析

原始数据 → 物理量换算 → 四元数 → 欧拉角一步一步拆解,原理 + 公式 + 代码完全对应,看完就能彻底懂。

适用传感器:MPU9250 / ICM20948 / BNO055适用主控:树莓派 4B/5、RK3568/RK3588


0. 总流程(4 步黄金链路)

plaintext

九轴原始值 (Raw) ↓ 物理量换算 (g, °/s, μT) ↓ 姿态融合算法 → 输出 四元数 (Quaternion) ↓ 四元数转欧拉角 (Pitch / Roll / Yaw)

最终输出:俯仰、横滚、航向角


1. 第一步:九轴原始数据 → 物理量换算

1.1 原始数据是什么?

IMU 输出9 个 16 位有符号整数

plaintext

raw_ax, raw_ay, raw_az 加速度 raw_gx, raw_gy, raw_gz 陀螺仪 raw_mx, raw_my, raw_mz 磁力计

范围:-32768 ~ +32767


1.2 换算公式(必须背)

① 加速度计(默认 ±2g)

plaintext

ax = raw_ax / 16384.0 # 单位 g ay = raw_ay / 16384.0 az = raw_az / 16384.0
  • 静止时az ≈ 1.0
  • 含义:重力加速度 + 运动加速度

② 陀螺仪(默认 ±250°/s)

plaintext

gx = raw_gx / 131.0 # 单位 °/s gy = raw_gy / 131.0 gz = raw_gz / 131.0
  • 静止时 ≈ 0
  • 含义:绕 X/Y/Z 轴的转动速度

③ 磁力计(默认 ±4912μT)

plaintext

mx = raw_mx / 0.15 # 单位 μT my = raw_my / 0.15 mz = raw_mz / 0.15
  • 含义:地球磁场分量 → 用于找正北

2. 第二步:物理量 → 四元数(姿态融合核心)

2.1 什么是四元数?

q = [w, x, y, z]

  • 4 个浮点数
  • 表示3D 空间姿态
  • 无万向锁、计算快
  • 是 IMU 算法的标准输出

2.2 怎么得到四元数?

使用姿态融合算法,输入9 轴物理量

最常用算法:Mahony 滤波

plaintext

q = mahony.updateIMU( q, gx, gy, gz, ax, ay, az, mx, my, mz )

算法内部做了什么(精简原理)

  1. 陀螺仪→ 预测姿态
  2. 加速度计→ 修正 Pitch/Roll
  3. 磁力计→ 修正 Yaw(正北)
  4. 输出稳定的四元数 q

3. 第三步:四元数 → 欧拉角(最终角度)

3.1 欧拉角是什么?

  • Pitch 俯仰:抬头 / 低头
  • Roll 横滚:左倾 / 右倾
  • Yaw 偏航:朝向(正北 0°)

3.2 转换公式(标准通用)

已知四元数q = [w, x, y, z]

① Pitch (俯仰)

plaintext

pitch = asin( -2*x*z + 2*w*y ) * 57.2958

② Roll (横滚)

plaintext

roll = atan2( 2*y*z + 2*w*x, -2*x*x -2*y*y + 1 ) * 57.2958

③ Yaw (偏航 / 航向)

plaintext

yaw = atan2( 2*x*y + 2*w*z, -2*y*y -2*z*z + 1 ) * 57.2958

57.2958=180/π弧度转角度


4. 全流程代码逐行对应(最清晰)

python

运行

# ========== 1 原始数据 ========== raw_ax, raw_ay, raw_az, raw_gx, raw_gy, raw_gz, raw_mx, raw_my, raw_mz = read_9axis_raw() # ========== 2 原始 → 物理量 ========== ax = raw_ax / 16384.0 ay = raw_ay / 16384.0 az = raw_az / 16384.0 gx = raw_gx / 131.0 gy = raw_gy / 131.0 gz = raw_gz / 131.0 mx = raw_mx / 0.15 my = raw_my / 0.15 mz = raw_mz / 0.15 # ========== 3 物理量 → 四元数 ========== q = mahony.updateIMU(q, gx, gy, gz, ax, ay, az, mx, my, mz) w, x, y, z = q # ========== 4 四元数 → 欧拉角 ========== pitch = math.asin(-2*x*z + 2*w*y) * 57.2958 roll = math.atan2(2*y*z + 2*w*x, -2*x*x-2*y*y+1) * 57.2958 yaw = math.atan2(2*x*y + 2*w*z, -2*y*y-2*z*z+1) * 57.2958

5. 一张图记住整个流程

plaintext

[ 原始16位整数 ] ↓ 除以量程系数 [ 物理量 g, °/s, μT ] ↓ Mahony/Madgwick 融合 [ 四元数 q(w,x,y,z) ] ↓ 三角函数转换 [ 欧拉角 Pitch / Roll / Yaw ]

6. 你只需要记住这 4 条

  1. 原始值必须转成物理量才能用
  2. 加速度算倾角,陀螺仪算平滑,磁力计定正北
  3. 算法输出四元数,不直接输出角度
  4. 四元数转欧拉角用固定公式即可
http://www.jsqmd.com/news/787005/

相关文章:

  • 开源硬件ClawBadge:从设计到编程的电子徽章制作全指南
  • 做企业软件的定制软件开发公司解决方案商
  • Linux下Cursor编辑器试用重置脚本原理与风险分析
  • 如何从入门到进阶学习 Linux 云计算运维?
  • Instill Core:AI应用编排引擎,构建自动化流水线实战
  • CANN/catlass Swizzle策略说明
  • CANN/pyasc核心张量操作API
  • 2026年4月行业内有名的酒店装修设计设计师推荐,侘寂民宿/星级酒店/江景酒店/景区酒店,酒店装修设计改造找哪家 - 品牌推荐师
  • 2026就业寒冬?这10个AI高薪岗位抢人大战一触即发,最高年薪300万!普通人也能抓住风口?
  • 如何快速掌握B站视频转文字工具:新手的终极实战指南
  • 基于MCP协议的LinkedIn数据连接器:AI自动化招聘与市场分析实战
  • ChatGLM2-6B全面解析:从FlashAttention到量化部署的本地大模型实践
  • 我发现深度神经网络DNN推理图片高度300也能正常运转
  • CANN/ops-cv三点插值反向算子
  • 基于MCP协议实现Mac消息AI自动化:原理、部署与安全实践
  • 分布式任务调度平台Idun-Agent-Platform:从架构设计到生产部署实战
  • KrkrzExtract终极指南:新一代krkrz引擎资源解包工具深度解析
  • GE 静态执行器特性分析
  • 从java改C++后速度变化记录
  • AI智能体3D可视化监控:用Phaser构建等距办公室视图
  • CANN/AMCT基于精度自动校准API
  • CANN/shmem原理与架构详解
  • Godot游戏开发实战:从节点系统到高级架构的模块化教程指南
  • 基于PHP 8.4+与原生JS的现代电商引擎eMarket架构解析与实战
  • Slipbot:基于AI Agent的自动化个人知识库管理框架
  • CANN驱动获取设备CPU频率信息
  • 基因数据交易模拟平台:用金融市场模型探索基因组学动态分析
  • CANN/pto-isa P2P指令详解
  • 对比自行维护API中转与使用Taotoken在稳定性上的体感差异
  • 机器学习求解偏微分方程:算子学习与物理信息神经网络全解析