专栏文章:
深蓝学院-多传感器融合定位课程-第1章-概述_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第2章-3D激光里程计I_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第4章-点云地图构建及基于地图的定位_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第5章-惯性导航原理及误差分析_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第6章-惯性导航解算及误差模型_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第7章-基于滤波的融合方法I_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第8章-基于滤波的融合方法Ⅱ_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第9章-基于图优化的建图方法_goldqiu的博客-CSDN博客
github保存了相关代码和学习笔记:
https://github.com/goldqiu/Shenlan-Course-Multi-Sensor-Fusion-for-Localization-Mapping/tree/main/%E7%AC%AC10%E7%AB%A0%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%9B%BE%E4%BC%98%E5%8C%96%E7%9A%84%E5%AE%9A%E4%BD%8D%E6%96%B9%E6%B3%95
第10章:基于优化的定位方法
课程内容
代码、PPT、视频见文件夹
课程笔记
基于图优化的定位简介
核心思路
定位流程
整个流程:不断往滑窗里添加新信息,并边缘化旧信息。 需要注意的是: 1) 正常行驶时,不必像建图那样,提取稀疏的关键帧; 2) 停车时,需要按一定策略提取关键帧,但删除的是次新帧,因此不需要边缘化。
边缘化原理及应用
边缘化原理
从滤波角度理解边缘化
新的预积分值=老的预积分值+根据bias的变化量算出的新的预积分结果
基于kitti的实现原理
基于地图定位的滑动窗口模型
边缘化过程
lio-mapping介绍
核心思想
基于滑动窗口方法,把雷达线/面特征、IMU预积分等的约束放在一起进行优化。
具体流程
流程讲解思路: • 以前述kitti中实现原理为基础,此处只是多了点云特征的约束; • 只介绍可借鉴的内容,因此不介绍bias、外参初始化和外参优化等内容。
作业
按照课程讲述的模型,在提供的工程框架中,补全基于滑动窗口的融合定位方法的实现(整体思路本章第三小节已给出,代码实现可借鉴lio-mapping),并分别与不加融合、EKF融合的效果做对比。 评价标准: 及格:补全代码,且功能正常。 良好:实现功能的基础上,性能在部分路段比EKF有改善。 优秀:由于基于滑窗的方法中,窗口长度对最终的性能有很大影响,请在良好的基础上,提供不同窗口长度下的融合结果,并对效果及原因做对比分析。
附加题(不参与考核):
基于地图定位时,滑窗中是否要加入帧间里程计相对位姿约束,这是一个有争议的话题。若各位愿意,可在工程基础上对比两种方案的不同,并分析造成差异的原因。
环境配置
出现以下问题,是由于 make_unique 是c++ 14的新特性,需要在CMakelists.txt 中添加c++14 的编译指向。
lidar_localization/src/models/sliding_window/ceres_sliding_window.cpp:25:38: error: ‘make_unique’ is not a member of ‘std’
config_.loss_function_ptr = std::make_unique<ceres::CauchyLoss>(new ceres::CauchyLoss(1.0));
解决, 在CMakelists.txt 添加
set(CMAKE_CXX_STANDARD 14)
注:protobuf要安装3.14.0版本的