转载自:https://zhuanlan.zhihu.com/p/53972892

因子图优化 SLAM 研究方向归纳

三川小哥

OmniVision 算法优化工程师

兄弟们,我正在崩溃的边缘,不过我还在撑着。因为我想在因子图优化方向发一篇文章(泪目)。

先絮叨两句我的情况吧~

我在因子图优化这个坑里蹲了半年多了吧!目前仍然没有找到适合我的论文点。因为走过很多弯路,把很多时间浪费在无关紧要的地方。我写这篇文章的目的就是,想让兄弟们踩着我的肩膀继续网上冲,我可能扛不住了(再次泪目),但是我希望能看到这篇文章的你(☞)能坚持下去。

我后面分三个部分说:

1. 怎么快速入门。
2. 有哪些研究点可以挖掘。
3. 有哪些坑需要避过。

1.我的苦大仇深

我刚开始时因为看cartographer的那篇论文,根据里面的介绍找到了平方根sam和isam2.

然后顺藤摸瓜找到了gtsam,还发现了一本书<factor graphs for robot perception>

factor graphs for robot perception

心里一合计,有论文有教材还有开源的框架,岂不美哉。就它了

然后我给导师汇报说:“SLAM经历了三个阶段

  1. 滤波阶段:局部信息融合

2. 图优化阶段:全局一致性优化

3. 增量平滑阶段:用贝叶斯树维护一个动态更新的数,兼具滤波的速度和图优化的精度

而我的研究方向正处于第三个阶段,代表先进生产力的发展方向”

老师拍拍我的肩膀说:“有想法,万元红包等着你”。

然后就开始了漫长的蹲坑。

我的错误路线:

我首先把bayes tree那几篇论文打印了出来,然后看看看,看不懂。

估计作者没有把细节说出来,细节在哪呢,对了,开源的框架GTsam,下载编译配置,学习库文件。哇哦,优美的C++,不错,写的很好。就是不太能看懂。

怎么办?看官方文档,有一本书啊,啊呼呼,打印出来好好看,暑假带回家,全部推到一遍<什么因子图,平方根矩阵,稀疏性,边缘化,增量优化,贝叶斯书,小弦,小团>一个概念一个概念过。额~~~ ,还是看不懂,一点都没懂。

怎么办呢,对了,他不是支持matlab吗,我就先看matlab的程序。matlab用着兼职爽啊,可视化的demo,真优美,嘻嘻,各个都能跑通,呼呼哈。不过源文件还是看不懂。

有点着急了,

怎么办,上网搜搜,一搜还真有个视频教程,泡泡机器人-董卿。这个好啊。先看三遍再说,看完没多大作用,就是简单的介绍了下。

再搜搜,哇,我找到了什么,我找到了作者本人的YouTube讲座视频呦。帅,看五遍。还是MKD~~~。

这时候有点丧。

要发论文啊,我的天哪,时间都过去这么久了。

是不是方法不对啊,我上一篇时怎么发表出来的呢,总结一下看看呗。

三川:论文怎么找点子​

www.zhihu.com

按照我总结的方法还是找不到点子,都是骗人的,哼,我还骗了别人,呜呜呜~~~

过了一段时间,看到刘富强把那本书翻译出来了,买了看看,没懂...

又过了一段时间,找到了少磷兄专门修改gtsam库的,他人员光广,一起建了微信群,他把这个圈子里的人竟然都拉进去了,讨论了几次,未果...

然后我就陷入了“论文-程序-教材书-论文-程序-教材书.......” 之间的切换循环中,(6个月后)直到现在....

好了,说了我的错误路线,就是想让大家吸取下教训“没有咬住一点使劲钻研, 一直在犹豫”

2.怎么快速入门。

下面说下,我建议的正确学习路线:

首先,可以试着用一下gtsam这个库,有个直观的感受。

然后,切记,不要上去就打开库看源文件,这样一来限制你的思维,二来,浪费时间。应该看下那本书,中文翻译的最好,我推荐先看懂isam1中的 因子图构建,然后最好能把因子图的构建方法用matlab实现一下。

能够实现到,Ax=b这个方程。其实因子图的基本思想到这里已经完成了。

后面的那一堆更多的呢,只是对这个方程,以及增量优化这个方程的加速。【所以不要舍本逐末】

然后学习书中的QR分解实现稀疏优化。因为QR分解是能够实现增量平滑优化的最简单方法。如下:

然后再辅助上givens旋转。

这一步也学明白了,再开始看看因子图转成贝叶斯网的过程,即 消元顺序。

最后的最后,如果你能看到这一步,那就再看看 Bayes tree 的构建和更新吧。这块论文写的叫一个糊涂啊,我是没看懂。如果前几步都没学就直接看这里,我估计和我一样,浪费年华啊。

3、有哪些研究点可以挖掘

根据我的浅薄了解,因子图增量平滑,由两个方面可以出文章,算法改进和新的应用。

算法改进方面的研究点

1 首先是isam1,isam1中采用整体优化和增量优化切换的方法优化,那么怎么切换呢,作者采用的是 固定N步,就整体优化一次。哈哈,看到了吧,你可以搞一个更加智能的方法(随机森林判定树啊)来判断什么时候增量平滑,什么时候全局处理。这块还真有兄弟跟进了,我查到了一片AprilSAM,就是在这块做的文章。创新点在下图中小字:

这个文章提出的这几点都可以继续深挖,像批处理和增量模式的切换条件 动态变量冲排序,减少回带次数

2. isam2,即贝叶斯树,这块呢,我个人觉的(意思就是我没看懂),作者不知道是在造概念还是怎么的,里面用了好几种树的转换。流程多效率肯定就低,能否看懂这几种转换之间的关系 然后将其简化,所谓 end-to-end,哈哈哈

3. 关于贝叶斯树的深度调整,如果你仔细看的话就会发现,根据论文中的推导,树的深度会一直增加,那么,能不能吧树的深度调整一下呢。实不相瞒,我开始选定的方向就是贝叶斯树的平衡构建方法。不过 未遂。

新的应用

基于增量平滑的新的应用方向。这里举个例子把,LOAM大家听过吧,我看了下最近的IROS会议中有个兄弟发了一篇文章叫 lego_loam,就是在LOAM的基础上加入了回环检测,后端采用了Gtsam优化。

有哪些坑需要避过去

首先,不要陷入到程序中,gtsam为了面向工程而开发的,不是教程,里面很多内容其实没必要学习,也看不懂,先看论文和书本。

正如导师今早给我说的,"找论文点的时候不要有太多的羁绊,要保持赤纯,代码只是思想的表达,算法思想永远是第一位,爱因斯坦的相对论....."。我的理解是,有一定理论基础后,在理论上推导,我就是深陷入代码之坑了。(为啥呢?因为矫枉过正,我上一篇就是最后编不出代码)。

还由一个大坑,不要直接上去就整贝叶斯树,他只是对增量平滑的一个改进,真正的算法核心就是 因子图的构建信息矩阵的增量优化(增量QR求解)划重点

我的困惑

最后呢,说一个我的困惑,我目前还没找到哪里需要这么实时准确的地图,就是说在跑的局部就需要全局的优化,我自己觉得这样的应用场景肯定是机器人的速度非常之快。

有时候一想其实隔一段时间优化一次也挺好呀。G2o,ceres。【黑人脸】

如果大家选定了这个方向,就抓住一个小点,咬住不放。能不能出文章,我就不敢保证了,因为我还没写出来,但是祝大家都能写出SCI。

因子图优化 SLAM 研究方向归纳相关推荐

  1. 踩坑总结!因子图优化SLAM研究方向归纳

    作者丨三川小哥@知乎 来源丨https://zhuanlan.zhihu.com/p/53972892 编辑丨3D视觉工坊 兄弟们,我正在崩溃的边缘,不过我还在撑着.因为我想在因子图优化方向发一篇文章 ...

  2. 一起做激光SLAM[六]isam于SLAM位姿因子图优化的使用

    本节目标:学习gtsam与isam在二位位姿pose2和三维位姿pose3上的使用,并将isam用于位姿的因子图优化. 预期效果:将ICP匹配带来的瞬间位移变成对之前累积误差的消除.蓝色ICP无图优化 ...

  3. 四.因子图优化学习---对因子图优化的粗浅理解

    专栏系列文章如下: 一.因子图优化学习---董靖博士在深蓝学院的公开课学习(1)_goldqiu的博客-CSDN博客 二.因子图优化学习---董靖博士在深蓝学院的公开课学习(2)_goldqiu的博客 ...

  4. 三.因子图优化学习---董靖博士在泡泡实验室的公开课学习

    专栏系列文章如下: 一.因子图优化学习---董靖博士在深蓝学院的公开课学习(1)_goldqiu的博客-CSDN博客 二.因子图优化学习---董靖博士在深蓝学院的公开课学习(2)_goldqiu的博客 ...

  5. 二.因子图优化学习---董靖博士在深蓝学院的公开课学习(2)

    专栏系列文章如下: https://blog.csdn.net/weixin_36773706/article/details/122440411http://一.因子图优化学习---董靖博士在深蓝学 ...

  6. 一.因子图优化学习---董靖博士在深蓝学院的公开课学习(1)

    各位朋友,新的一年好呀,好好干,出成果!不知不觉从9月份开始写到现在也写了40篇文章了,文章如有诸多问题还请批评指出.随着学习的深入的确发现之前的一些文章有一些问题或者有遗漏的地方,等过年有空再整理下 ...

  7. 因子图优化原理(iSAM、iSAM2论文解析)

    因子图优化原理(iSAM.iSAM2) slam问题 通过贝叶斯网络对slam问题建模 从贝叶斯网络到因子图 非线性最小二乘问题求解 isam1增量QR分解 isam2 结语 slam问题 在介绍因子 ...

  8. 信息矩阵在图优化slam里面的作用

    信息矩阵是一个scalar 表达不确定性 但是信息矩阵是协方差矩阵的一个逆矩阵,这个怎么理解呢?没什么意义,香农形式,这里是推导出来的,只是换了一种数学表达形式,那为什么需要信息矩阵呢? 因为信息矩阵 ...

  9. 【Pytorch的优化器总结归纳】

    文章目录 1.SGD(随机梯度下降) 2.ASGD(随机平均梯度下降) 3.AdaGrad算法 4.AdaDelta算法 5.Rprop(弹性反向传播) 6.RMSProp(Root Mean Squ ...

最新文章

  1. Java爬虫模拟登录——不给我毛概二的H某大学
  2. 右键我的电脑,没有属性,解决方案
  3. mysql一个表几亿数据_如何在mysql 造1亿条记录的大容量数据表?
  4. 三层架构与MVC的区别
  5. Jenkins配置MSBuild时使用环境变量
  6. go-plugin入门
  7. 记录一举一动:PowerShell几行代码实现定期屏幕截屏
  8. 【原创】brew 和 brew cask
  9. DeepDream网络
  10. list转json字符串
  11. 求助微软商店下载的Ubuntu打开后显示目标路径参数错误,进入路径强制打开显示0x80070005错误。各种方法都试验了
  12. Eclipse下找不到“新建Web项目”
  13. html egg mac os 10.7,10.7、10.8 MAC OS原版通用安装教程
  14. matlab初学者_脚本文件调用函数文件
  15. 滑动窗口(java)
  16. 真空密码字典生成器分享
  17. MBP本,完美多分区装双系统图文教程,多分区而不影响苹果系统GUID分区表,图文教程
  18. pc端js根据图片url进行下载单张图片以及批量下载到本地
  19. android--新闻阅读器实现源码
  20. Packet Tracer - 使用 CLI 配置 IOS 入侵防御系统 (IPS)

热门文章

  1. 深度学习入门(二十四)卷积神经网络——填充和步幅
  2. traefik 配置https
  3. 单糖,双糖,多糖,代糖
  4. 蚂蚁森林保护地 支付宝蚂蚁森林保护地区详解 蚂蚁森林保护地到底有哪些?
  5. 电子商务、电子商务项目、电子商务企业商业计划书模板
  6. 企企通与签约「华熙生物」SRM项目,以柔性采购供应链助推企业数字化发展布局
  7. 2009-2017年中国水资源数据可视化(python+pyecharts)
  8. 大数据能做些什么——舍恩伯格纵论大数据时代
  9. UE4 插值FInterpEaseInOut和Ease
  10. linux在线安装软件