论文笔记—LOAM: Lidar Odometry and Mapping in Real-time
文章摘要
~~~~ ~~~ 本文提出了一种实时的测距和建图方法,该方法使用了以6-DOF运动的2轴激光雷达的距离测量值 。该问题之所以棘手,是因为在不同的时间接收到距离测量值,并且运动估计中的错误可能导致结果点云的配准错误。迄今为止,可以通过离线批处理方法来构建连贯的3D地图,通常使用闭环来校正随时间的漂移。 本文的方法可实现低漂移和低计算复杂度,而无需进行高精度测距或惯性测量。获得此性能级别的关键思想是对SLAM的复杂问题进行划分,以寻求通过两种算法同时地优化处理大量变量。 一种算法以高频率但低保真度执行测距法以估计激光雷达的速度。 另一个算法以较低的数量级频率运行,以进行点云的精确匹配和配准。两种算法的组合使该方法可以实时建图。
导语
~~~~ ~~~ 激光雷达的制图是很常见的,因为激光雷达可以提供高频范围的测量,而无论测得的距离如何,误差都相对恒定。在激光雷达的唯一运动是旋转激光束的情况下,点云的配准很简单。 但是,如果激光雷达本身像许多感兴趣的应用一样在运动,则准确的建图需要了解连续激光测距期间的激光雷达位姿。解决该问题的一种常用方法是使用独立的位姿估计(例如,通过GPS / INS)进行配准,使激光点指向一个固定的坐标系。另一组方法使用测距法测量,例如来自车轮编码器或视觉测距系统的测距配准激光点。由于里程表会随着时间的推移整合较小的增量运动,因此里程表势必会漂移,因此会特别注意减少漂移(例如使用闭环)。
本文考虑使用以6自由度移动的2轴激光雷达以低漂移测距法创建地图的情况。 使用激光雷达的主要优势在于它对环境光线和场景中的光学纹理不敏感。激光雷达的最新发展已减少了激光雷达的尺寸和重量。由于本文的方法旨在解决里程表估算中与最小化漂移有关的问题,因此目前不涉及回路闭合。
该方法不需要低漂移和低计算复杂度,而无需高精度测距或惯性测量。获得这种性能水平的关键思想是同时定位和建图(SLAM)这个典型的复杂问题的划分,该问题试图通过两种算法来同时优化大量变量。一种算法以高频率但低保真度执行测距法以估计激光雷达的速度;另一种算法以较低的数量级频率运行以实现点云的精确匹配和配准。尽管不是必需的,但如果有IMU,则可以提供先验运动来帮助说明高频运动。具体而言,这两种算法都提取位于尖锐边缘和平面上的特征点,并将特征点分别与边缘线段和平面斑块进行匹配。在里程表算法中,通过确保快速计算来找到特征点的对应关系。在建图算法中,通过检查关联的特征值和特征向量的局部点簇的几何分布来确定对应关系。
通过分解原始问题,更容易解决的问题是在线运动估计。 之后,将建图作为批处理优化(类似于迭代最近点(ICP))进行操作,以生成高精度的运动估计和地图。 并行算法结构确保了实时解决问题的可行性。此外,由于运动估计是在较高的频率下进行的,因此建图有足够的时间来保证精度。在较低的频率下运行时,建图算法能够合并大量特征点并使用足够多的迭代来收敛。
注释和任务说明
~~~~ ~~~ 本文所要解决的问题是对3D激光雷达感知到的点云进行自我运动估计,并为遍历的环境构建地图。我们假设激光雷达已经过预先校准,并且还假设了角速度和线速度 激光雷达的随时间变化是平滑且连续的,没有突然变化。
本文规定,我们使用大写字母表示坐标系。 当激光雷达完成一次扫描范围时,我们定义了一次扫描。 我们使用字母 k , k ∈ Z + k,k∈Z^+ k,k∈Z+表示扫描,而 P k P_k Pk表示在扫描 k k k期间感知到的点云。 让我们如下定义两个坐标系。
1)激光雷达坐标系{
L L L}是3D坐标系,其原点位于激光雷达的几何中心。 x轴指向左侧,y轴指向向上,z轴指向前方。 {
L k L_k Lk}中的点 i , i ∈ P k i,i∈P_k i,i∈Pk的坐标表示为 X ( k , i ) L X_{(k,i)}^L X(k,i)L。
2)世界坐标系{
W W W}是一个3D坐标系,它与{
L L L}在初始位置重合。 {
W k W_k Wk}中的点 i , i ∈ P k i,i∈P_k i,i∈Pk的坐标为 X ( k , i ) W X_{(k,i)}^W X(k,i)W。
有了假设和符号,我们的激光测距和建图问题可以定义为:
给定一个激光雷达云 P k , k ∈ Z + P_k,k∈Z^+ Pk,k∈Z+的序列,计算每次扫描k期间激光雷达的自我运动,并为遍历的环境用 P k P_k Pk绘制地图。
系统概述
A.雷达硬件
~~~~ ~~~ 本文的研究已基于但不限于基于Hokuyo UTM-30LX激光扫描仪的定制3D激光雷达进行了验证。 通过本文,将使用从激光雷达收集的数据来说明该方法。 激光扫描仪的视场为180°,分辨率为0.25°,扫描速度为40线/秒。激光扫描仪连接到电机,该电机被控制为在−90°之间以180°/ s的角速度旋转。 激光扫描仪的水平方向为零时为90º,然后为90º。在此特定单位下,扫描是从-90º到90º或反方向(持续1s)旋转。在此,请注意连续旋转激光雷达,扫描只是一个半球形的旋转。 板载编码器以0.25°的分辨率测量电动机的旋转角度,通过该分辨率,激光点被投影到激光雷达坐标{ L L L}中。
B.软件系统概述
~~~~ ~~~ 图3示出了软件系统的图。 令 P ^ \hat{P} P^为激光扫描中收到的点。 在每次扫描期间, P ^ \hat{P} P^在{
L L L}中进行配准。 第 k k k次扫描期间的组合点云形成 P k P_k Pk。 然后, P k P_k Pk用两种算法进行处理。激光雷达里程计获取点云并计算两次连续扫描之间的激光雷达运动。 估计的运动用于校正 P k P_k Pk中的失真。 该算法以大约10Hz的频率运行。 输出由激光雷达建图进一步处理,将未失真的点云匹配并以1Hz的频率记录到地图上。 最后,将两种算法发布的姿态变换集成在一起,以生成相对于地图的激光雷达位姿约为10Hz的变换输出。
雷达里程计
A.特征点提取
~~~~ ~~~ 本文首先从激光雷达云 P k P_k Pk中提取特征点。 图2所示的激光雷达自然会在 P k P_k Pk中生成不均匀分布的点。 在扫描过程中,激光扫描仪的返回分辨率为0.25 ° \degree °。 这些点位于扫描平面上。 但是,随着激光扫描仪以180º/ s的角速度旋转并以40Hz的频率进行扫描,垂直于扫描平面的分辨率为180º/ 40 =4.5º。 考虑到这一事实,特征点是从 P k P_k Pk提取的,仅使用来自各个扫描的信息,并具有共面的几何关系。
我们选择位于尖锐边缘和平面表面块上的特征点。 设 i 为 P k i为P_k i为Pk中的一个点, i ∈ P k i∈P_k i∈Pk,设 S S S为同一扫描中激光扫描仪返回的 i i i的连续点的集合。 由于激光扫描仪按 C W CW CW或 C C W CCW CCW顺序生成点返回,因此 S 在 i S在i S在i的每一侧包含一半的点,并且在两个点之间包含0.25°的间隔。 定义一个术语 c c c以评估局部表面的光滑度,
扫描中的点基于 c c c值进行排序,然后选择特征点,即具有最大c值的是边缘点和具有最小c值的是平面点。 为了在环境中均匀分布特征点,我们将扫描分为四个相同的子区域。 每个子区域最多可以提供2个边缘点和4个平面点。 仅当点 i 的 c i的c i的c值大于或小于阈值且所选点的数量不超过最大值时,才可以将其选择为边缘或平面点。
在选择特征点时,我们要避免那些周围的点已经被选择的点或在局部平面上与激光束大致平行的点,这些点通常被认为是不可靠的。
总之,从最大c值开始选择特征点作为边缘点,从最小c值开始选择特征点作为平面点,如果选择了一个点,则:
1)所选边缘点或平面点的数量不能超过子区域的最大值,并且
2)尚未选择其周围的点,并且
3)它不能在与激光束大致平行的表面补丁上,也不能在被遮挡区域的边界上。
从走廊场景中提取的特征点的示例如图5所示。边缘点和平面点分别用黄色和红色标记。
B.寻找对应特征点
~~~~ ~~~ 视觉里程计算法估计扫描中激光雷达的运动。 令 t k t_k tk为第 k k k次扫描的开始时间。 在每次扫描结束时,将在扫描过程中感知到的点云 P k P_k Pk重新投影到时间戳 t k + 1 t_{k + 1} tk+1,如图6所示。我们将重新投影的点云表示为 P ˉ k \bar{P}_k Pˉk。 在下一次扫描 k + 1 k + 1 k+1期间, P ˉ k \bar{P}_k Pˉk与新接收的点云 P k + 1 P_{k + 1} Pk+1一起估计激光雷达的运动。
假设 P ˉ k \bar{P}_k Pˉ