关于机器人状态估计8-VSLAM工程与VIO工程难点
最近做产设和综述把头都整晕了,本来想认真更新GPU那篇DSP的姊妹篇,突然觉得太长了实在是没有写的欲望,还是写篇杂文算了。。。一看这个标题就知道
首先如果没有关于机器人状态估计(4)-成长路径与能力提升这块基础知识建议自行劝退。。。别往下看了,还差得太远。
之前有提过:
一个完美的VIO,其实是一个既要又要还要且要的东西,非常的恶心:
1.既要位姿准确(ORB-SLAM3, VINS-MONO)
2.又要能够半稠密建图(DSO, DM-VIO)
3.还要能够工程化,克服各种极端情况,ZUPT等 (PR-MONO1)
4.且要低开销(只能在高性能高算力平台上跑的东西根本没有足够商业价值-除自动驾驶,违背VINS/VIO等基础设计宗旨)
这种同时满足1,2,3,4的东西当下是不存在的,但是作为一个正在努力奋战3项全能的小组,还是有必要去给大家避避坑。PS: 我们1/3/4全能的软硬件已经基本成型。
首先讲一下工程的难度递进:
1.二维SLAM(满地都是能跑的代码,主流轮速计+IMU卡尔曼滤波,单点激光或TOF二维网络栅格地图)
2.双目VSLAM+部分传感器松耦(很简单,测距硬件算子市面挺多了,没有测距算子的话开销比较高基本解决不了4,户外调测难度大,不同场景应用基线不同,很容易飘,室外耦合RTK,室内耦合轮速计/imu会好一点,开销更高了。。。)
3.单目VSLAM +部分传感器松耦(开销比双目低,调测起来方便,精度和毛病更多,初始化会被客户与伙伴来回diss,但是比VIO善良多了)
4.多目或全景VSLAM+部分传感器松耦(牛比,牛比还是牛比的好方案,做得好的话鲁棒性极好,好几个师弟在弄这块,不对我的胃口,因为传感端更重了!开销激增,另外不还是得耦合别的传感器,切~~)
5.VIO+部分传感器松耦(这个是我最喜欢的方案,一般尽量要耦合进去个D相机用来建图或者避障,其他要耦合的传感器还是那一些,缺点就是难度太大。。。紧耦合开销也是巨高,建议有能力的话把轮速计也紧耦合进去)
6.双目+VIO+部分传感器松耦(这个方案比楼上那个难度更大,工作繁杂,但是我觉得除了L2-L3辅助驾驶其他地方没啥用,可以参考DJI和五菱宏光的联合方案)
今天的思路是先从VSLAM和VIO主流路径优缺点来分析工程难点:
1. ORB-SLAM2和ORB-SLAM3:这个东西怎么说呢。。。还是不错的,做得非常非常工程化,也很好调,毛病不多,做了非常好的闭环约束精度也高。方方面面看都是80分。走这条路线的同学非常多,但是我想说在从一个多年老工程师和产品经理的角度看,这个系统其实是一个伪开源,选了它你就相当于上了一条不归路。原因是在也是非常简单,这个系统做得太完整了,会让你沉醉在作为调参侠的快乐中。用NV的Xavier青春版随便加个Real senseD435i就能调起来,没有难度。但是要知道,ORB-SLAM3你连关个闭环约束都困难,走这条线,基本调参侠宿命,打打比赛还可以。整个ORB-SLAM改造难度很大。
2.VINS-MONO:怎么说呢,港科的输出,照道理应该全力支持,但还是得拆开说下优缺点。首先VINS-MONO第一个优点是它就像整个VIO中的太祖长拳,非常正统, 相对容易学习上手,代码写得清晰明了。第二个优点是改造空间很大,代码应该是来源于不同的作者,后端写得很好也没啥能优化的哈哈(CERES改改手写可以,但其实没啥必要)。缺点主要2个:第一个缺点:前端有巨大的改善空间(原版的开销高得令人发指,点的可用性也一般),因为用的是非常传统的FAST,并行化难度很低。BCs圆优化的方法实在是多这里不赘述了(其他文和后面要更的DSP篇也会有)。第二个缺点:不能有理想建图,稀疏建图实现不了VIO大全能。之前已经有前人尝试往里面并直接法了(效果一言难尽就不说谁做的了),我们做得稍微好一点但是因为开销实在是太太太重就不发出来丢人了(相当于在原基础特征点法+回环的基础上又并了一套直接法,可悲)。
3. TUM线:主要是DSO到VIDSO到DMVIO,怎么说呢。。。这条线在我看来是唯一能实现VIO大全能的线路,之前写了DM-VIO简述(已说明这条线仍然开销很重),其实最近工作又深化了很多,春节前肯定要出全解了。这条线优点很多就不赘述了,重点说缺点:第一个是门槛极高:基本算是VSLAM/VIO天花板级别,DSO本身就算是最难的VSLAM之一(无论理论还是代码),不懂DSO就去弄VI-DSO或DM-VIO会撞得头破血流。第二个是极其依赖光度误差:对光学硬件的理解要很深,如果连个Kalibr或者张正友标定都整不明白麻烦远离TUM主线。私信问的问题我也不会回。。。第三个缺点是TUM线代码难度很高。
那工程化的难点到底在哪呢?
1.首先除了所有VSLAM/VIO的基础知识以外你还必须要懂工程化
2.除1外要熟悉和了解各种各样的处理核心:CPU/GPU/NPU/DSP/FPGA等blablabla
3.熟悉各种各样的相机,其实这些我别的文章都有大概写一些
4.并行化,多核化,NV线的话大量使用寄存器和WARP原语,DSP和FPGA后续会写
5.熟悉各种各样的接口:VI/DPC/SDI/MIPI/USB/CAN/232/485等
6.开源里的Pangolin和RVIZ这些统统弄出去,不要占用任何资源!
7.开源里的RAW输出全部转硬件编码,所有OSD转硬算,编译好位姿与点云输出运行库
8.指针的使用,共享内存的使用,能手写的尽量不调库
当然如果你有钱能直接堆Xavier TX2或者i7再买Real sense高版,那就当我没说~
因为这才是最好的选择。。。
关于机器人状态估计8-VSLAM工程与VIO工程难点相关推荐
- 关于机器人状态估计(10)-VSLAM与VIO的3D建图,重定位与世界观综述
近期我国迎来了cov海啸,其实我也不知道我羊了没有,但并没有什么不舒服同时因为我没有测,那自然是没有羊,或者是薛定谔的羊. 近年另外一块工作的综述,这篇科普的同时,也会包含部分有价值的信息. 一. 摘 ...
- 关于机器人状态估计(8)-VSLAM/VIO应用与实用性评估
很久没更新自己的大专栏了,熟悉我博客的朋友应该知道如果写这个标题,就说明是挺认真写的~哈哈. 最近的工作也确实取得了很大的进展,进入了更困难的深水区 首先得感谢港科多位师兄师弟的帮助,尤其是本末提供的 ...
- 关于机器人状态估计(1)-高斯分布应用
知识主要来源于对Barfoot教授"机器人学中的状态估计"的分析总结理解以及工程实践,感谢高翔博士及其他译者. 今天写了2篇基础文,决定认真抽时间写一篇干货,是整个系列的第一篇,也 ...
- 关于机器人状态估计(13)-线性代数有多重要?18.06总结
太久没更新主要是在忙开发和测试,这几个月被很多同学提问,同时接触了一些实习生.普遍发现动手能力不错,数学基础却差异很大.从我身边电子,CV或者SLAM做得比较杰出的朋友来看,大家普遍有个共性,具备优秀 ...
- 关于机器人状态估计(4)-成长路径与能力提升
今天突然想起应该补充一下正确的成长路径和需要掌握的技能 机器人状态估计是一门学习曲线陡峭的学科,总体来说需要大量的数学知识,以及较强的代码能力.很多工程师总是会在这个领域开始时就容易放弃,这里我总体描 ...
- 机器人状态估计一之两大方程知多少
状态估计中的两大方程知多少! 状态方程 测量方程 控制数据(这里为毛还把控制数据扯进来了,且看下面说明原因) 以上就是在状态估计两大方程中所需要着重理解的两个方程和一个数据. 前面 下面这些东西对后面 ...
- Where Can Machine Learning Help Robotic State Estimation 机器学习在机器人状态估计的应用
Where Can Machine Learning Help Robotic State Estimation Tim Barfoot 关于机器学习在机器人状态估计中应用的报告演讲.演讲时间2021 ...
- 工程类及工程经济类专业
<工程类及工程经济类专业对照表>按教育部现行<普通高等学校本科专业目录新旧专业对照表>编制,共涉及"土建类.测绘类.水利类.交通运输类.能源动力类.地矿类.材料类.电 ...
- 关于工程教育和工程教育专业认证工作的思考——吴岩司长在工程教育高峰论坛上的讲话
2020年10月20日,中国工程教育认证协会在北京举办工程教育高峰论坛,教育部高等教育司吴岩司长以<关于工程教育和工程教育专业认证工作的思考>为题作了重要讲话,100多位工程教育和行业企业 ...
最新文章
- 如何快速采集分析平台日志,并进行展示监控?
- java 限制日期格式_Java日期格式
- Python笔记 【无序】 【一】
- Session在类库中的使用
- VLAN与trunk配置
- java 如何实现对象克隆_Java对象克隆
- apktool 反编译 java_APK文件使用ApkTool解包反编译和重新打包及签名
- 安全应急响应工作中易犯的5大错误
- 动态设置control的显示与隐藏
- 数据损坏了,怎么找回来?用超融合备份一体机啊
- 黑马程序员传智播客python 协程greenlet gevent学习笔记
- BScroll 实时监听滚动位置
- linux安装红警教程,红警2任务安装教程_红色警戒2任务安装方法一览
- Android统计图表MPAndroidChart
- 有赞订单搜索AKF架构演进之路
- 小技巧(8)pimple模式
- xps in html5,XPS and OXPS file support in Windows 7 and Windows 8
- 5G关键技术,D2D通信-ielab
- 计算机网络研学日志,2020小学信息技术工作研修日志
- linux电脑mac地址修改,linux修改MAC地址/localeLinux -电脑资料
热门文章
- Hadoop_Day01Linux环境搭建、shell基础增强、ZK环境搭建
- 蓝牙分析工具使用之Elisys
- android自定义金额输入键盘_Android自定义软键盘的实现
- windows 8.1 下91手机助手解决方案
- html左右超出显示滚动条,div内容宽度超出边界后怎样设置为左右滑动,而且不显示滚动条?...
- python循环体结束标志_Python循环语句代码详解:while、for、break
- 联想小新Pro13 i5安装黑苹果(实战)
- 4种方法教你如何隐藏电脑磁盘分区?
- 如何得知 CPU 使用率
- 凤翅医话——小方巧治慢鼻炎