之前对视觉SLAM主要的开源框架,ORB-SLAM2、SVO等进行了介绍,然后疫情期间对VINS-Mono进行了详细的源码解析,接下来考虑到工作原因需要用到激光雷达、GNSS、IMU等多传感器融合,所以接下来会对最经典的激光SLAM框架LOAM和LeGo-LOAM两个开源系统进行总结。
之前对激光SLAM的印象就是激光雷达采集到点云数据,然后用ICP对准就可获得接收端位姿估计。

第一篇经典的激光SLAM paper是2014年CMU Ji zhang的《LOAM:Lidar Odometry and Mapping in Realtime》
LOAM是基于激光雷达而搭建的在ROS平台下的SLAM系统
论文:https://www.ri.cmu.edu/pub_files/2014/7/Ji_LidarMapping_RSS2014_v8.pdf
代码:https://github.com/HKUST-Aerial-Robotics/A-LOAM/tree/devel/src

对于LOAM的源代码解析分为四部分进行讲解:
LOAM源码解析——scanRegistration
LOAM源码解析2——laserOdometry添加链接描述
LOAM源码解析3——laserMapping添加链接描述
LOAM源码解析4——transformMaintenance

摘要

提出一种实时里程计和建图方法,使用以6自由度运动的2轴雷达的距离测量值。这个问题之所以棘手,是因为不同时间接收到的距离测量值以及运动估计的误差会导致点云的误匹配。迄今为止,通过离线批处理方法可以构建连贯的3D地图,经常使用回环检测纠正随时间的漂移。本文可以达到低漂移和低计算复杂度,而无需高精度测距或惯性测量。获得这样性能的关键是把同时定位和建图问题划分,该方式寻求通过两个算法同时优化大量变量。一种算法以高频率但低保真度执行测距法以估计激光雷达的速度。另一个算法以较低的数量级频率运行,以进行点云的精确匹配和配准。两种算法的组合使该方法可以实时映射。该方法已通过大量实验以及在KITTI里程表基准上进行了评估。结果表明,该方法可以在最先进的离线批处理方法水平上实现准确性。

图左侧为激光雷达里程计,包含点云畸变矫正,右侧为雷达建图。

主要贡献

一、本文主要贡献是把同时定位与建图(SLAM)技术分为两部分,一个是高频率(10HZ)低精度的里程计odometry过程,另一个是低频率(1HZ)高精度的建图mapping过程,二者结合可实现低漂移、低计算量、高精度的SLAM。

二、Lidar Odometry:分为特征点提取Feature Point Extraction和特征点关联 Finding Feature Point Correspondence两部分。
特征点提取在激光雷达每一次sweep中,根据曲率对点进行排序,作为评价特征点局部表面光滑性的标准。曲率最大的为边缘点,曲率最小的为平面点,每个局部提取2个边缘点和4个平面点。
特征点关联使用scan-to-scan方式,分为边缘点匹配和平面点匹配两部分。计算点到直线的距离和点到平面的距离。
姿态解算根据匹配的特征点云估计接收端位姿。

三、Lidar Mapping
低频率建图,前面获得相邻帧的姿态变换,接下来要和全局地图进行匹配,将其加入到全局地图中。主要分为两步骤:
1、Pk+1点云去畸变,并对齐到世界坐标系中加入点云地图,即为Qk+1
2、Qk+1和Qk配准,优化位姿Tk+1.

一、论文概述和符号设定

  1. 一个扫描周期内获取到的所有点云记作 P, P k P_{k} Pk​表示第k个扫描周期的点云。
  2. 雷达坐标系设定为 L L L, L k L_{k} Lk​表示第k个周期时的雷达观测坐标系,单个点云在 L k L_{k} Lk​中表示为 X ( k , i ) L X_{(k,i)}^{L} X(k,i)L​。Lidar坐标系:x轴指向左侧,y轴指向上面,z轴指向正前方。
  3. 全局坐标系设定为 W W W, W k W_{k} Wk​表示第k个周期时的全局坐标系,单个点云在 W k W_{k} Wk​中表示为 X ( k , i ) W X_{(k,i)}^{W} X(k,i)W​。
  4. 问题为:给定采集点云数据 P k P_{k} Pk​,计算前k个周期内雷达位姿以及构建全局地图。

Lidar接收原始点云数据 P ^ \widehat{P} P ,首先进行点云配准Point Cloud Registration(分为特征点提取和关联)配准后点云数据为 P k P_{k} Pk​,接下来两个算法:一部分通过Lidar Odometry输出连续两帧之间10HZ的低精度姿态估计,另一部分将畸变矫正后的点云输入Lidar mapping并输出1HZ的高精度点云地图。最后估计的位姿和全局地图进行匹配优化位姿,生成基于地图的10HZ激光雷达姿态数据。

二、Lidar Odometry激光雷达里程计

这里就是传统SLAM前端里程计,根据相邻两帧的特征点估计接收端的姿态。本文在特征点云的特征点提取、特征点关联、最后估计位姿等方面都提出了创新点。

特征点提取:根据点的曲率c来将点划分为不同的类别(边缘或平面),每个局部提取2个边缘点和4个平面点。
特征点关联:相邻两帧点云数据的关联,计算这一时刻对应上一时刻最近的两个点,求点到线的距离,点到面的而距离。
姿态估计:将所有对应到的点求到直线、面的距离之和最短,然后按照Levenberg-Marquardt算法迭代计算,得到两帧之间的变换,最后通过累计计算odom。

A 特征点提取

稀疏SLAM里为了减小计算量经常采用特征点提取,像ORB、SIFT、SURF等特征点,这里对于激光点云主要提取两类:平面点和边缘点。

边缘点:三维空间中尖锐边缘的点,和周围点的差距大,曲率c较高。
平面点:背景上的平面点,曲率c较低。

首先讲述区分二者的重要指标:曲率c。根据点的曲率来计算平面光滑度作为提取特征信息的重要指标。对每一个点通过其周围最近的5个点,计算曲率大小。

首先根据c排序,大于阈值为边缘点,小于阈值为平面点;然后为了使特征点均匀的分布在环境中,将一次扫描划分为4个独立的子区域,每个子区域最多提供2个边缘点和4个平面点。

同时,对于正常流程所取得点也有一定限制:
1、避免周围点已被选择从而保证特征点分布均匀,或者局部平行于激光束的局部平面上的点。如图(a)中的点B
2、避免在被遮挡的边界上的点。如图(b)中的点A被B遮挡住了。
只有在S没有形成与激光束大致平行的表面斑块并且S中没有点在激光束方向上与间隙断开与i的点时,才能选择i点。

最后总结下来选点的三要素:

  1. 不能超过设定的size,每个集合平面点4个,边缘点2个;
  2. 已选取的点周围不能有点,使得点可以分布的更加均匀;
  3. 选取的平面点不能与激光扫描束平行。

结果为下图,红色点为平面点,黄色点为边缘点。但是可以明显看出随着雷达的旋转运动,点云畸变效果。

B 特征点关联

将k时刻的点云和k+1时刻的点云关联起来:首先将第k时刻点云 P k P_{k} Pk​重投影到第k+1时刻为 P k ^ \widehat{P_{k}} Pk​ ​,将第k+1时刻扫描的点云 P k + 1 P_{k+1} Pk+1​和 P k ^ \widehat{P_{k}} Pk​ ​结合起来估计雷达的位姿。

其实在扫描的过程中激光雷达一直在运动,但是为了简单,这里以每一次扫描作为一个周期,并且把一个周期扫描结束后将所有采集到的点集都投影到下一时刻,表示为 P k ^ \widehat{P_{k}} Pk​ ​。


参数定义
第k次扫描的点云为 P k P_{k} Pk​,提取的边缘点集合为 E k E_{k} Ek​,提取的平面点为 H k H_{k} Hk​。
第k+1次扫描的点云为 P k + 1 P_{k+1} Pk+1​,提取的边缘点集合为 E k + 1 E_{k+1} Ek+1​,提取的平面点为 H k + 1 H_{k+1} Hk+1​。

我们的目的是找到 P k + 1 P_{k+1} Pk+1​与 P k P_{k}

LOAM:实时的雷达里程计和建图相关推荐

  1. LIOM: 一种新的激光惯性里程计和建图方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L | 来源:知乎 https://zhuanlan.zhihu.com/p/137 ...

  2. 面向固态激光雷达和惯导的里程计和建图

    点云PCL免费知识星球,点云论文速读. 文章:Towards High-Performance Solid-State-LiDAR-Inertial Odometry and Mapping 作者:K ...

  3. LiLi-OM: 走向高性能固态激光雷达惯性里程计和建图系统

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 编辑丨当SLAM遇见小王同学 声明: 本文只是个人学习记录,侵权可删.论文版权与著作权等全归原作者所 ...

  4. F-LOAM:基于激光雷达的快速里程计和建图

    文章:F-LOAM : Fast LiDAR Odometry and Mapping 作者:Han Wang, Chen Wang, Chun-Lin Chen, and Lihua Xie git ...

  5. 东北大学 | 一种适用于大规模公路环境的鲁棒激光惯性里程计和建图系统

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题: A Robust Laser-Inertial Odometry and Mapping Me ...

  6. 3D激光SLAM:LeGO-LOAM论文解读---激光雷达里程计与建图

    3D激光SLAM:LeGO-LOAM论文解读---激光雷达里程计与建图 激光雷达里程计 针对LOAM的改进 激光雷达建图 原文 激光雷达里程计 激光雷达里程计模块的功能就是:估计相邻帧之间的位姿变换. ...

  7. ICRA 2021|用于LiDAR里程计和建图的Poisson表面重建

    Poisson Surface Reconstruction for LiDAR Odometry and Mapping 作者:Ignacio Vizzo, Xieyuanli Chen, Nive ...

  8. RIKIBOT-FX4纯激光里程计的建图导航

    目录 简介 环境准备 纯激光里程计构建地图 纯激光里程计导航 关键参数配置 交流方式 简介 在大多数学习ROS人的理解中,常用的gmapping建图.导航一般都需要依赖电机的里程计,特别是导航时一定需 ...

  9. (每日一读2019.10.21)紧耦合的3D雷达惯性里程计及建图(LIO)

    论文:pdf 代码:github 视频:video 摘要 自身运动估计是大部分移动机器人应用的基本需求.通过传感器融合,我们能够补偿单个传感器的缺陷并且提供更可靠的估计.在本文中,我们引入一种紧耦合的 ...

最新文章

  1. 一天超2000次,阿里如何打响音视频超时空战役?
  2. 在ESXi5,1,ESXi5.5安装异步驱动程序
  3. python怎么读文件夹下的文件夹-如何使用Python读取文件夹中的文件数量?
  4. fastjson 使用总结
  5. openresty开发系列34--openresty执行流程之4访问阶段
  6. java getheight_Java ETC1.getHeight方法代码示例
  7. 德勤加入阿里云原生合作伙伴计划,强强联手开创数字化咨询新风向
  8. md 阅读器_职场办公神器:文石BOOX Nova Pro 电子书阅读器测评
  9. 如何在Mac OS上从Photoshop作为插件访问Topaz Mask AI
  10. linux 修改ftp默认端口号,在linux中添加ftp用户,以及修改FTP默认端口号
  11. 股市行情图原来是这样实现的
  12. 重磅!Apache RocketMQ 深圳沙龙报名开启!
  13. 互联网协议 — 802.1q VLAN 虚拟局域网协议
  14. 2018蓝桥杯 航班时间和乘积尾零
  15. 安装SQL Server 2000时“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”错误的排除
  16. CVPR 2020 Tutorial How to write a good rebuttal(如何写一篇好反驳)概要总结
  17. c语言水仙花两种方法,c语言:3种方法;求出0~999之间的所有“水仙花数”并输出。...
  18. Flowlayout流式布局使用(轻量级)
  19. Redis从库失败导致集群概率读不到
  20. 基于Pytorch的强化学习(DQN)之 Experience Replay

热门文章

  1. 2020年高教社杯全国大学生数学建模C题中小微企业信贷决策(Matlab代码)
  2. 华为欧拉系统安装docker和数据库MySQL
  3. [SV]SystemVerilog枚举型变量语法详解及应用举例
  4. 遥望布达拉——DAY14 左贡-邦达
  5. python贵阳培训班
  6. “战疫杯”大学生程序设计在线邀请赛(6)题解
  7. 【快速检测GPU性能】
  8. IMU误差模型与校准
  9. 实现手机拍照手机录像与打开图库
  10. 高手教程——MF的技巧