踩坑总结!因子图优化SLAM研究方向归纳
作者丨三川小哥@知乎
来源丨https://zhuanlan.zhihu.com/p/53972892
编辑丨3D视觉工坊
兄弟们,我正在崩溃的边缘,不过我还在撑着。因为我想在因子图优化方向发一篇文章(泪目)。
先絮叨两句我的情况吧~
我在因子图优化这个坑里蹲了半年多了吧!目前仍然没有找到适合我的论文点。因为走过很多弯路,把很多时间浪费在无关紧要的地方。我写这篇文章的目的就是,想让兄弟们踩着我的肩膀继续网上冲,我可能扛不住了(再次泪目),但是我希望能看到这篇文章的你(☞)能坚持下去。
我后面分三个部分说:
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~~~。
这时候有点丧。
要发论文啊,我的天哪,时间都过去这么久了。
是不是方法不对啊,我上一篇时怎么发表出来的呢,总结一下看看呗。
三川:论文怎么找点子(https://www.zhihu.com/question/34903516/answer/497757056)
按照我总结的方法还是找不到点子,都是骗人的,哼,我还骗了别人,呜呜呜~~~
过了一段时间,看到刘富强把那本书翻译出来了,买了看看,没懂...
又过了一段时间,找到了少磷兄专门修改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。
毕业两年了,补充一下 2021年8月31日
我工作方向是软件优化加速,如果再给我一次读研机会,我觉得对现有开源库做优化加速是个好方向,比如:
+ 把orb slam v2的运行速度提升十倍;
+把ceres或g2o速度提升十倍(这个有点难)
+把isam loam elasticfusion速度提升十倍;
怎么样,思路简单吧,一招吃遍天。
工作简单,价值无限,实实在在的,我现在就想找个开源库一通优化,给社会做贡献,可步入社会后,铜臭熏心啊,有点技术了,却没了土壤。……
我等凡人读研,就是要做做这种笨功夫,看起来呆呆的活。
我就是因为太浮躁,浪费三年好时光,朝三暮四,没做出来成绩。
“悲夫,后之视今,亦如今之视昔”
本文仅做学术分享,如有侵权,请联系删文。
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
3D视觉工坊精品课程官网:3dcver.com
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
16.基于Open3D的点云处理入门与实战教程
17.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿,加微信:dddvision
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近6000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
踩坑总结!因子图优化SLAM研究方向归纳相关推荐
- 因子图优化 SLAM 研究方向归纳
转载自:https://zhuanlan.zhihu.com/p/53972892 因子图优化 SLAM 研究方向归纳 三川小哥 OmniVision 算法优化工程师 兄弟们,我正在崩溃的边缘,不过我 ...
- windows批处理:if else的踩坑点及排版优化
参考: https://www.jianshu.com/p/f0bde7d355a4 总结: 见参考文章
- 【踩坑记录】实体机器人运行Cartographer 3D Slam(深度摄像头)--未解决
[运行背景] ROS1.0 20.04 noetic 机器人:NXRobo SPARK-T 安装cartographer请看: [安装学习]安装Cartographer ROS(noetic)_Ho ...
- TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)
本文作者是阿莱克西斯,原载于知乎,雷锋网(公众号:雷锋网)获得授权转载. (前排提醒,本文的人文内容部分稍稍带有艺术加工,请保持一定的幽默感进行阅读) 关注我最近想法的同学应该知道我最近都在把玩 TV ...
- [视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录
[视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录 问题描述: 在学习SlamBook2-ch3中对Eigen矩阵运算包内容时,编写好相关代码 ...
- 一起做激光SLAM[六]isam于SLAM位姿因子图优化的使用
本节目标:学习gtsam与isam在二位位姿pose2和三维位姿pose3上的使用,并将isam用于位姿的因子图优化. 预期效果:将ICP匹配带来的瞬间位移变成对之前累积误差的消除.蓝色ICP无图优化 ...
- 【踩坑记录】仿真环境使用小车进行Cartographer 3D Slam(深度摄像头)
[运行背景] ROS1 20.04 noetic 安装cartographer请看: [安装学习]安装Cartographer ROS(noetic)_Howe_xixi的博客-CSDN博客网上使用n ...
- 使用RKNN部署CRNN模型踩坑优化历程
序言 前段时间使用RKNN部署一个文字识别模型,因为文字识别模型用的是目前最普遍使用的CRNN模型,结构也相对简单:卷积+LSTM+全连接,都是比较元老级别的算子,本来已经部署的过程会很顺利,结果发现 ...
- unity webgl开发踩坑——从开发、发布到优化
目录 前言 环境 unity webgl的一些注意点 videoplayer修改-->Video Player WebGL插件 text修改--解决不能显示汉字问题 制作.读取ab包 unity ...
最新文章
- 如何优雅地退出python程序
- Express踩坑系列之上传文件
- js node 打包mac应用_混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用
- 全球及中国无服务器应用程序行业应用调研与投资前景规划报告2022版
- GTK实现文本翻页(dailyNote.c)
- .net 编译、反编译、查壳、脱壳、反混淆工具
- win10系统远程ubuntu(linux)桌面
- 用SQL语言操作数据
- (转)币圈人物志 BM(EOS,BTS,Steem缔造者)
- html5 web报表工具,Web报表工具的填报功能
- Capture CIS 软件功能介绍
- 一文读懂沃尔玛、腾讯、京东、浙商银行在供应链领域的区块链应用实例
- Xshell的一个轻量且免费的替代品ConEmu
- 盒子竞争激烈 Apple TV在美仅排第三
- GUI界面的视频帧提取
- bugku-post
- 因为意外的遇到文件尾,PS无法打开怎么办?
- 找出阿里云服务器无法访问淘宝司拍页面原因
- no module named yum有效解决办法
- 方胜山《cisco网络故障处理手册》
热门文章
- 爬虫学习笔记1——Python基本语法
- Transfer Learning for NLP with TensorFlow Hub
- 【SVM分类】基于支持向量机实现数据分类附matlab代码
- 基于多平面先验的高效VIO工作开源
- vue下载表格到本地
- 城市地下综合管廊安全运营与智慧管控的分层架构研究
- 2009-2017年中国水资源数据可视化(python+pyecharts)
- 三菱FX3U 485BD与施耐德ATV71变频器通讯程序
- python点击屏幕坐标_Appium+python自动化(二十二)- 三个臭皮匠顶个诸葛亮-控件坐标获取(超详解)...
- 关于云服务器那些事:如何保障中小企业的安全,顺利上云