积分法对IMU(陀螺仪加速度计) LSB(Least Significant Bit)验证
在测试视觉惯性里程计(VIO)算法时,遇到说明书与实际IMU的LSB不匹配,导致位姿发散的问题。于是就写验证了一下,结果是角速度的最小刻度有问题。这里就简单记录一下使用积分法对IMU(陀螺仪&加速度计) LSB(Least Significant Bit)验证,本文只涉及一维标量的积分,而不是三维向量积分。
积分算法
数学公式比较简单,角度积分
θt=∫0tω dt
\theta_t = \int_{0}^{t} \omega \ dt
θt=∫0tω dt速度、位置积分
vt=∫0ta dtpt=∫0tv dt
v_t = \int_{0}^{t} a \ dt \\ p_t = \int_{0}^{t} v \ dt
vt=∫0ta dtpt=∫0tv dt实际积分时,dtdtdt并不是无穷小的,我们可以将积分写成求和形式,如:
θt=∑0tω dt
\theta_t = \sum_{0}^{t} \omega \ dt
θt=0∑tω dt 这里 dtdtdt 为传感器采样间隔,或者数据获取间隔,单位(秒),注意这里的角速度单位为:度/秒。位置积分中将速度改为两个时刻的均值速度。
static float angle_it = 0;static float vel_it = 0;static float dist_it = 0;float angle_integral(float ang_vel, float dt){angle_it += ang_vel * dt;return angle_it;}float dist_integral(float accl, float dt){float v_prev = vel_it;vel_it += accl * dt;dist_it += (v_prev + vel_it) * dt / 2.0;return dist_it;}
测试方法
-
角速度测试
将带imu的设备,沿zzz轴(指向天空或者地面)中等速度旋转一定的角度并停止(如:90度、180度),查看上述代码打印的角度积分的绝对值是否误差比较小(一般误差<5%<5\%<5%,和imu精度有关),如果是则角加速度LSB正常。 -
加速度测试
将带imu的设备,沿着xxx或yyy轴(水平方向),以一定的加速度运动一定的距离并停止,查看上述代码打印的位置积分的绝对值与实际的距离是否误差比较小(一般误差<5%<5\%<5%),如果是则加速度LSB正常。
以上可以多次测试,单次测试时间一般在5s~20s内,验证最小的误差范围。
