昨天(7月29日)Livox官方公开了“LIO-Livox”代码。该系统采用了更加鲁棒的初始化算法,配合动态物体过滤以及分布更加均匀的特征,能够有效应对汽车平台在大型户外环境中的遇到的诸多问题,用户可以用Livox Horizon轻松运行该系统。接下来对其进行简单介绍。
代码: github.com/Livox-SDK/LIO-Livox
摘要
Livox LiDAR实现了一个强大的LiDAR-惯性里程计系统。该系统仅使用一个内置IMU的Livox LiDAR。它有一个鲁棒的初始化模块(独立于传感器的运动):它可以在静态状态、动态状态或者静态和动态的混合状态进行初始化。该框架非常鲁棒,在只使用一台Livox Horizon的条件下,它可以通过一个4公里长的隧道,并以非常高的速度(约80公里/小时)在高速公路上运行。此外,它能够有效地对动态物体,如汽车、自行车和行人。即使在交通拥堵的情况下,它也能获得高精确度的定位效果。即使大部分FOV被车辆遮挡,建图结果也是精确的。
下面分别展示了该系统在隧道/动态场景/复杂城市环境中的运行效果。
框架
该系统由两个ros节点组成:ScanRegistartion
和PoseEstimation
。
- 节点
ScanRegistartion
中的"LidarFeatureExtractor"类负责从原始点云中提取点特征、表面特征以及不规则特征。 - 节点
PoseEstimation
中,主线程旨在估计传感器的位置,"Estimator"类中的另一个线程使用"MapManager"类来建立和管理特征图。
接下来对上述两个节点进行详细介绍。
ScanRegistartion
节点负责提取特征。在提取特征之前,系统要从原始点云中去除动态物体,因为在城市场景中通常有许多动态物体,会影响系统的鲁棒性和精度。对于动态物体的过滤,该系统使用了一种快速的点云分割方法。欧几里得聚类法(Euclidean clustering)将点分成一些类别:原始点云被划分为地面点、背景点和前景点。前景点被认为是动态物体,在特征提取过程中被排除。
另外,在开放场景中通常只有少数特征可以被提取出来,这会导致某些自由度的退化。为了解决这个问题,该系统开发了一个能使特征点分布得宽而均匀的特征提取算法。(特征点)均匀而宽广的分布为所有6个自由度提供了更多的约束,这对消除退化现象很有帮助。此外,在没有特征的场景中,一些不规则的点也提供了信息。因此,该系统也提取不规则特征作为点云注册的一个类别。根据特征点的局部几何特性,系统将其分为三种类型:角点特征、表面特征和不规则特征。系统首先提取每个扫描线上具有大曲率和孤立的点作为角点。然后进行主成分分析(PCA),对表面特征和不规则特征进行分类,如下图所示。对于不同距离的点,通过设置不同的阈值,以使点在空间的分布尽可能的均匀。
在节点PoseEstimation
中,使用IMU预积分或恒速模型对点云的运动失真进行补偿,然后执行IMU初始化模块。如果初始化成功完成,系统将切换到LIO模式。否则,它将以LO模式运行并初始化IMU状态。在LO模式下,系统使用帧到模型(frame-to-model)的点云注册来估计传感器的位姿。受ORB-SLAM3的启发,系统采用了一种最大后验(MAP)估计方法来联合初始化IMU的偏差、速度和重力方向。这种方法考虑到了传感器的不确定性,在最大后验概率的意义上获得了最优。在初始化之后,一个基于滑动窗口的传感器紧耦合融合模块被执行,以估计滑动窗口内的IMU位置、偏差和速度。同时,一个额外的线程并行地建立和维护全局地图。
-END-