![6f9857851530d8bf4b7e7451e34550bc.png](https://i-blog.csdnimg.cn/blog_migrate/1562da868dda85fc6331f0319111b0eb.jpeg)
前沿
SLAM作为机器人领域深耕已久的方向,在我看来已经比较成熟了。从开始的EKF SLAM到现在的RTAB-MAP, ORB-SLAM, Cartographer各种SLAM算法百花齐放。SLAM的回环检测在提高机器人的定位精度上,让我眼前焕然一新。
“SLAM拥有实时定位和构建地图的能力,这对于自动驾驶来说不是非常利好?既可以定位,又可以同时构建低配版HD map, 而且还可以通过这个低配版地图进行重定位?”
我是抱着这么个想法,开始琢磨着可不可以把基于激光雷达的Cartographer应用在自动驾驶上。
![ec7c926c18be36b8ce2c8f8258549444.png](https://i-blog.csdnimg.cn/blog_migrate/9fd813b70d70fbffac75e546694b39be.jpeg)
SLAM应用在自动驾驶后的思考
所以上周就开始分析Cartographer。cartographer 是谷歌的开源SLAM项目。它是一个以低配硬件实现大型场景实时精确(5cm)SLAM的项目。
涉及到的内容很多很多,算法也比较复杂。单纯看他们的论文是看不出啥东西的。像这种大型项目,必须得是论文+文献+tutorial+其他人的说明。
googlecartographer/cartographergithub.com![33fef84ef63903e6c6c6c6b53998b7d8.png](https://i-blog.csdnimg.cn/blog_migrate/f28814cbb1cbdd5f88527182945fa59c.png)
总之,现在看过了各种文章,论文也读过了,tutorial过了好几遍,tuning了一些参数,在KITTI数据集做的rosbag上运行并观察了一些情况。还是蛮有意思的└(^_^)┘
但是
突然意识到些都不是重点。
我之前一直觉得回环好炫,好厉害,必须通过回环提升定位精度。
不过,想了一想,自动驾驶车辆的定位,不能依靠回环啊!车都跑偏了,还调整一起的位姿干啥?
●▽●
Carto里面利用lidar的 t 和 t-1 的点云数据得到robot motion, 同时利用IMU进行补偿。补偿机制是啥还不知道,可能是贝叶斯滤波。如果用了基于贝叶斯理论的滤波器的话,那么基于LIDAR的motion估计值和基于贝叶斯滤波器的估计值,哪个会更准确呢? 因为在构建submap的时候,submap的构图的基准点,也就是车辆位置越准确,之后的pose和全局回环的时候才会更准确。哪个更准确呢, 这个有待测试。。
所以,问题又回来了。对于自动驾驶车辆来说,回环的比重不像在SLAM里那么重要。
实时定位才是自动驾驶真正应该关心的事情。自动驾驶回环也重要,但是没有实时定位重要。
一般的高精度的定位方法是基于RTK DGPS。这种研究已经进行了很久了,也比较成熟了。成熟到啥程度呢, 就是买个DGPS硬件系统和软件,就能直接调取1~2cm误差范围的位置数据。商用的没钱看。开源的RTK GPS有兴趣可以看看下面的开源RTKGPS项目。
An Open Source Program Package for GNSS Positioningwww.rtklib.com![04ac2b24d34f2cf7251825504ed364e5.png](https://i-blog.csdnimg.cn/blog_migrate/99496060505dc364b4dbf344d62b37f6.jpeg)
SLAM如何应用在自动驾驶车辆定位上?
SLAM强大的回环检测在自动驾驶实时定位上, 帮不上太大忙。那是因为实时定位依靠的gps系统可以得到较高的准确度。
不过,影响gps的数据准确性的原因有很多,天气啊,遮挡物啊,高楼啊。典型的场景就是,地下车库,隧道,高楼比较多的市区。这种情况下,现阶段的自动驾驶车辆会依赖高精地图。也就是说,如果没有高精地图的, GPS不被信赖的场景,是完全可以嫁接SLAM的技术的。如果有对应地形的地图,那么就可以通过有地图情况下的SLAM算法,没有的话,跟一般SLAM是没什么区别的。
我认为,机器人算法和自动驾驶算法有以下区别。
- *自动驾驶对算法安全性的要求高。是首要因素。比什么都重要
- 自动驾驶车辆的可移动自由度比机器人要低
- *自动驾驶车辆的速度相对于机器人要高很多
- *自动驾驶车辆对算法的鲁棒性要求高
- *自动驾驶车辆的实时定位更为重要。
或许可以通过V2X的手段,检测回环,提高自身定位精度。 - (研发车辆,不是量产)自动驾驶车辆对算力没什么上限。
(量产)就需要权衡硬件性能,计算量,算法的效率等等。 - 自动驾驶车辆的路况相当复杂,没有统一性。所以算法要有普适性。
- 自动驾驶车厂有自己的平台,不可能随便换平台。跟机器人有较大的区别。
总结
通过这些天的学习,观察了cartographer应用在自动驾驶上的问题。SLAM的即时定位是可以直接应用在自动驾驶车辆上的,尽管他的稳定性和精确度有待测试。但是回环检测这个大杀器在自动驾驶的应用,感觉非常有限。因为车辆不能在任何一个瞬间丢失自身的位置。由于每个瞬间都很重要,所以不可能等到被检测到回环的时候才提升定位精度。但是,我们并不能说回环在提高定位精度方面没有任何贡献。相反,如果通过V2V共享&合并轨迹检测回环或是自身检测回环,是可以提升车辆以后的定位精度的。
最重要的是,得知道车辆的场景&要解决的问题。
在这里,我关注的点是在隧道场景中的车辆的实时定位问题。
涉及到的有车辆动力学(kinematic model), 基于VIO & LIO的T, T-1 的motion model, 贝叶斯滤波。
附录
- KITTI转换为bag的repo:
![58f4f5c32f567cb6a9018d52bd96f539.png](https://i-blog.csdnimg.cn/blog_migrate/1de7d923cca9f98f5dc93f72f9146a21.jpeg)