IMU的数据
我一个做感知的威森莫要用IMU...
昨天想获取Unitree GO2的IMU数据,跑官方SDK的时候,忘记修改底层代码,导致发送了一些控制命令,狗突然就动了起来,差点把狗搞坏,险些让我“曾经有一份工作”,至今心有余悸。
GITHUB上似乎没有现成的获取GO2 IMU数据的代码,自己采集成功之后开源了一个。FunnyWii/Unitree-Go2-IMU-Subscriber: Subscribe Unitree Go2 Robot IMU data using Unitree C++ SDK ,感谢马斯克开源。
IMU组成
IMU分类
IMU (Inertial Measurement Unit),惯性测量单元, 一般分类6轴和9轴,采样率在100Hz以上。
6轴IMU包含3轴陀螺仪和3轴加速器计,陀螺仪可以获取绕XYZ三轴角速度,加速度计可以获取三轴的加速度。系统初始状态下Yaw为0°,没有绝对角度输出。
9轴IMU包含3轴陀螺仪,3轴加速器计和3轴磁力计,磁力计可以获取到XYZ三轴的朝向。相比6轴IMU,9轴的可以减少累计误差,减轻漂移现象,但是容易受到磁场和带磁力金属的干扰。系统初始状态下,Yaw有绝对值,但是角度需要校准,且容易收到电磁干扰。
陀螺仪
陀螺仪用于获取系统的角速度,单位一般为 rad/s。
在知道系统初始方向的情况下,对角速度进行积分,即可得到当前时刻的方向。
当模块水平放置时,陀螺仪三轴输出为 [0,0,0]。
6轴IMU的Yaw角会飘移,上电后一般需要静止1s来纠正零偏;9轴IMU在经过校准后,在无磁力干扰的环境下可以输出稳定无飘移的航向角。
加速度计
原理是牛顿第二定律:a=\frac{F}{m} 获取物体的线加速度,单位一般是 m/s^2。
通过对线加速度进行积分,可以得到线速度,但是这个误差会非常大。
当模块水平放置时,加速度三轴的输出为 [0,0,g]。
磁力计
通过测量磁场,能够确认物体的绝对朝向,但是非常容易收干扰,而且需要校正。
IMU噪声
- 陀螺仪随机飘移
ARW (Angular Random Walk):在无外部参考时,陀螺仪在时间上产生的飘移。
- 加速度计随机噪声
VRW (Velocity Random Walk):在没有外部加速度时,加速度计的噪声。
参考文章
[1] Inertial measurement unit - Wikipedia
#ROS(9)#C++(28)评论