1. IMU是什么
IMU(inertial measurement unit)惯性测量单元,是测量物体三轴姿态角(或角速率)以及加速度的装置。
内含陀螺仪gyroscope,加速器accelerator。
IMU和相机一样,也存在内参和外参。IMU很敏感,会受温度、气压、海拔等影响。
常用的VIO的IMU有4个内参:
陀螺仪的噪声,加速器的噪声
陀螺仪的随机游走,加速器的随机游走
1.1 为什么要IMU VIO
半闲居士的回答通透简单:
https://www.pianshen.com/article/628372/
总结:单目SLAM最大的困难是尺度不确定性。为什么?回忆单目做初始化的时候,是通过极线约束2D-2D变换来估计相机的运动。我们知道本质矩阵、基础矩阵都是具有尺度不确定性,所以不管场景放大多少倍,这个运动的变换都是成立的。单目SLAM和真实世界就差一个比例,这个比例在初始化的时候就确定了。
而IMU可以很好的弥补:
- IMU能帮单目确定尺度
- IMU能测量快速的运动(快速运动在单目下会有运动模糊、匹配点不够等问题)
- IMU在相机被遮挡时也能提供短时间的位姿估计
2. 知识回顾
惯性坐标系:惯性坐标系的原点与物体坐标系的原点重合,惯性坐标系的轴平行于世界坐标系的轴。引入了惯性坐标系之后,物体坐标系转换到惯性坐标系只需旋转,从惯性坐标系转换到世界坐标系只需平移
BCH公式(baker-campbell-hausdorff):
加法到乘法(李代数到李群):
乘法到加法(李群到李代数):
高中物理:
3. IMU预积分
陀螺仪测量模型:
其中w是实际值,带bar的是测量值。b为随时间缓慢变化的bias,n为噪声。该模型利用了static world assumption。
加速器测量模型:
其中Rb是惯性坐标,b为随时间缓慢变化的bias,n为噪声。Rbw是世界坐标系转本体坐标系,我们要积分的是世界坐标系的量。
根据模型,我们可以推出IMU积分公式,即推出此时的旋转矩阵、速度以及位置:
旋转:
速度:
位置:
其中
以上为IMU的积分公式。接下来还要注意IMU的采样频率问题。相机的采样频率是明显低于IMU的,IMU可能可以达到几百HZ,而在SLAM中我们通常是求解每个图像时刻的位姿pose,因此对两个图像之间的IMU观测进行累加,可以得到i帧和第j帧的位姿和速度关系。但是在上式积分中,更新速度的时候,需要每个IMU时刻的世界坐标系下的旋转,在更新平移时,需要每个IMU时刻世界坐标系下的速度和旋转。要知道IMU有几百hz,每次都要更新所有状态显然是不合理的。所以我们需要预积分,将imu积分与世界坐标系下的旋转和速度解耦,只需要通过IMU的读数和前一帧的预计分量就可以更新当前的预计分量。简单来说就是计算i时刻和j时刻的速度之差、旋转之差、位置之差: