IMU由三部分组成:加速度计、磁力计、陀螺仪。
加速度计就是测量三个方向的加速度:


磁力计就是测量磁场北极的方位:


陀螺仪测量的就是绕三个方向旋转速度:

一、加速度计

1.1 一维模型

加速度计的一维模型类似于弹簧质量模型,如下:

静态下,达到平衡:

这个时候加速度计测量到的加速度为重力加速度:

如果在运动的情况下:

则平衡方程变为:

这个时候加速度计测量的加速度为重力加速度和运动加速度之和:

按照这个分析,加速度计在自由落体时测量到的加速度为零。
如果想要通过加速度计测量得到运动加速度,那么应该将测量到的加速度减去重力加速度:

即:

加上硬件的测量误差:

积分得到:

从而可以计算运动的位移:

但是通过这种方式测量位移,误差会随着时间急剧增加。

1.2 二维或三维加速度计

当加速度计的y轴与重力方向重合时,二维加速度计坐标系如下:

那么在x、y方向测量的加速度分别如下:

但是通常情况下,y轴与重力方向不重合,如下图所示:

这个时候测量得到的x、y轴加速度分别如下:

需要知道方位角度θ,才能减去重力项,从而得到我们真正想要的运动加速度。
如果方位角度不准确,不仅不会消除重力,还会引入误差。

以手机为例,假设手机处于静止状态,那么:

则由上述公式可得:

加速度计就变成了一个角度传感器。这时需要加速度计处于静止状态下去估算旋转角度。但是如果需要测量三维旋转,仅靠加速度计是不够的。
加速度计还可以用来测量距离。
如果通过对加速度进行双重积分的方式估算距离,会导致严重的测量错误。

其中n表示测量误差,误差会随着时间的增加大量积累,导致估算的距离严重错误。
然而由于加速度计可以很好的跟踪步态,所以可以根据步数和步长,再加上罗盘测量的方位,就可以估算出距离:
Distance = step_count * step_size

加速度计总结

  • 测量重力加速度和直线加速度;
  • 2D情况下,在静止状态下,测量到的重力可以用于估算旋转角度;
  • 通过对加速度进行双重积分来估算距离,会导致误差严重积累;而用加速度计计算步数比较准确;

二、磁力计

2.1 二维磁力计

在2D情况下,如图所示,当磁场北极刚好处于磁力计y轴,则磁力计测量值为:


如果磁力计的坐标偏转了一个方向θ,如图所示,则磁力计测量得到的值为:


在3D情况下也是同样的原理,3D磁力计的测量输出值取决于旋转角度。
在2D情况下,磁力计可以用于估算旋转角度:

其中,Mx是磁力计x轴的测量输出值,M是磁场北极强度,是已知值。
然而,在3D情况下,单靠磁力计不足以估算三维旋转角度。

2.2 三维旋转

如下图所示,在三维情况下,X-Y-Z表示磁力计本地坐标系,East-North-Up表示的是世界坐标系,三维旋转就是测量的世界坐标系和磁力计本地坐标系之间的旋转角度关系。

下图表示了,三维旋转矩阵的含义,三维旋转矩阵可以充分的表示世界坐标和本地坐标之间的旋转关系。

现在的问题是如何来测量这个3X3旋转矩阵?

通过重力和磁场确定旋转矩阵
最关键的一点是要使用全局已知的参考向量,并且能在本地坐标系中测量到。有两个向量可以做到:重力和磁场北极。
如果采用重力向量,那么根据加速度传感器可以得到如下公式:

如果采用磁场北极向量,那么根据磁力计可以得到如下公式:

由上面两组公式可以得到6个方程,但是有9个未知数(33旋转矩阵R)。这9个未知数并非都是独立变量,旋转矩阵的每一列都是单位正交向量。所以根据上面两组公式足以解算出旋转矩阵R。
结论就是:可以用加速度计和磁力计确定旋转矩阵。
由yaw, pitch, roll确定旋转矩阵
如下式所示,3
3的旋转矩阵可以用三维的yaw, pitch, roll来表示,如图所示。


所以通过估计yaw, pitch, roll可以确定方向。
加速度计方程
加速度计测量的加速度方程如下:

其中ax, ay, az是由加速度计测量输出的各方向的加速度。也可以写成:

需要注意的是,加速度计的测量输出与yaw角无关,所以上式应该写成:

所以通过加速度计无法估算yaw角度。
上式继续写成:

于是通过这个方程就可以估算出pitch和roll。
磁力计方程
磁力计方程如下:

也可以写成这样的形式:

注意,pitch和roll通过加速度计已经确定了。于是就可以通过上式确定yaw的大小。

知道了yaw, pitch, roll的值,就能确定三维旋转矩阵,也就是三维方向。

三、陀螺仪(Gyroscope)

陀螺仪是用来测量角速度的,通过对角速度进行积分就可以知道角度。

3.1 一维的情况

陀螺仪测量的角速度为:

也就是说:

但是测量是有误差的,加上误差得到的方程为:

两边进行积分,就可以得到测量的角度:

可以明显看出来,误差累计非常严重,如图所示:

3.2 用陀螺仪估算三维旋转

陀螺仪可以测量三维三个方向上的旋转角速度,通过转换就能得到两个时刻之间的相对旋转矩阵,于是可以按这种思路通过陀螺仪估算三维旋转矩阵:

如果只用陀螺仪对旋转矩阵进行估算的话,需要一系列这样的方程:

其中绿色部分是陀螺仪的测量结果,要注意,每次的测量结果都是有误差的。于是最终的旋转矩阵测量结果误差会随着时间推移而积累。

四、两种测量旋转矩阵的方法总结

4.1 通过陀螺仪

测量误差会随着时间积累:

4.2 通过加速度计和磁力计

最大的优点就是不会有累积误差,因为不需要积分。
缺点是,加速度计测量重力时,会被线性运动给破坏掉:

所以用加速度计只能在静态下测量旋转矩阵。
另外一个问题是,磁力计容易受到磁场干扰。

鉴于上述两种方法各有优劣,是否能用加速度计和磁力计来校正陀螺仪的累积误差呢?答案是可以的。

  • 通常使用陀螺仪测量旋转矩阵,会有误差积累导致测量结果漂移。
  • 在静态以及没有磁场干扰的情况下,通过加速度计和磁力计将误差进行一次reset,就可以减少误差累计而导致测量结果漂移的情况,如图所示。

惯性测量单元IMU基础相关推荐

  1. 2022年全球市场MEMS惯性测量单元(IMU)总体规模、主要生产商、主要地区、产品和应用细分研究报告

    本文研究全球市场.主要地区和主要国家MEMS惯性测量单元(IMU)的销量.销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,MEMS惯性测量单元(IMU)销量.价格.收入和市场份额等.针对 ...

  2. 惯性测量单元 (IMU) 探秘

    我的童年是很久以前的事了.那时候没有手持电子产品,没有视频游戏,也没有便携式设备.与现在不同,那是个玩培乐多.橡皮泥.神奇8号球.飞盘和妙妙圈的年代.我记忆最深刻的是美泰旋转球.它本质上是一个陀螺仪, ...

  3. 惯性测量单元--IMU

    惯性测量单元是测量物体三轴姿态角(或角速率)以及加速度的装置.一般的,一个IMU包含了三个单轴的加速度计和三个单轴的陀螺,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺检测载体相对于导航坐 ...

  4. 惯性测量单元 (IMU)、全球定位进行建模系统(GPS)和惯性导航系统(INS)建模

    传感器融合和跟踪工具箱,能够对惯性测量单元 (IMU).全球定位进行建模 系统(GPS)和惯性导航系统(INS)建模.可以通过以下方式对特定硬件进行建模 将模型的属性设置为硬件数据表中的值.可以调整环 ...

  5. IMU惯性测量单元(IMU+GPS)

    本文为了日后方便查阅,对知识点进行整理,只作为笔记使用. 惯性测量单元 (IMU) ADI公司的iSensor® MEMS 惯性测量单元 (IMU) 传感器以多轴方式组合精密陀螺仪.加速度计.磁力计和 ...

  6. 详细解说IMU惯性测量单元

    详细解说IMU惯性测量单元 IMU可获得载体的姿态.速度和位移等信息,被广泛用于汽车.机器人领域,也被用于需要用姿态进行精密位移推算的场合,如潜艇.飞机等惯性导航设备中. 青岛智腾mems加速度计芯片 ...

  7. 惯性测量单元(IMU)传感器--MEMS微纳制造系列简报

    随着新一轮科技革命和产业变革的加速演进,5G.人工智能.物联网等基础设施日趋完善,无人驾驶.无人机.VR/AR等终端应用技术商业化规模快速增长,而连接新一代信息技术的基础技术与终端应用的--以MEMS ...

  8. MEMS微纳制造系列简报——惯性测量单元(IMU)传感器

    随着新一轮科技革命和产业变革的加速演进,5G.人工智能.物联网等基础设施日趋完善,无人驾驶.无人机.VR/AR等终端应用技术商业化规模快速增长,而连接新一代信息技术的基础技术与终端应用的--以MEMS ...

  9. 惯性测量单元(IMU)系列介绍(1)——加速度计简介

    引言 惯性测量单元(Inertial Measurement Unit, IMU)主要用来检测和测量加速度.倾斜.冲击.振动.旋转和多自由度运动.通常是指使用加速度计和陀螺仪来测量物体单轴.双轴或三轴 ...

最新文章

  1. C - Catch That Cow(BFS)
  2. Android Studio查看Android源代码失败
  3. 语言 蜗牛爬树问题_一年级语文《小蜗牛》课文解析及测试题,感觉最难的是口语交际题...
  4. ie6 PNG图片透明
  5. mysql字段简索引_Mysql索引优化攻略(全)
  6. android怎么关联geny,Android studio下添加genymotion神器
  7. Android的服务(Service)(一)生命周期
  8. 从 Ubuntu 21.04 升级到 Ubuntu 21.10
  9. Python3 数据结构:列表List中的方法
  10. java调用构造函数中某一个值_Java如何在枚举的构造函数中调用另一个枚举值
  11. 计算机二级 java和web_2020年全国计算机二级WEB程序复习知识点:JavaBean
  12. 递归算法,如何把list中父子类对象递归成树
  13. Navicat 教程:排序、查找或替换记录
  14. python写出租车计费系统_出租车计费系统设计 Java
  15. Excel小技巧--如何禁止在某一列或某一区域输入重复内容
  16. 实习僧[shixiseng.com]爬虫实战笔记
  17. VMware-KVM安装
  18. TCP原理之:linux网桥
  19. 我裁完兄弟后,辞职了,转行做了一名小职员
  20. Chrome开启多线程下载

热门文章

  1. 读《春秋》有感之四:将帅互让
  2. 复工首日,最大的危机刚刚开始!中国加油!龙族最硬的龙鳞都来了!
  3. 消息中间件之ActiveMQ原理及使用教程(持久化、JMS可靠消息、重试机制与幂等性问题)
  4. laravel 微博项目初学
  5. 在报表上打印承上页启下页
  6. 虚拟机Centos7无法ping通百度的详细解决方式(详细有效)
  7. 微软Windows Phone7超越Android、iOS的五大优势
  8. win11 修改host文件
  9. “华为手机”和“荣耀手机”哪个好?看完不迷路的文章来了!
  10. oracle exfsys 下 rlm$evtcleanup,ORA-27468 EXFSYS.RLM$EVTCLEANUP任务引起的故障