惯性测量单元(IMU)可以由单个传感器或传感器集合组成,这些传感器或传感器集合捕获旨在测量给定参考系中的惯性运动的数据。 加速度,旋转速度和磁场强度是IMU中包含的传感器的示例。 IMU可以在智能设备,医疗康复,通用机器人,制造控制,航空和导航,运动学习以及增强和虚拟现实系统等应用中找到。 惯性测量单元随着其外形尺寸的缩小和计算能力的提高而变得越来越流行。
https://embed.notionlytics.com/wt/ZXlKd1lXZGxTV1FpT2lJMk56Z3hPR0psT1RNME5qazBZVGhqWW1Zd1lXWTJObUZsTkRFek9XSmpOeUlzSW5kdmNtdHpjR0ZqWlZSeVlXTnJaWEpKWkNJNklsZHNTR2hsVEZSUFdXeHpaVmRhUW1ZNU1YQmxJbjA9
使用IMU进行室内/室外跟踪,运动检测,力估计,方向检测等的能力已导致惯性传感器的使用和可用性在智能电话,智能手表,无人机和其他常见电子设备中变得越来越普遍。 互联网上到处都是涉及加速度计,陀螺仪和磁力计的项目,但很少能涵盖所有三个传感器的全部校准。 在本项目中,探索了九个自由度(9-DoF)IMU的手动校准。 IMU连接到Raspberry Pi-这将允许IMU的所有九个组件的高速数据采集速率。
为了通过I2C读取和写入数据,我们必须首先在RPi上启用I2C端口。 我们执行此操作的方法是使用命令行或导航到“首选项”→“ Raspberry Pi配置”。 Adafruit有一个很好的教程,概述了此过程,但是下面将使用RPi配置窗口的屏幕快照给出一个简化的版本。
首选项→Raspberry Pi配置
接口→启用I2C
打开命令窗口,然后键入“ sudo i2cdetect -y 1”
验证0x68作为I2C可用地址
sudo nano /boot/config.txt
在I2C设置旁边添加配置
i2c_arm_baudrate=1000000
完成将波特率更改为1Mbps后,输入CTRL+X,Y,然后按ENTER。 这将保存新的I2C波特率。 完成后,重新启动RPi。 我们在这里所做的只是将波特率设置为1 Mbps-高于默认值100kbps。 这应该给我们大约400Hz-500Hz的采样率(转换为实际单位后)。 我们可以为陀螺仪获得更高的采样率,而为加速度计获得稍高的采样率,但这在本文中将不做探讨。
Python库和惯性测量单元测试(Python代码)
成功运行以上代码后,输出应类似于以下屏幕快照中所示的输出:
该重力是由于重力在IMU的z方向作用而产生的。 这就是为什么我们在z方向上看到接近1g的值,而在x和y方向上看到接近0g的原因。 加速度计在当前配置中跨度为0g-2g,但可以编程为跨度为0g-16g。
对于陀螺仪,我们希望它记录到接近零角速度的位置,对于三个方向我们大致都可以看到。 当然,只有在IMU处于稳定状态(不移动)的情况下,这才是正确的。 陀螺仪在当前配置中的跨度为0-250 dps(每秒度),因此我们可以假设上面观察到的小值是噪声,小振动或要校准的偏移量。
最后,磁力计显示地球磁场强度约为17μT和12μT。磁力计的值很难验证: