SLAM中的marginalization 和 Schur complement

SLAM中的marginalization 和 Schur complement在视觉 SLAM 的很多论文中 会大量或者偶尔出现 marginalizat 这个词 翻译为边缘化 有的论文是特地要用它 比如 slidingwindo 2 okvis 3 dso 4 而有的论文是简单的提到 比如 g2o 1 orbslam 因此 很有必要对这个概念进行了解

在视觉SLAM的很多论文中,会大量或者偶尔出现marginalization这个词(翻译为边缘化),有的论文是特地要用它,比如sliding window slam [2], okvis [3], dso [4]。而有的论文是简单的提到,比如g2o[1],orbslam。因此,很有必要对这个概念进行了解。

Gabe Sibley [2]在他们的论文中就明确的说明了这个问题。直接丢掉变量,就导致损失了信息,frame1可能能更多的约束相邻的frame,直接丢掉的方式就破坏了这些约束。在SLAM中,一般概率模型都是建模成高斯分布,如相机的位姿都是一个高斯分布,轨迹和特征点形成了一个多元高斯分布p(x1,x2,x3,pt1…),然后图优化或者BA就从一个概率问题变成一个最小二乘问题。因此,从这个多元高斯分布中去掉一个变量的正确做法是把他从这个多元高斯分布中marginalize out.

当然,上面如果你想去更新marg变量也是可以的,不是说只能计算 x b x_b xb,因为方程是完整的,只是这里我们强调只计算 x b x_b xb。在g2o[1]的论文III-D部分,公式(25),(26)就是两部分都计算:
这里写图片描述
他这里是把变量分为相机位姿 x p x_p xp和特征点 x l x_l xl两部分,然后利用schur complement先算相机位姿,再算特征点位姿,充分利用H矩阵的稀疏性加速计算。g2o算ba的example程序里就是把特征点设置为marginalize,这个在orbslam的local ba里也能看到。然而这种用法不像我们前面提到的那样真正marg out变量,这里被设为marg的那些特征点还是计算了值。这和我们这里的主题是有点点不同的。

虽然上面这些总结在marg的过程中很重要,但是我认为更重要的是关于marg过程中consistency的讨论。dso论文中提到计算H矩阵的雅克比时用FEJ (first estimate jacobian) [5],okvis论文中也提到要

fix the linearization point around x 0 x_0 x0, the value of x x x at the time of marginalization.

因为迭代过程中,状态变量会被不断更新,计算雅克比时我们要fix the linearization point。 所谓linearization point就是线性化时的状态变量,即求雅克比时的变量,因为计算雅克比是为了泰勒展开对方程进行线性化。我们要固定在点x0(marg 时的状态变量)附近去计算雅克比,而不是每次迭代更新以后的x。[7]是2016年IROS的论文,对这个原因表述的很清楚也容易阅读(套用张腾大神的话包教包会,感谢他的推荐), [6][5]是两篇年代更久一点的论文,这两篇论文都很有裨益,但是难读,单单这个consistency分析就值得仔细去看看,因为它直接涉及到优化结果。

由于我还没真正接触过first estimate jocabian的代码,所以对它理解还是停留在paper上,可能理解有偏差,还需要读完dso的代码,加深理解以后,我再对博客进行补充。如果有读者很熟悉这部分,欢迎指教,谢谢。

(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215400.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午2:00
下一篇 2026年3月18日 下午2:01


相关推荐

  • kafka删除topic数据_kafka查看topic列表

    kafka删除topic数据_kafka查看topic列表 kafka删除topic提示markedfordeletion [html] viewplain copy [root@logSer config]# kafka-topics.sh –delete –zookeeper localhost:2181 –topic test-group        Topic test-group…

    2022年10月9日
    4
  • DWD层总结

    DWD层总结DWD层:4步建模作用:1)对用户行为数据进行解析2)对核心数据进行判空过滤3)对业务数据采用维度模型重新建模。一、DWD层数据分析首先DWD层数据都来源于ODS层。具体数据可分为两类1)用户行为数据(多为json)2)业务数据1、用户行为数据业务行为数据一般都是来源于前端页面的埋点日志信息分为启动日志和普通日志启动日志表中每行数据对应一个启动记录,一个启动记录应该包含日志中的公共信息和启动信息。先将所有包含start字段的日志过滤出来,然后使用get_json_object

    2022年6月26日
    54
  • 模糊聚类分析方法

    模糊聚类分析方法模糊数学模型系列博文 1 基本概念 隶属函数 模糊集合的表示方法 模糊关系 模糊矩阵 2 模糊模式识别 海明贴近度 欧几里得贴近度 黎曼贴近度 格贴近度 最大隶属原则 择近原则 3 模糊聚类分析方法 模糊等价矩阵 模糊相似矩阵 传递闭包法 布尔矩阵法 4 模糊决策分析方法在工程技术和经济管理中 常常需要对某些指标按照一定的标准 相似的程度或亲疏关系等 进行分类处理

    2026年3月26日
    1
  • Android中Handler的使用

    Android中Handler的使用Handler 是 Android 中引入的一种让开发者参与处理线程中消息循环的机制 每个 Hanlder 都关联了一个线程 每个线程内部都维护了一个消息队列 MessageQueue 这样 Handler 实际上也就关联了一个消息队列 可以通过 Handler 将 Message 和 Runnable 对象发送到该 Handler 所关联线程的 MessageQueue 消息队列 中 然后在 Hanlder 的 handleMessag 中处理消息

    2026年3月18日
    2
  • mvc的各个部分都有哪些技术实现_计算机植入木马程序

    mvc的各个部分都有哪些技术实现_计算机植入木马程序MVC三个基本部分:模型(Model)、视图(View)和控制器(Controller)Model:负责业务对象与数据库的映射(ORM)View:负责与用户的交互Controller:接受用户的输入调用模型和视图完成用户的请求MVTDjango框架的MTV设计模式借鉴了MVC框架的思想,三部分为:Model、Template和ViewModel(模型):负责业务对象与数据库的对象(…

    2025年6月12日
    7
  • dns备用服务器信息,dns服务器地址(dns首选和备用填多少)

    dns备用服务器信息,dns服务器地址(dns首选和备用填多少)dns服务器地址DNS是计算机域名体系(DomainNameSystem或DomainNameService)的缩写,它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功用的服务器。其中域名有必要对应一个IP地址,而IP地址不一定只对应一个域名。域名体系选用相似目录树的等级结构。域名服务器为客户机/服务器方式中的服务器方,它主要有…

    2022年6月8日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号