深蓝学院-多传感器融合定位课程-第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_第1张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第2张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第3张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第4张图片

点云线面特征提取:

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第5张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第6张图片

参考文献:LOAM: Lidar Odometry and Mapping in Real-time Ji Zhang and Sanjiv Singh

推荐博客:https://blog.csdn.net/robinvista/article/details/104379087

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第7张图片

在第k+1帧中找到一个线特征点(曲率最大),转换到k帧坐标系下(根据运动模型或者其他传感器猜测得到),然后在第k帧中找与k+1帧中特征点最近的一个点,然后再找相邻的一个点,组成一条线,那么第k+1帧的点到第k帧的线就有了,可以构建优化问题了。

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第8张图片

面特征也一样,先在第k帧搜索离第k+1帧面点(曲率最小)最近的一个点,然后在第k帧是找同根线的一个点和相邻线的一个点,三点构建平面,然后构建点面残差方差,进行优化求解。

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第9张图片

整个优化问题的核心是求得残差关于待求变量的雅可比矩阵。

基于线面特征的位姿优化

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第10张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第11张图片

位姿优化代码实现

ceres 基础知识

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第12张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第13张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第14张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第15张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第16张图片

自动求导与解析求导的对比

• 自动求导实现方便,但效率会比解析求导低 (比较 A-LOAM 和 F-LOAM );

• 实际使用中,能够自动求导且效率没有形成障碍的,优先使用自动求导;

• 除这两种方法外,还有数值求导(SLAM问题中不常见,不过多介绍)

自动求导实现位姿优化(A-LOAM)

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第17张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第18张图片

解析求导实现位姿优化(F-LOAM)

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第19张图片

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第20张图片

相关开源里程计

基于特征的里程计实现流程

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第21张图片

只做帧间匹配的后果:

  1. 雷达角分辨率不够、频率低,导致下一帧没有特征关联。
  2. 精度也不够,两帧之间的关联特征很少,优化的精度不够。

深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_第22张图片

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_第23张图片

代码和文档见文件夹。

注:

由于 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

基于线面特征的激光里程计

实验室实车实现

代码和文档见文件夹。

你可能感兴趣的:(人工智能,计算机视觉,slam,自动驾驶)