批量优化(Batch Bundle adjustment)和滑窗优化(slide window)的区别和联系

深蓝学院《BASALT源码解析》王鹏老师

1.Batch Bundle adjustment

在这里插入图片描述
其中L代表路标3D点,T imu位姿(旋转+平移),v IMU速度,b IMU bias(加速度+角速度)。
红色方块代表视觉的重投影因子,一个视觉的重投影因子把L和两帧联系到一起。
绿色方块代表IMU因子,每个IMU因子会把前后两帧的IMU速度和T还有上一帧bias联系一起,构成约束。
黄色方块代表bias因子,把前后两帧bias构成软约束,认为前后帧bias不会发生突变。

而在VINS中,将IMU因子和bias因子合并构成一个15(9+6)维的IMU因子。

在这里插入图片描述
即:
[ Δ P Δ R Δ V − − − Δ b a Δ b g ] \left[ \begin{array}{c} \Delta P\\ \Delta R\\ \Delta V\\ ---\\ \Delta ba\\ \Delta bg \end{array} \right] ΔPΔRΔVΔbaΔbg

随着相机运动,滑窗内IMU因子越来越多,且3D点被不断创建,导致优化变量越来越多,难以保证实时性。但在机器人运动的过程中,我们更主要关注的是机器人的当前位姿,而不是历史位姿,因为当前位姿信息对于路径规划等更加重要。

所以引出了接下来的滑动窗口优化。

2.Fixed-lag Smoothing(Slide Window Optimization)

在这里插入图片描述
如果需要只关注当前信息,就需要剔除一些变量。在IMU构建的约束是时序信息,并不像ORB中的图优化。因此便不能随意剔除帧和IMU信息,会打破时序性。就像在VINS中的边缘化,每次只能边缘化掉最老帧和次新帧。

在边缘化最老帧时,其实这些最老帧已经被多次优化,那么假设它的状态变量T、v、b已经被很好的估计,因此不需要再参与优化,且与当前帧所构建的视觉约束也较弱,或者就没有约束,可以直接被剔除掉。在ORB中就是这样做的,只优化局部的滑窗,

但是如果直接剔除掉最老帧,则失去了先验信息,那么此时如果整体旋转和平移,是不会影响到相对约束的。也就是零空间问题。

在这里插入图片描述

除非对当前窗口第一帧添加先验,但是会损失大量信息,因此常用的办法是采用概率的方式,将边缘化的状态变量变成剩余变量的后验概率,建立剩余变量之间相对约束关系。这样便可以提升实时性,也能保证系统的精度。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秃头队长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值