人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II

专栏文章:
深蓝学院-多传感器融合定位课程-第1章-概述_goldqiu的博客-CSDN博客
深蓝学院-多传感器融合定位课程-第2章-3D激光里程计I_goldqiu的博客-CSDN博客
github保存了相关代码和学习笔记:
https://github.com/goldqiu/Shenlan-Course-Multi-Sensor-Fusion-for-Localization-Mapping/tree/main/%E7%AC%AC3%E7%AB%A0%EF%BC%9A3D%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A1II

第3章:3D激光里程计II 课程内容 代码、PPT、视频见文件夹
课程笔记
本质:拿特征做里程计的推算。
参考github:
https://github.com/AlexGeControl/Sensor-Fusion-for-Localization-Courseware
https://github.com/kahowang/sensor-fusion-for-localization-and-mapping
点线面几何基础:
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

点云线面特征提取:
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

参考文献:LOAM: Lidar Odometry and Mapping in Real-time Ji Zhang and Sanjiv Singh
推荐博客:https://blog.csdn.net/robinvista/article/details/104379087
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

在第k+1帧中找到一个线特征点(曲率最大),转换到k帧坐标系下(根据运动模型或者其他传感器猜测得到),然后在第k帧中找与k+1帧中特征点最近的一个点,然后再找相邻的一个点,组成一条线,那么第k+1帧的点到第k帧的线就有了,可以构建优化问题了。
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

面特征也一样,先在第k帧搜索离第k+1帧面点(曲率最小)最近的一个点,然后在第k帧是找同根线的一个点和相邻线的一个点,三点构建平面,然后构建点面残差方差,进行优化求解。
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

整个优化问题的核心是求得残差关于待求变量的雅可比矩阵。
基于线面特征的位姿优化
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

位姿优化代码实现
ceres 基础知识
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

自动求导与解析求导的对比
? 自动求导实现方便,但效率会比解析求导低 (比较 A-LOAM 和 F-LOAM );
? 实际使用中,能够自动求导且效率没有形成障碍的,优先使用自动求导;
【人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II】? 除这两种方法外,还有数值求导(SLAM问题中不常见,不过多介绍)
自动求导实现位姿优化(A-LOAM)
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

解析求导实现位姿优化(F-LOAM)
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

相关开源里程计
基于特征的里程计实现流程
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

只做帧间匹配的后果:

  1. 雷达角分辨率不够、频率低,导致下一帧没有特征关联。
  2. 精度也不够,两帧之间的关联特征很少,优化的精度不够。
人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

A-LOAM主要特点 1) 去掉了和IMU相关的部分 2) 使用Eigen(四元数)做位姿转换,简化了代码 3) 使用ceres做迭代优化,简化了代码,但降低了效率 代码:https://github.com/HKUST-Aerial-Robotics/A-LOAM
F-LOAM主要特点 1) 整体和ALOAM类似,只是使用残差函数的雅可比使用的是解析式求导 代码:https://github.com/wh200720041/floam
原始loam是没有帧的概念的,帧和地图做匹配,地图已经是无序的点云了,是做线和平面拟合来构建残差。没有保存每个关键帧的位姿和点云,进行后端优化后的调整,这是比较不足的。
作业 人工智能|深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II
文章图片

代码和文档见文件夹。
注:
由于 make_unique 是c++ 14的新特性,需要在CMakelists.txt 中添加c++14 的编译指向:
在CMakelists.txt 添加
set(CMAKE_CXX_STANDARD 14)

参考博客:
slam中ceres的常见用法总结
Ceres详解(一) Problem类
Ceres详解(二) CostFunction
Ceres(二)LocalParameterization参数化
优化库——ceres(二)深入探索ceres::Problem
[ceres-solver] From QuaternionParameterization to LocalParameterization
基于线面特征的激光里程计

实验室实车实现 代码和文档见文件夹。

    推荐阅读