MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square 亮点总结: 更精细的Feature模块,在LOAM线面特征的基础上将其细化为6小类,对点的近邻PCA分析,判断其周围点的分布形状,通过特征值大小判定点属于哪一类。 面特征包括:法向量朝下的面(天花板)、法向量朝上的面(地面ground),法向量水平的垂直面 线特征包括:水平线(beam)、垂直线(pilar) 点特征:曲率较大的 双高度阈值的地面提取方 ...
阅读全文 »

之前看的SC LEGO LOAM的代码,在本篇记录一下,顺便对LEGO LOAM做一下总结。SC LEGO LOAM是在LEGO LOAM的基础上新增了基于Scan context的回环检测,其他流程完全一致,总体看来,scan context还是有一定的作用,主要是在回环检测的速度上有些许提升。整体感觉提升不大,最终精度还是由ICP来保证。这里很多部分和前面一篇LIO-SAM的代码是一致的,重复部分直接略过。

image-20200820220749138

SC-LEGO LOAM项目地址:https://github.com/irapkaist/SC-LeGO-LOAM

个人注释版地址:https://github.com/JokerJohn/opensource_slam_noted

阅读全文 »

scan context是一种用于场景识别点云全局描述符,可以用在SLAM的回环检测。本篇文章发表在2018年IROS上,目前代码已开源。论文题目是Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map。目前基于此,已经出现了一些增强版,比如发表在2020 ICRA上的intesity scan context(ISC)描述符,其repo地址:https://github.com/irapkaist/scancontext.git

点云的全局描述符一般需要解决以下两个核心问题:

  1. 旋转不变性,而不管视角如何变化。

  2. 噪声处理能力,因为点云的分辨率随距离变化,并且法线有噪声。

image-20200907110501074

阅读全文 »

补充LEGO LOAM的论文解读。这里做记录的主要目的也是方便自己查阅,督促阅读。文献管理的软件推荐Mendeley,多平台云同步,非常好用。

image-20200904210534198

LEGO LOAM这篇文章发在18年的IROS上,因为其代码开源以及对设备性能要求低等优点,到现在依然用的比较多。论文里面主要是和LOAM对比,其相比LOAM具有以下三个特点,

  • 轻量级,能在嵌入式设备上实时运行。
  • 地面优化,在点云处理部分加入了分割模块,这样做能够去除地面点的干扰,只在聚类的目标中提取特征。
  • 两步L-M优化法估计6个维度的里程计位姿,匹配方式还是scan2scan。

此文的主要对比对象是LOAM,在以上三点的基础上,还添加了回环检测和后端优化的模块。可以看出,作者的主要思路是基于LOAM并提升其性能。

阅读全文 »

卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波是融合多种传感器数据用于状态估计的王牌算法,在自动驾驶定位领域应用广泛。本章主要利用Udacity的一个小案例来梳理KF/EKF/UKF的基本原理及应用方法。项目主要是利用激光雷达数据和毫米波雷达数据来融合完成实时的目标跟踪。这是在二维上的简单案例,需要估计的系统状态变量只有位置、速度(px py vx vy)。传感器的观测量,激光雷达测量的位置(px py),毫米波测量的是距离、角度和角度变化率(rho phi rho_phi)

无人驾驶技术入门(十八)| 手把手教你写扩展卡尔曼滤波器

代码地址:https://github.com/JokerJohn/kalman_filter

阅读全文 »

LIO-SAM是原LEGO-LOAM作者TixiaoShan发表在IROS 2020上的论文 LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping。这是一套Lidar IMU紧耦合的SLAM系统,号称运行速度快10倍,但对传感器要求较高,100hz+的9轴IMU以及带有ringtime通道的激光雷达(velodyne和ouster),其代码最近已开源,并且还在保持迭代更新中。

demo

我跑了一下作者给的数据集,其在手持激光雷达,保持各种姿势旋转的情况下,也能保持稳定的精度,效果确实比较震撼,如图所示。粗略的阅读了代码及论文,其在LEGO-LOAM的框架上做出的改进,主要有以下几点

  • 里程计部分改为scan2localmap的匹配,特征提取部分去除了原LEGO LOAM中的聚、分割并提取较为突出的边缘点和平面点,而是沿用LOAM中的边缘和平面点。(精度高一些,lEGO-LAOM主要考虑性能多一点)
  • 维护两个因子图,预积分因子图可优化联合优化激光雷达odom和IMU,并估计IMU偏差,进行实时的里程计估算,这里将雷达位姿作为预测,而把imu作为观测,去更新imu的bias。全局因子图联合优化雷达odom和GPS因子以及回环因子。(即最终建图没有用到IMU优化后的轨迹,有点奇怪,这样做的好处就是优化速度快)
  • 利用robot_localization中的ekf节点融合GPS和9轴IMU数据,得到提供初始姿态的gps odom。(这里初始化部分使用到了9轴IMU,参考VINS)

项目地址:https://github.com/TixiaoShan/LIO-SAM

我的注释版地址:https://github.com/JokerJohn/opensource_slam_noted

image-20200818210634258

阅读全文 »