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

转载自: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。

  • 14
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值