<论文阅读>Inertial-Only Optimization for Visual-Inertial Initialization

本文提出一种新的视觉惯性初始化方法,通过纯视觉初始化获得无尺度轨迹,再进行纯惯性优化以估计IMU参数,最后结合两者进行联合优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们工作的主要贡献是:

  1. 考虑IMU噪声的概率模型的情况下,将视觉-惯性初始化问题表述为只考虑惯性的最优估计问题。
  2. 我们一次性求解了所有的惯性参数,避免了解耦估计所产生的不一致性。这使得所有的估计都一致。
  3. 我们不做任何初始速度和姿态的假设,这使得我们的方法适用于任何初始情况。
  4. 我们不假设IMU偏差为零,相反,我们将它们的已知信息编码为被我们的MAP估计所利用的概率先验。

最大后验初始化 MAP(maximum-a-posteriori)

适当考虑了所有传感器的噪声特性,得到了所有变量的最大后验联合估计。由于其强烈的非线性特性,VI-BA(visual-inertial bundle adjustment)算法主要局限性是需要一个好的种子来快速收敛,避免陷入局部极小值。基于最小二乘估计的联合和不联合初始化方法表明,VI-BA极大地改善了它们的初始解。

我们的主要目标是更进一步,在初始化时也使用MAP估算,正确使用传感器噪声模型。
我们的新初始化方法基于以下思想:

  • 尽管BA是非线性的,单目SLAM是成熟的且是足以获得非常精确的运动初始值的解决方案,但是其测量值是缺少尺度的。
  • 视觉SLAM轨迹的不确定性比IMU的不确定性小得多,可以在IMU变量的第一次求解时忽略不计。因此,我们只执行惯性MAP估计,以缺少尺度的视觉SLAM轨迹为常数
  • 我们采用了一种参数化方法来明确地表示和优化单目SLAM尺度的解决方案。
  • 我们在一个步骤同时优化所有的IMU变量,考虑位置,线速度和角速度积分项之间的的交叉协方差。

我们的初始化方法可以分为三个步骤:

  1. Vision-only MAP estimation:使用BA初始化并运行短时间(通常是2秒)的单目ORB-SLAM,以获得一个纯视觉MAP估算的 up-to-scale。同时,计算关键帧间的IMU预积分及其协方差。
  2. Inertial-only MAP estimation:仅针对惯性的优化,使IMU轨迹与ORB-SLAM轨迹对齐,找到尺度,关键帧的速度、重力方向和IMU偏差 biases。
  3. Visual-inertial MAP estimation:将上一步的解作为完整VI-BA的种子,得到联合最优解。

1. Vision-only MAP estimation

我们初始化纯单目SLAM,使用与ORB-SLAM相同的程序来寻找初始运动。在两个初始帧之间使用ORB描述符进行快速点匹配,建立了基本矩阵和单应性模型并进行了评分,得分较高的一种用于寻找初始运动并对特征进行三角化处理。

与ORB-SLAM的唯一区别是,我们以更高的频率强制关键帧插入(4 Hz ~ 10 Hz),因为积分时间很短,IMU在关键帧之间的预积分具有较低的不确定性。在这段时间之后,我们会有一个由10个关键帧和数百个点组成的缺少尺度的地图,它们都已经经过BA优化。

使用视觉IMU校准,将缺少尺度的关键帧姿态转换到body(或IMU)参考系下。这些body坐标系下的位姿被定义为 T ˉ 0 : k = [ R , p ˉ ] 0 : k \bar{T}_{0:k}=[R,\bar{p}]_{0:k} Tˉ0:k=[R,pˉ]0:k,这里的 R i ∈ S O ( 3 ) R_i \in SO(3) RiSO(3)是从第 i i i个body坐标系到world坐标系的旋转矩阵, p ˉ i ∈ R 3 \bar{p}_i \in \mathbb R^3 pˉiR3是在第 i i i个body坐标系下的无尺度位置。


2. Inertial-only MAP Estimation

这一步的目标是获得IMU参数的最优估计,从MAP估计的意义上来说,利用上一步视觉得到的无尺度上的轨迹。因为我们无法很好的猜测IMU的参数作为VI-BA的初值,因为其容易陷入局部最小值。

折中的解决方案是边缘化点(仅仅使用其带来的变量,不参与优化过程),以获得一个先验的轨迹,和它的(完全稠密)协方差矩阵,并在优化IMU参数时使用它。

我们选择了一个更有效的解决方案,认为轨迹位姿是固定的,执行一个纯IMU的优化。要找到的惯性参数为:
X k = { s , R w g , b , v ˉ 0 : k } \mathcal X_k = \{s,R_{wg},b,\bar{v}_{0:k}\} Xk={s,Rwg,b,vˉ0:k}其中 s ∈ R 3 s \in \mathbb R^3 sR3是纯视觉中的尺度因子, R w g ∈ S O ( 3 ) R_{wg} \in SO(3) RwgSO(3)是重力方向, b = ( b a , b g ) ∈ R 6 b=(b^a,b^g) \in \mathbb R^6 b=(ba,bg)R6是加速度和角速度的偏差, v ˉ 0 : k ∈ R 3 \bar{v}_{0:k} \in \mathbb R^3 vˉ0:kR3代表在body坐标系下每一帧无尺度的速度。

我们更喜欢使用无尺度的速度 v ˉ i \bar{v}_i vˉi,而不是真实速度 v i = s v ˉ i v_i=s\bar{v}_i vi=svˉi,因为它的初始化过程更加简单。:由于初始化过程仅为1-2秒,且随机噪声几乎没有影响,所以所有关键帧的偏差都被假定为常量。

我们定义 L i , j \mathcal L_{i,j} Li,j为IMU从第 i i i帧到第 j j j帧之间的预积分, L 0 , k \mathcal L_{0,k} L0,k表示在初始化窗口的连续关键帧之间的预积分。
有了定义的状态和测量值,我们可以制定一个MAP估计问题,其中后验分布是:
p ( X k ∣ L 0 : k ) ∝ p ( L 0 , k ∣ X k ) p ( X k ) p(\mathcal X_k|\mathcal L_{0:k}) ∝ p(\mathcal L_{0,k}|\mathcal X_k)p(\mathcal X_k) p(XkL0:k)p(L0,kXk)p(Xk)其中, p ( L 0 , k ∣ X k ) p(\mathcal L_{0,k}|\mathcal X_k) p(L0,kXk)表示在给定第k帧IMU数据的情况下, 从0到k帧的可能的IMU测量值分布可能性。 p ( X k ) p(\mathcal X_k) p(Xk)为IMU状态的先验。考虑到测量值之间相互独立,可以将其分解为: p ( L 0 : k ∣ X k ) = ∏ i = 1 k ( p ( L i − 1 , i ∣ s , g d i r , b , v i − 1 , v i ) ) p(\mathcal L_{0:k}|\mathcal X_k) = \prod_{i=1}^k(p(\mathcal L_{i-1,i}|s,g_{dir},b,v_{i-1},v_i)) p(L0:kXk)=i=1k(p(Li1,is,gdir,b,vi1,vi))我们需要找到参数使后验概率最大,意味着使其负对数的值更小: X k ∗ = a r g m a x X k   p ( X k ∣ L 0 : k ) = a r g m i n X k ( − l o g ( p ( X k ) ) − ∑ i = 1 k l o g ( p ( L i − 1 , i ∣ s , g d i r , b , v i − 1 , v i ) ) ) \mathcal X_k ^* = arg\underset{\mathcal X_k}{max} \, p(\mathcal X_k|\mathcal L_{0:k})=arg\underset{\mathcal X_k}{min}(-log(p(\mathcal X_k))-\sum_{i=1}^klog(p(\mathcal L_{i-1,i}|s,g_{dir},b,v_{i-1},v_i))) Xk=argXkmaxp(XkL0:k)=argXkmin(log(p(Xk))i=1klog(p(Li1,is,gdir,b,vi1,vi)))因为假设IMU的预积分都是服从高斯分布的,则MAP问题等价于:
X k ∗ = a r g m i n X k ( ∥ r p ∥ ∑ p 2 + ∑ i + 1 k ∥ r L i − 1 , i ∥ ∑ L i − 1 , i 2 ) \mathcal X_k ^* = arg\underset{\mathcal X_k}{min} \left({\lVert r_p \rVert^2_{\sum_p}+\sum^k_{i+1}\lVert r_{\mathcal L_{i-1,i}}\rVert^2_{\sum_{\mathcal L_{i-1,i}}}}\right) Xk=argXkmin(rpp2+i+1krLi1,iLi1,i2)其中, r p r_p rp r L i − 1 , i r_{\mathcal L_{i-1,i}} rLi1,i为先验值和IMU测量值的残差,而 ∑ p \sum_p p ∑ L i − 1 , i \sum_{\mathcal L_{i-1,i}} Li1,i为他们的协方差。
在本次优化的过程中,不在考虑视觉投影误差,只有IMU的误差。因为其相互独立,使用robust核函数是没有意义的,反而会减慢优化速度。我们定义旋转矩阵,速度,位移的误差如下:
r L i − 1 , i = [ r Δ R i , j , r Δ v i , j , r Δ p i , j ] r_{\mathcal L_{i-1,i}}=[r_{\Delta R_{i,j}},r_{\Delta v_{i,j}},r_{\Delta p_{i,j}}] rLi1,i=[rΔRi,j,rΔvi,j,rΔpi,j]详情可参考<VIO残差函数的构建以及IMU预积分和协方差传递>

众所周知,在文献中,重力和加速度计的偏差往往是耦合的,在大多数情况下很难区分。为了避免这个问题,一些技术在初始化过程中忽略了加速度计的偏差,假设为零值。而另一些技术则等待很长时间来保证它是可观察到的。在ORBSLAM3的IMU相关公式中,并没有随机游走,且在两个关键帧之间,偏差bias为常数。

在这方面,我们采取了稳健的方法:我们将 b a b^a ba作为需要优化的参数,添加了其先验误差, r p = ∥ b a ∥ ∑ p 2 r_p=\lVert b^a \rVert^2_{\sum_p} rp=bap2,如果运动时没有足够的信息去估计该偏差,其先验会保证他的测量值接近于0,如果运动使得 b a b^a ba可被观察到,则其测量值会逐渐趋近于真值。 b g b^g bg的先验是不需要的,因为他可以很好的在关键帧的方向角上得到,也可以从陀螺仪上读到。

因为我们需要解决一个非线性优化问题,因此需要一个惯性参数的初始值。因此我们初始化偏差等于0,然而重力方向是沿着加速度计的平均值初始化的,加速度值通常要比重力更小。

尺度因子需要初始化得足够接近它的真值才能保证收敛,但是我们并没有初始的估计。考虑到纯IMU的优化优点(5ms),我们同时启动3个初始尺度的优化,对应的中值深度分别为1,4和16米,按照残差定义保留最小的残差方案。我们的结果表明,使用这个尺度值范围,我们的方法能够在广泛的场景中收敛。在优化结束时,帧位和速度和3D地图点将根据找到的尺度进行缩放,并旋转以使z轴与估计的重力方向对齐,用新的偏置bias重复估计IMU预积分,可以减少未来的线性化误差。


3. Visual-Inertial MAP Estimation

纯惯性优化提供了一种足够精确的估计,可作为第一次视觉-惯性BA的初值,确保其收敛。重力加速度和尺度并不会被直接优化,因为他们隐藏在关键帧的pose中。
在这里插入图片描述
相比较《Fast and robust initialization for visual-inertial SLAM》,此步骤取代BA1&2步骤。事实上,优化是完全一样的,只不过先前是求解一个线性化系统,而现在是一个MAP求解问题,初始值不同。

我们注意到,所有初始化步骤都是在一个并行线程中执行的,不会对实时跟踪线程产生任何影响。一旦优化完成,系统已经初始化,将从视觉SLAM转向视觉-惯性SLAM。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头队长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值