关于IMU
IMU是指六轴传感器,包含陀螺仪和加速度计。MARG 是指九轴传感器,在 IMU 的基础上添加了磁力计,磁力计可以测量角速度变化,优化陀螺仪的输出。在 IMU 受力平衡状态下,陀螺仪是内部传感器,加速度计(在重力场下)和磁力计(在地磁场下)是外部传感器。
IMU陀螺仪和加速度计时的间同步
目前大多数基于VI的SLAM算法如ROVIO、MSCKF、OKVIS、VINS-MONO等融合IMU数据都假设陀螺仪和加速度计以固定速率“同步”,在数学上使得SLAM更为简单。
上述大多数SLAM算法都假设IMU中陀螺仪和加速度计之间的延迟随时间变化是恒定的,imu校准工具箱Kalibr也认为,不希望在状态向量中估计一个可变的时延,这只会增加算法的复杂度。
“复制”方法
对于Realsense相机在运行roslaunch realsense2_camera rs_camera.launch 时,其中unite_imu_method = “copy” ,为每个传入的陀螺仪或加速度信息创建一个统一的消息 ,输出速率约为200+250大约为450Hz,比如实际 gyro为250 Hz, accel为 200 Hz ,最终约为448Hz,。
“插值”方法:
陀螺仪的帧率一般高于加速度计的帧率,也有些传感器是相反,下面画出了一个IMU信息序列;
- A messages表示采样较慢的传感器的(如加速度计)信息
- B messages表示采样较快的传感器的(如陀螺仪)信息
A messages: A1............A3................A6.......A8..........A10
B messages: B1......B2.......B4......B5.......B7.....B8......B9
------------------------------------------------------------------------
Arrived time: t1......t2....t3.t4......t5.....t6.......t8......t9..t10...
Arrived time 是每个时间戳的联合消息的内容,使用插值方法计算在统一时间戳处的陀螺仪或加速度值,然后打包发送:
- t3:在t3处计算(A3, A1)在t2时间处插值的结果,然后和B2打包发送,时间戳为t2。
- t4:在t4处计算(B4, B2)在t3时间处插值的结果,然后和A3打包发送,时间戳为t3。
- t5:在t4,t5中没有数据更新,不计算插值。
- t6:在t6处计算(A6,A3)在t5时间处插值的结果,然后和B5打包发送,时间戳为t5。
同一类型的消息(B)在同一类型的消息(B)之间不会生成相同类型的消息。因此,联合消息的速率预期约为较低帧速率的两倍(比如 2×200=400hz)。