VINS-Mono-后端优化 (四:边缘化原理)


滑窗中固定只能有11帧,当来了新的帧的时候旧的帧就需要抹掉,但是不能直接把旧的帧的全部信息抹掉,因为旧的帧的经历过11次优化,其地图点中的优化信息是有用,边缘化的操作就是为了只把最旧帧的变量去掉,但是保留其对应的优化信息留在窗口里面,因为那些信息仍然具有约束作用

边缘化舒尔补

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时公式已经没有 δ x a \delta x_{a} δxa 了,但是保留了 δ x a \delta x_{a} δxa 带来的约束
δ x b \delta x_{b} δxb 左边的矩阵当作新的 H H H,并分解为 J T J J^{T}J JTJ,右边则分解为 J T e J^{T}e JTe

边缘化更详细的讲解看这篇文章 SLAM中的marginalization 和 Schur complement

H 矩阵的构造

由于这个 H H H 矩阵是在ceres中计算的,不会暴露出来,由于这里需要进行边缘化,所以只能自己计算 H H H 矩阵,这基本算是一个手写后端的部分了
有了 H H H 矩阵就可以迭代优化了, H Δ x = g H\Delta x=g HΔx=g

讲一下如何构建这个 H H H 矩阵,现在存在预积分约束和重投影约束,每个约束都存在 H = J T J H=J^{T}J H=JTJ,但是现在需要一个大的 H H H 矩阵

通过把累加的方式构成这个大的矩阵 H = Σ J T J H=\Sigma J^{T}J H=ΣJTJ
J = ∂ e ∂ x J=\frac{\partial e }{\partial x} J=xe

状态向量有, λ \lambda λ 是地图点
在这里插入图片描述
就是把每个 J J J都累加起来构成这个大 H H H

J T J J^{T}J JTJ 的形式如这张图
在这里插入图片描述

在这里插入图片描述
代码中要关注一下是怎么累加的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

m m m 是地图点, p p p 是位姿,可以看到 p 1 p1 p1 的量被边缘化掉了,然后对 m 1 m1 m1 p 2 p2 p2 建立了关系,原本 m 1 m1 m1,和 p 2 p2 p2 是没有关系的,边缘化后就建立了约束,关系图可以看下面
在这里插入图片描述
这里可以看出,边缘化会带来 fill-in 现象,把原先的稀疏矩阵变成了稠密矩阵,因为会不停地带来额外的约束

VINS中会把地图点也边缘化掉,只剩位姿,速度和零偏这些状态量的约束保留,因为地图点的数量太多了,这样可以减少矩阵的维数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rhys___

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

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

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

打赏作者

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

抵扣说明:

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

余额充值