点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者丨lovely_yoshino
来源丨 古月居
点击进入—>3D视觉工坊学习交流群
简介
激光雷达作为自动驾驶中最常用的传感器之一,由于其深度感知特性优良,这也让以激光SLAM为主的SLAM方法被广泛应用。
但是我们发现在人员密集,车辆密集的场景经常会造成点云定位效果不佳,而这些情况传统滤波方法是没有办法解决的。
本篇将主要围绕着深度学习的方法来讲述激光雷达分割的问题。
1. SLAM配准与建图
无论哪种点云配准方式(点到点/点到特征/点到栅格/NDT),都是基于静态假设的,理论上动态点一定会影响配准的精度,当然这一点用于建好地图的定位也同样适用。
当一帧中如果动态点比例过高的话,会造成轨迹精度下降,甚至不排除跑飞的可能。
在这个层面,只能通过实时的方式在配准之前或配准过程中,识别并干掉动态点。
如果我们认为动态物体对配准的干扰有限,不太影响轨迹精度,但我们还是无法忍受最终生成的地图中充斥着大量动态物体的“鬼影”(如下图所示)。
这会对后期基于地图的定位、或者基于地图的可行域规划(路径规划)产生不利的影响。
1.1 传统配准思路—-通过聚类+卡尔曼滤波预测过滤动态障碍物
传统方式比如在配准迭代过程中剔除距离过远的点,物检测流程一般如下:
考虑到车上有多个传感器共同作业,需要对输入的激光点云做时间同步和外参标定。
考虑到激光雷达的采样噪声和点云数据量大的问题,需要对点云做预处理,减少数据量,剔除噪声点。
每帧点云数据中包含了大量的地面点,检测的目的是获取道路障碍物信息,需要进一步分割出地面上的点云。
地面上的障碍物点通常采用无监督的聚类算法形成多个团簇,每个团簇则表示一个障碍物。
针对团簇的物体识别可以根据任务需求而定,如果需要类别信息,可以采用特征提取+分类器的方式分类障碍物。
对每一块团簇做包围框拟合,计算障碍物属性,比如中心点,质心点,长宽高等。
对每一个障碍物构建一个卡尔曼滤波器做跟踪,平滑输出,从而来判断是否运动。
1.2 传统配准思路—-适用submap来精配准
“RF-LIO: Removal-First Tightly-coupled Lidar Inertial dometry in High Dynamic Environments ”,这项工作就是传统的匹配滤波的思路。
它建立在 LIO-SAM 的基础上,先剔除是指所提出的RF-LIO首先去除没有准确姿势的运动物体,然后采用 scan-matching 。
当新的scan到达时,RF-LIO不会立即执行扫描匹配以获得准确的位姿,因为它很容易受到动态环境的影响。
相反,我们使用紧耦合惯性测量单元 (IMU) 里程计来获得粗略的初始状态估计,然后 RF-LIO 可以利用自适应分辨率距离图像初步去除环境中的运动点。
在初步去除运动点后,RF-LIO 使用 scan-matching 来获得相对更准确的位姿。
在精配准迭代过程中,不断基于初值和多分辨率深度图检测submap中的动态点并移除,最终实现基于“静态submap”的精配准。
因此,即使在高动态环境中也可以获得准确的姿势。
实验结果表明,在高动态环境下与 LOAM 和 LIO-SAM 相比,所提出的 RF-LIO 的绝对轨迹精度可以分别提高 90% 和 70%。
论文可见下面链接:
https://pan.baidu.com/s/1GdwaNrH80mgem4xbZKdZ-Q#list/path=%2F
提取码:384o
RF-LIO 的总体框架,它由三个主要模块组成:IMU 预积分、特征提取和建图。首先,IMU 预积分模块用于推断系统运动并生成 IMU 里程计。
然后,特征提取模块补偿点云的运动畸变。通过评估点的粗糙度来提取边缘和平面特征。
建图模块是我们提出方法的关键模块,要在没有准确位姿的情况下先去除动态物体,
有几个关键步骤:
初始位姿是通过 IMU 里程计获得的。
然后使用 IMU 预积分和 scan-matching 之间的误差来确定初始分辨率(即每个像素对应多少个 FOV 角度)。
RF-LIO 使用此初始分辨率从当前激光雷达扫描和相应的子图分别构建距离图像。
通过比较它们的能见度,去除子图的大部分动态点。
RF-LIO 将激光雷达扫描与子图进行匹配,并判断 scan-matching 是否收敛。
如果是收敛的,经过图优化后,用最终的高分辨率去除当前关键帧中剩余的动态点,否则,将生成新的分辨率,并重复步骤2、3、4。
1.3 现代配准思路—-通过深度学习实现动态物体识别
而当前更流行的方式则是基于deep-learning直接识别出动态物体并将点云去除。
“Dynamic Object Aware LiDAR SLAM based on Automatic Generation of Training Data ”。
作者基于deep-learning(3D-MiniNet网络)进行实时3D动态物体检测,滤除动态物体后的点云被喂给LOAM,进行常规的激光SLAM。
文中提到为了克服动态障碍物的问题并支持机器人在现实世界场景中的部署,文章提出了一个用于动态对象感知激光雷达SLAM算法。
文中提出了一种新颖的端到端占用网格管道,可以自动标记各种各样的任意动态对象。
从结果中,我们可以大致看出其可以有效地对动态障碍物完成分割。
2. 动态物体滤除
2.1 环境物体分类
环境中的所有物体依据“动态程度”的不同,分为四类:
高动态物体:实时移动的物体,如行人、车辆、跑动的宠物…
低动态物体:短暂停留的物体,如站在路边短暂交谈的人…
半静态物体:在一个SLAM周期中不动,但是并非永远不动的物体,如停车场的车辆、堆放的物料、临时工棚、临时围墙、商场中临时搭建的舞台…
静态物体:永远不动的物体,如建筑物、马路、路沿、交通信号灯杆…
除了静态物体外的其它三类物体,都有不同程度上的动态属性,应对策略也各不相同:
针对高动态物体:在线实时过滤
针对低动态物体:一次SLAM过程结束后,后处理方式过滤
针对半静态物体:全生命周期建图(life-longmapping, or long-term mapping)
2.2 实时点云过滤
实时动态点云过滤一定需要参考帧来比对出动态点,上面一节主要讲述的就是动态点云滤除的操作,主要是分为传统滤除方法以及深度学习滤除方法。
在深度学习方面基本思路就是先通过深度学习完成动态障碍物的分割,然后将分割好的点云数据放入SLAM当中。
这里主要阐述一个基于深度学习的三维激光雷达动态物体分割(LiDAR-MOS)方法,论文提出了一种利用深度学习和时空信息结合的方法实现了三维激光雷达动态物体分割,并用以提高激光雷达SLAM定位和建图的精度。这是对应的代码:
https://github.com/PRBonn/LiDAR-MOS。
在这项工作中,我们的目标是对 LiDAR 数据进行动态物体分割 (LiDAR MOS)。
在这项工作中,与点云语义分割不同的是我们的任务不是要预测点云的语义类别,如车辆、道路、建筑物等,而是更专注于将场景分割成两部分:
一部分是实际移动的物体,例如正在行驶的汽车、行人,另一部分是静态物体,例如停放的汽车和静态背景,例如道路和建筑物等。
我们提出了一种新的基于深度学习的方法,该方法利用 LIDAR 距离图像(range image),运算速度非常快,能够实现在线实时点云动态物体分割。
上面所展示的是该方法的概述图。我们使用基于距离图像的 LiDAR 表示方式和神经网络来实现在线动态物体分割。
给定当前激光雷达观测和过去的激光雷达数据,我们首先生成过去LiDAR数据和当前 LiDAR 观测之间的“残差图像”(residual image),通过这种方式,我们可以得到时间上的序列信息。
生成残差图像后,我们将残差图与当前扫描连接到一起,一同用作神经网络的输入。
然后我们利用所提出的动态物体二分类标签训练神经网络,该标签仅包含移动和非移动的两个类别。
最终,所提出的方法可以实现对激光雷达数据中动静物体的检测和分离。
2.3 后处理点云过率
后处理方式由于不需要顾虑实时性,因此可以将整个SLAM周期内的所有帧作为参考信息,来识别动态点。
相比于实时方式,后处理方式更追求动态点云滤除的准确性和充分性。
以后处理方式为前提,常见的动态物体过滤方法可以分为典型的三类:segmentation-based, ray-casting based, 和 visibility-based
visibility-based其基本思路是,把一个queryscan投影为深度图,然后在同一视点把queryscan附近的submap也投影为一个深度图,比对两个深度图上同一位置的像素深度。
如果后者深度更浅,则该像素位置对应submap上的点为动态点(前方的点把后方的点遮挡了,则前方的点为动态点)。
Remove, then Revert: Static Point cloud Map Construction using Multiresolution Range Images
这篇文章以此为基本原理,做了诸多改进,并用更粗糙分辨率的深度图对比来恢复被误杀的静态点。
本文为基于视点可见性(或基于深度图)的方法提供了参考。
2.4 life-long建图
life-long mapping的核心问题,其实远不止动态/半静态物体过滤。
动态/半静态物体过滤只是life-long过程中不同session之间地图融合的一部分。
LT-mapper: A Modular Framework for LiDAR-based Lifelong Mapping提出一个long-term的点云建图系统
其基本结构如下:
Multi-session SLAM优化
不同时间构建的点云地图diff检测
地图更新和长期地图管理
Multi-session SLAM:
每个session的点云地图通过关键帧构建,对不同session的关键帧进行anchor node检测,基于anchor帧构建的闭环因子实现Multi-session之间offset的修正。
在保证单个session pose最优的情况下,Multi-session之间的pose也是对齐的;
diff检测:
首先会对新session的每一帧点云划分动态点检测,动态点会划分为高动态(HD)和低动态 (LD) 两种,高动态的点会在单次建图完成后直接去除,低动态的点会根据kd-tree阈值区分。
地图更新和长期地图管理
构造两种类型的静态地图:移除弱PD的meta map和保留弱PD的live map。metamap和livemap的示例如图3所示。
在live map中,场景的最新表示将得到有效维护。在meta map中,non-volume-maximizing points被迭代删除(红色框),而其他永久结构保留。
我们可以发现该life-long算法在第二部分也是对静态和半静态进行了滤波
3. 有所思考
目前众多的开源方案中,基本上只要用了自己的数据集,就很少能达到论文展示的效果。
一种方法即使在理论上是完备的,实际中受限于雷达线束密集程度,轨迹误差等因素,也不可能达到理想的效果。
目前但就过滤动态障碍物而言,个人还是提倡使用深度学习,因为传统的PCL的RANSEC过滤方法难以满足真实场景下的需求。
上文提到的实时处理/后处理/life-long处理这三种方法本质上基本一致,只是面对不同的需求设计了相似的方法,完全可以替换
可以尝试多传感器融合来规避这些问题,像激光、视觉、惯导里程等,因为通常环境变化不会对所有传感器产生影响
也有人指出对于机器人来说SLAM的目的还是用来导航,导航只关心机器人对自身位置的感知,并不关心地图是不是有误差,所以可以使用位姿的拓扑图来代替这类点云地图。
参考链接:
https://zhuanlan.zhihu.com/p/151388303
https://zhuanlan.zhihu.com/p/478137355
本文仅做学术分享,如有侵权,请联系删文。
点击进入—>3D视觉工坊学习交流群
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
3D视觉工坊精品课程官网:3dcver.com
1.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
16.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进
重磅!粉丝学习交流群已成立
交流群主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、ORB-SLAM系列源码交流、深度估计、TOF、求职交流等方向。
扫描以下二维码,添加小助理微信(dddvisiona),一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿,微信号:dddvisiona
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看,3天内无条件退款
高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~