LSD - 多传感器融合SLAM详解
附赠自动驾驶最全的学习资料和量产经验:链接
LSD (LiDAR SLAM & Detection) 是一个开源的面向自动驾驶/机器人的环境感知算法框架,能够完成数据采集回放、多传感器标定、SLAM建图定位和障碍物检测等多种感知任务。
本文将详细讲解LSD中的多传感器融合SLAM建图定位算法。
LSD (LiDAR SLAM & Detection)github.com/w111liang222/lidar-slam-detection
高精度点云地图构建
点云地图构建是通过激光雷达扫描周围环境,SLAM算法估计当前位置和姿态,将自身坐标系下的点云转换到世界坐标系,从而构建点云地图。LSD能够融合IMU/GPS等多传感器信息,配合多种前端里程计、后端优化算法、地图编辑,实现高精度点云地图构建功能。相关实现代码位于slam/mapping目录。
SLAM建图Demo
LSD中的SLAM系统架构如下所示:
SLAM建图定位框架
前端里程计 - GICP
GICP是一种点云配准算法,输入点云Q1和Q2,能够计算出Q1- Q2的变换关系。LSD基于开源的fast_gicp,将激光雷达接收到的最新点云与局部地图点云进行配准,从而得到自身在全局坐标系下的位姿。
Globally Consistent 3D LiDAR Mapping withGPU-accelerated GICP Matching Cost Factors
具体算法步骤如下:
-
(可选)求取相邻两帧点云间的IMU数据,积分后用于对点云做运动畸变校准
-
利用pcl::VoxelGrid对当前帧点云下采样
-
将下采样后的点云与当前局部地图做GICP配准,得到当前位姿
-
将当前点云变换到全局坐标系,并添加到局部地图中(最多保留最新时刻的10W个点)
-
优点:适配大部分激光雷达点云(旋转式、固态等),建图精度较高。
-
缺点:当处理线数较高的激光雷达时,计算耗时较高。
前端里程计 - FLOAM
LOAM: LIDAR odometry and mapping in real-time是激光SLAM中的经典算法,主要通过提取点云中的edge和surf特征来进行匹配定位。FLOAM是在LOAM算法基础上优化了运算效率。