SLAM中基于滤波的方法的问题及如何调参?

作者 | 半闲居士 编辑 | 汽车人

原文链接:https://www.zhihu.com/answer/3127818634

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【SLAM】技术交流群

本文只做学术分享,如有侵权,联系删文

两个月过去了,不知道你的问题是不是已经解决 :D

如果你从头开始写VIO或者LIO,那么跑飞是正常情况,不跑飞说明你天赋异禀,能够把所有咒语一口气念对。实际系统中相差一点点细节都可能导致IMU系统跑飞,比如某家IMU帮你去掉了重力,某家IMU的陀螺测量单位用的角度,而你假设的是弧度,等等。

而且优化系统并不比滤波器简单。优化也要调各因子的平衡性,而且雅可比矩阵、信息矩阵很容易把矩阵块的索引写错,除了自己查之外别人也帮不上什么忙 :D 我还碰到过把优化器搞出内存泄露调了好几周调不出来的。

如果你执意想从头写的话,我建议按照以下步骤来调:

  1. 先把你的VO或LO搞对。大部分系统在没有IMU的时候也能跑起来,保证你的纯视觉、纯激光系统大致是没错的。

  2. 检查IMU的单位是否和你预期的一致,比如陀螺和加计的单位,加计有没有去重力。检查IMU的三个轴方向是否和你预计的一样(视觉坐标系和雷达坐标系习惯通常是不一样的,雷达Z朝上,相机Z朝前)。

  3. 检查滤波器的F阵、H阵的元素和符号有没有写反。如果你用的开源框架,通常是对的,自己写的就不一定。

  4. 如果上述都是对的,那么轨迹“飞”通常是加计导致的(陀螺直接积分都不会飞,但加计会)。各数据集的加计性能相差很多,不能一概而论。实际上你可以先把加计部分去掉,直接用VO或LO估计的平移量。然后检查这个平移量和你用速度+加计估计出来的是否一致。如果不一致,通常就是坐标系出现了问题。

  5. 最后才是调参。在VO、LO能正常运行的情况下,把IMU的噪声设大一些,那么EKF会由视觉或激光部分来主导。如果都正常,再慢慢减小IMU的噪声值。不要太相信IMU的标定,我见过理论上推十几页公式,实践动不动把噪声参数乘10,乘100的,都正常。

  6. 至于边缘化、FEJ、能观性、P阵切空间投影这些,不会有很大影响,主要是让论文变长一些,至少不会让一个原本飞走的系统变得不飞走。在前期调试的时候甚至都不用做,甚至你可以在每次迭代之后把P阵设成一个单位阵。只要你纯VO或LO不飞,EKF也不会飞。

MSCKF不建议你直接写,我的某个实习生鸽了我两年半的MSCKF-LIO,直到毕业了也没写出来 @白徐行 。你可以在EKF基础上添加multi state部分,做视觉的话参考黄老师他们的方案即可。

然后论文和代码不一致是正常现象。完全一致通常说明作者毕业了或者懒得更新了。代码是在不断发展的,论文多灌一篇是一篇,谁还能不断更新论文不成……

EKF的dx有若干种方式来算,一般就是K乘innovation,其他的无非就是把K变一变形。本身K就是个中间变量,有很多种不同写法。我一般就是:

71198b2bd09fbbe8252f85ed619a7dfe.png
https://github.com/gaoxiang12/slam_in_autonomous_driving/blob/master/src/ch3/eskf.hpp

关键在于H阵和innvation都不要错符号(当然有时候两个都错等于没错就是了)。

还有什么疑问的,欢迎讨论。

b0d8cf774fd93ed7b05f8d70fcbcde2b.png

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)

acd856d38bf9767b3a9f3425835b4469.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

3997e87483edf692a072e27a8818d1e9.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

6e60a838d789b8d5716dcdccd4ff870d.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

35df49821b3c05a37fab031913ff251f.jpeg

猜你喜欢

转载自blog.csdn.net/CV_Autobot/article/details/132095353