UPSLAM: Union of Panoramas SLAM
此文表达,晦涩难懂
摘要
提出一种基于全景深度图的建图系统,全景图像可有效捕获由旋转激光雷达获取的范围测量,在大约数百万立方米的空间地图中记录厘米级别的细节。通过手持传感器收集的数据并同时运行建图程序来证明系统的灵活性,在NVIDIA-Jestion-AGX-Xavier
系统中,在线的3D建图更新时间小于10毫秒。
介绍
SLAM中的挑战:
- 运动:运动是否快速?是地面行驶还是空中飞行器?地面是否平坦?
- 几何:目标环境是否有足够的特征(平面、角点、边缘)?
- 性能:准确性、计算效率、环境规模扩展性
本文提出一种尽可能多的利用传感器数据的方法,并通过以下实验来验证提出方法的鲁棒性,其中包括:行走、跑步、小型轮式机器人、腿式机器人平台、无人机平台,以及汽车从室内杂乱的环境中到地下隧道再到野外森林再到公路。
对实验结果进行量化分析,其轨迹误差仅为轨迹长度的0.05%,其在15W功率的平台上运行,轨迹长度为4.4公里。
在这项工作中,环境被代表为一系列全景深度图,这个选择允许我们使用二维数组的来表示我们的局部地图,我们的实施能够有效利用这种表示所提供的常规内存访问模式和并行性,结果表明,即使在嵌入式GPU平台上也运行很快。
另外一个重要的结论是,我们能够利用所有可用的激光测量数据,并且避免了早期关于特征的决定,或者说,利用所有数据提供了额外的鲁棒性,使得提出的方法可以适用于各种环境。
具体方法
UPSLAM
的地图是一个graph
,其中,该图以平面法向量估计增强的全景深度图作为节点,并以这些深度图关键帧之间的相对位姿关系作为边。
关键帧可能具有不同的分辨率和扩展区,而不是原始传感器数据,我们通常使用比传感器捕获更宽的关键帧垂直视野进行操作。随着每个帧的LIDAR扫描更新,系统会跟踪当前的关键帧。这里描述的实验使用Ouster os1-64
进行,33\(^\circ\)垂直视场角,10Hz。另外,由IMU提供100Hz的加速度、角速度信息。
数据输入
在快速运动期间,LIDAR扫描的100ms周期可包括显着的传感器运动,因此首先在CPU上进行运动畸变矫正。
接下来的所有步骤都在GPU上进行。
经过矫正后的点将投影到一个全景图像中,图像结构有助于计算一个大致的平面法向量估计,即利用某个点与其他两个最近点的叉乘来计算得到。这些表面法向量估计再次使用图像来表示,但是噪声非常大,可以使用如à trous wavelet filter
滤波器等边缘敏感的平滑算法进行有效地平滑[12]。
运动估计
对于每一帧新来的深度图和平面法向量估计,都使用基于点-面距离误差衡量的ICP进行配准[13,14],如下式所示:
\[ \mathbf{E}(\mathrm{T})=\sum_{\left(s_{1}, s_{2}\right) \in C \wedge \Omega_{d, \theta}\left(s_{1}, s_{2}\right)}\left|\left(\mathrm{T} s_{2}-s_{1}\right) \cdot N\left(s_{1}\right)\right| \]
其中,我们定义一个位姿变换\(T\),旨在最小化投影点对\(C\)之间的距离。另外,还使用了一个相似性滤波器,用于拒绝距离较大、平面法向量夹角相差较大的关联点对。这个方法很容易在GPU上实现[15]。
扫描的表面正常估计可能略微通过à trous wavelet filter
滤器平滑,但这种平滑有助于优化收敛,特别的,每次扫描都会更新关键帧表面法线估计,从而恢复因平滑而丢失的一些细节。
在建图系统的鲁棒性方面,一个重要因素是有多少个点参与到优化中。图2显示了典型实验的有效点的数量,其中有效点的定义为:从激光雷达有效测距范围内的点且点的强度值大于给定阈值。在图中所示的示例中,传感器在隧道中的墙壁附近开始,但是一旦出现进入开放环境时,在10Hz扫描速率下达到了40,000~50,000个点。
关键帧更新
优化的变换矩阵为最后的投影关联集合提供了基础,其中,每个关键帧像素都被投影到扫描的深度图上。使用相似性过滤器来确定新的扫描数据是否应该对关键帧像素的进行平均。
在更新关键帧时使用加权平均值:每个关键帧像素跟踪已结合到其中的样本数量,当大于10时,将被用于确定加权权重。
移动物体可以在单个关键帧中应对平滑和响应性的平衡,但考虑多个关键帧重建3D占用率的潜在多假设模型,这是一种从地图中过滤移动对象的有效工具。当切换关键帧时,执行关键帧之间的相互一致性检查,以减少移动对象的影响。
更新后,将决定是否应该继续使用当前关键帧。如果配准的得分定义为ICP配准到深度图上的内点比例低于阈值,则会寻找新的关键帧。并且,会根据pose graph来对最近的节点进行闭环检测。
由于在显着漂移的影响下可能发生闭环配准,因此使用低分辨率的投影配准的方法对数百个网格搜索,得到候选闭环。然后使用full-ICP来进行配准,如果配准的质量高于创建一个新的关键帧的阈值,那么将会增加一条边,并且该闭环候选作为新的关键帧。除此以外,如果内点比例大于75%,将会使用full-ICP的配准结果对pose graph进行更新(反向传播更新),我们将这些分为strong和weak的闭环:这两个闭环都提高了地图的全局准确性,但是强闭合还会减少关键帧的数量。
Pose graph使用了GTSAM,CPU上运行,另外,使用了基于IMU的互补滤波器,用于估计重力向量并对每一个关键帧添加约束到GTSAM,这种观测信息将有助于减少pitch方向的误差。
自带数据集实验
校园——室内
mapping的第一次测试是在实验室空间散步145米,以1-2米/秒的速度移动。 使用50个关键帧图像捕获80个MIB在磁盘上捕获图3所示的地图。 虽然这里的运动是良性的,但是图底部围绕着角截面的玻璃,以及几个狭窄的通道,由于传感器无法可靠地检测玻璃或墙壁近50厘米的玻璃或墙壁,提供了一些挑战
校园——室外
手持传感器,沿着375米的循环沿大学校园内的建筑物群,在2-3米/秒。 所得到的点云,如图4所示,当传感器在其在图4A的下部附近的树木附近的起始位置约为10米的单环闭合时,从单环闭合所形成的。 选择运行的步伐,以强调由于摇动和弹跳而具有高幅度旋转的非平面运动
农场
地下
Robot沿着220米的轨迹在一座古老的煤矿中散步,采集了如图6中所示的底图,共有44个全景图像。该实验提供了与前面描述的运动模型的实际不同的运动模型,因为矿井的湿法砾石地板意味着机器人必须不断地工作以保持其平衡。
滴水,雾和灰尘对单独的激光雷达扫描有很大的噪音
空中
车载
前面几个实验的参数
参数 | 值 |
---|---|
激光雷达 | Ouster OS1-64 |
速度 | 3m/s |
车载实验的参数
参数 | 值 |
---|---|
激光雷达 | Ouster OS1-64 |
速度 | 13.8m/s |
关键帧数量 | 1045 |
图片占用 | 1220MiB |
生成地图 | 20GiB |
公开数据集实验
数据集使用了Newer College Dataset
[18]
轨迹精度
ATE: 1.4km, 0.77m, 0.05%
算法效率
使用平台:NVIDIA Jetson AGX Xavier
考虑高分辨率,2048x256和低分辨率,1024x128的关键帧
在图13中的每种配置中显示了将新LIDAR扫描到地图中所花费的时间。与Xavier的最大功率预算和高分辨率关键帧采取的中位时间为6毫秒