标定方法与细节理解
Vins流程
- 1.前端图像跟踪
- 2.后端非线性优化
- 3.闭环检测
- 4.闭环优化
图像和 IMU 预处理
图像:提取图像 Harris 角点,利用金字塔光流跟踪相邻帧,通过 RANSAC 去除异常点,最后将跟踪到的特征点 push 到图像队列中,并通知后端进行处理。IMU:将 IMU 数据进行积分,得到当前时刻的位置、速度和旋转(PVQ),同时计算在后端优化中将用到的相邻帧的预积分增量,及预积分误差的Jacobian 矩阵和协方差项。
初始化
首先,利用 SFM 进行纯视觉估计滑窗内所有帧的位姿及 3D 点逆深度,最后与 IMU 预积分进行对齐求解初始化参数。
后端滑窗优化
将视觉约束、 IMU 约束和闭环约束放在一个大的目标函数中进行非线性优化,求解滑窗内所有帧的 PVQ、bias 等。
闭环检测和优化
利用 DBoW 进行闭环检测,当检测成功后进行重定位,最后对整个相机轨迹进行闭环优化。
后端非线性优化
后端非线性优化,主要包括以下几个部分:
IMU预积分
为什么需要IMU预积分:IMU测量加速度和角速度,采样频率高(100 ~ 1000 Hz),如果在VIO中直接将IMU每个时间戳都加入优化会导致,计算量太大。
于是在帧与帧之间,把多个高频IMU预先整合为一个中间约束,而将原来上百个IMU读数压缩为一个“预积分因子”,用于紧耦合优化。
这里的加速度,不是汽车或飞机的实际加速度。
IMU 就像一个悬浮的小球,在静止时受到一个向上的力,等于 −g⋅R,防止它坠落。它测到的不是“真实加速度”,而是一个“非惯性力”:相当于地球推着它不下落(支持力)。
预积分增量
IMU预积分
将第 k 帧和第 k+1 帧之间的所有 IMU 进行积分,可得第 k+1 帧的位置、速度和旋转(PVQ),作为视觉估计的初始值,这里的旋转采用的四元数。
其中, a t ^ , ω t ^ \hat{a_t}, \hat{\omega_t} at^,ωt^ 为IMU测量的加速度和角速度,是在Body自身坐标系,world坐标系是IMU所在的惯导系(注意-g是世界坐标系的,旋转也是在世界坐标系表达的)
上图的最后一个旋转,是在世界坐标系上采用的四元数的表达
其中 δ q \delta \mathbf{q} δq 是通过积分角速度得到的微小旋转四元数。
⊗ 表示 四元数乘法
q 1 = ( w 1 , v 1 ) \mathbf{q}_1 = (w_1, \mathbf{v}_1) q1=(w1,v1),其中 v 1 = ( x 1 , y 1 , z 1 ) \mathbf{v}_1 = (x_1, y_1, z_1) v1=(x1,y1,z1) 是虚部, w 1 w_1 w1 是实部;
预积分误差
雅可比矩阵:用于误差传播与优化 预积分状态不是一个简单的积分结果,而是一个在初始状态扰动下的近似函数。雅可比矩阵描述了:
预积分增量 Δ R , Δ v , Δ p \Delta \mathbf{R}, \Delta \mathbf{v}, \Delta \mathbf{p} ΔR,Δv,Δp对系统状态变量(如 bias, orientation)的偏导数。 通过这些雅可比,可以在非线性优化中正确传播扰动对观测残差的影响。举例:
∂ Δ p ∂ δ b a \frac{\partial \Delta \mathbf{p}}{\partial \delta b_a} ∂δba∂Δp 表示加速度bias变化如何影响位置预积分结果。 在求解优化问题时,需要构建残差函数并对其进行线性化,雅可比就是残差对状态的导数。
预积分误差定义
雅可比矩阵建模
误差对优化状态(如姿态、速度、位置、偏置)求导,得到雅可比矩阵J。我们主要关心偏置对预积分变量的影响(因为偏置通常在滑窗中参与优化):
右扰动模型的解释:
- 为什么不是 e x p ( Δ 𝑅 ⋅ 𝐽 ⋅ 𝛿 𝑏 𝑔 ) ? exp(Δ𝑅⋅𝐽⋅𝛿𝑏_𝑔)? exp(ΔR⋅J⋅𝛿bg)?
对于任意旋转矩阵 𝑅∈𝑆𝑂(3)都有:
𝑅 − 1 = 𝑅 ⊤ 𝑅^{−1}=𝑅^⊤ R−1=R⊤
协方差:误差不确定性的量化 预积分的误差是随机过程积分后累积的,即: IMU 本身存在高频噪声。 bias 也在缓慢随机漂移。通过误差状态模型(通常是线性化的随机过程模型),可以推导出误差协方差 P \mathbf{P} P。它描述了: 我们对当前预积分结果有多大信任(协方差越小,信任越高)。
优化中用于加权残差项(通过信息矩阵 Λ = P − 1 \mathbf{\Lambda} = \mathbf{P}^{-1} Λ=P−1)。因此协方差矩阵是优化中衡量误差重要性的关键指标。
已知误差的状态向量为 δ x \delta x δx, 误差的协方差为
- 推导过程
误差状态转移矩阵 F 的确定始于对系统动力学行为的精确建模。这涉及到对系统中各个状态变量之间关系的深入理解。
状态变量定义:明确系统中的状态变量,如位置、速度、姿态以及传感器偏置等。
系统方程建立:依据物理定律,如牛顿运动定律或旋转动力学方程,建立状态变量之间的微分方程关系。具体就不详细记录了,下次看到笔记再查吧
不行了 头晕了 怎么全是公式,接下来要看损失函数