对论文 RF-LIO: Removal-First Tightly-coupled Lidar Inertial Odometry in High Dynamic Environments (IROS, 2021) 的阅读整理。
RF-LIO
0 论文详情
- 题目:RF-LIO: Removal-First Tightly-coupled Lidar Inertial Odometry in High Dynamic Environments
- 作者:Chenglong Qian,Zhaohong Xiang,Zhuoran Wu,Hongbin Sun
- 会议:IROS 2021
1 介绍
传统的主流 SLAM 算法是在环境相对静止的假设上推导进行的。然而事实上,真实的环境当中存在很多的动态物体,如车辆和行人等。由于传感器等视觉域被阻碍(field of view,FOV),导致大量的特征点落在了动态物体而非静态地图上,如图-1 所示,这将使得传统的基于静态环境假设的方法(LOAM、LIO-SAM 等)失效。同时,动态物体可能会遮挡路标、信号灯和其他一些点云地图中的重要静态特征,给识别带来挑战。因此,需要提高 SLAM 在动态环境中的鲁棒性。
图-1 特征点落在了动态物体上
一个动态 SLAM 的简单解决方案就是构建一个仅包含静态物体的地图,即将动态物体从点云中移除,例如 SuMa++ 算法。然而,这种方法在高动态的环境下缺乏稳定性,大量的动态物体会导致 scan-match 方法失效。同时,这种简单的方法依赖于深度学习算法,而深度学习严重依赖于训练集,这同样会限制 SuMa++ 算法的应用。
本文提出了一种新的先移除(removal-first)的紧耦合 LiDAR 惯导框架 RF-LIO,用于解决高动态环境下的 SLAM 问题。Removal-first 表达的是 RF-LIO 将先不依赖精确位姿来移除动态物体,然后执行 scan-match:
- 当新的 scan 到达,RF-LIO 不直接执行 scan-match 计算位姿。相反,使用紧耦合的 IMU 里程计去获取一个粗略的初始状态估计。
- RF-LIO 利用自适应分辨率距离图像初步去除环境中的动态点。
- 移除动态点后,RF-LIO 使用 scan-match 获得相对更加精确的位姿。
2 RF-LIO
2.1 系统概览
图-2 系统概览
RF-LIO 包含三个主要模块:IMU 预融合(IMU Preintegration)、特征提取(feature extraction)、建图(mapping)。首先,IMU 预融合推断系统运动并产生 IMU 数据。然后,特征提取补偿点云的运动畸变,并提取边特征和面特征。
建图模块则是 RF-LIO 的重要组成部分。为实现无精确位姿的动态物体先移除,需要几个关键步骤:
- 通过 IMU 获取初始位姿。然后 IMU 预融合和 scan-match 之间的误差用于确定初始分辨率(即每一个像素关联多少 FOV 角)。
- RF-LIO 使用初始分辨率从当前 LiDAR scan 及其对应的子图构建范围图(range image)。
- 通过比较能见度(visibility),可以移除子图中的主要动态点。
- 将 LiDAR 和 scan 匹配,然后判断 scan-match 是否收敛:如果收敛,则在图优化后,用最终良好的分辨率移除当前帧剩余的动态点;否则,生成新的分辨率,重复执行 2、3、4 步。
2.2 IMU 预融合和初始位姿
设世界坐标系为 W,设 IMU 坐标系(与机器人坐标系相一致)为 B。系统状态可以表示为:
x=[RT,pT,vT,bT]T
其中 R∈SO(3) 为旋转矩阵,p∈R3 为位置向量(位移),v 为速度向量,b 为 IMU 偏差向量,由加速度计偏差 Ba 和陀螺仪偏差 Bg 组成。IMU 测量模型可以表示为:
ω^B(t)a^B(t)=ωB(t)+bg(t)+ηg(t)=RWBT(t)(aB(t)−gW)+ba(t)+ηa(t)
其中 ω^B(t),a^B(t) 为在坐标系 B 中的原始 IMU 测量数据,受到偏差 b 和白噪声 η 的影响。
当 IMU 测量数据到来时,使用 IMU 预融合方法[1]来从前面的关键帧 k 来获取当前关键帧 k+1 的初始位姿:
RWBk+1vBk+1pBk+1=RWBkΔRk,k+1Exp(JΔRgbkg)=vBk+gWΔtk,k+1+RWBk(ΔvBk,k+1+JΔvgbkg+JΔvabkg)=pBk+vBkΔtk,k+1+21gWΔtk,k+12+RWBk(Δpk,k+1+JΔpgbkg+JΔpabka)
其中 Jacobian 矩阵 J(⋅)aba 和 J(⋅)gbg 表示在不明确地重新计算预积分的情况下改变偏差影响的一阶近似。
2.3 IMU 预融合误差和初始分辨率
在使用 IMU 测量推测系统运动时,将不可避免地与 ground truth 有所偏离,使得查询 scan 点到对应地图点时产生模糊。RF-LIO 使用 IMU 预融合和 scan-match 之间的位姿误差来动态生成初始分辨率。
IMU 预融合的平移和旋转误差可以定义为:
ERkEvkEpkEbk=Log((ΔRk−1,kExp(JΔRgbk−1g))TRBWk−1RWBk)=RBWk−1(vBk−vBk−1−gWΔtk−1,k)−(Δvk−1,k+JΔvgbk−1g+JΔvabk−1a)=RBWk−1(pBk−pBk−1−vBk−1Δtk−1,k−21gWΔtk−1,k2)−(Δpk−1,k+JΔpgbk−1g+JΔpabk−1a)=bk−bk−1
通过上式可以计算之前关键帧第 k 的位姿误差。然而在 scan-match 前,当前第 k+1 帧的 IMU 预融合误差无法通过上式获得。为得到第 k+1帧的误差,使用如下的误差转换关系:
δXk=δXk−1+δX˙k−1Δt
由于只关心 δX 中的 δθ 和 δp 部分,因此有下式:
[δθk+1δpk+1]=A⎣⎢⎢⎢⎢⎡δθkδpkδvkδbkaδbkg⎦⎥⎥⎥⎥⎤+B⎣⎢⎢⎡δηgδηaδηbgδηba⎦⎥⎥⎤A=[I−[ω]×Δt00I0IΔt00−IΔt0]B=[IΔt0000000]
通过预测 IMU 里程定位误差,可以获得 range image 的初始分辨率。使用下面的经验式来转换平移和旋转误差为分辨率:
r=αδp+δθ
其中 α 介于 0 和 1 之间,用于平衡两个误差对分辨率的影响。设置最小分辨率 r0 并适当则大预测的分辨率 r,最终初始分辨率 rf 定义为:
rf=max(βr,r0)
其中 β 为大于 1 的系数,而
r0=vertical raysvertical FOV
2.4 构建 range image 及移除动态点
定义 Fk+1 为当前帧的 scan,Mk 为对应的子图,是一个点云图并由在 Fk+1 上执行滑动窗口算法得到。为平衡动态点的移除率以及实时性能,使用一个完全的查询 scan 来与特征子图比较。因为一个有多个关键帧的特征子图与一个完全的查询 scan 有相近的深度,且包含的点比完整子图少。然后将点云分为两个互斥集:动态点集 (⋅)D 和静态点集 (⋅)S,即有:
M=MD∪MSF=FD∪FS(⋅)D∩(⋅)S=∅
通过投影 range image 的 visiblity 来辨别动态点。
图-3 识别动态点
如图-3,range image 中像素 (i,j) 的值 Ik+1,ij 定义为点 p∈R3 到第 k+1 个关键帧的局部坐标系 Bk+1 的距离:
Ik,ijMIk+1,ijF=p∈PijMmindist(p)=p∈PijFmindist(p)
Range image 的大小由给定的分辨率和 LiDAR 的水平和垂直 FOV 范围决定。PijM or F 为点 PM or F 的球坐标系(方位角 i 和俯仰角 j)。
子图的点和 scan 的点的 visibility 通过矩阵相减得到:
Ik+1Diff=Ik+1F−Ik+1M
如果点 p∈PijM or F 在 Ik+1Diff 的对应像素值大于阈值 τ,则该点为动态点:
MkDFk+1Dτ={Mk∣Ik+1Diff>τ}={Fk+1∣Ik+1Diff<−τ}=γdist(p)
其中 γ 为与点距离相关的敏感度,设置为图-5 中 final resolution 的最大值。
2.5 LiDAR 里程和新分辨率
LiDAR 里程用于估计两个连续 scan 的传感器运动。使用 LOAM 中的方法。为每一个新 scan 通过计算点在局部区域点 roughness 提取边特征和面特征。定义第 k+1 个关键帧边和面特征为 Fk+1e 和 Fk+1p。然后将这些特征从坐标系 Bk+1 转换到全局坐标系 W 得到 {wFk+1e,wFk+1p}。初始转换由 IMU 预融合获得。对于每个 {wFk+1e,wFk+1p} 中的特征点,可以通过最近邻搜索找到其在 {Mke,Mkp} 中对应的特征。用下式定义点到其对应点的距离:
dkedkp=∣pk+1,je−pk,le∣∣(pk+1,ie−pk,je)×(pk+1,ie−pk,le)∣=∣(pk,jp−pk,lp)×(pk,jp−pk,mp)∣∣(pk+1,ip−pk,jp)(pk,jp−pk,lp)×(pk,jp−pk,mp)∣
i,j,l,m 为点索引,pk+1,ie∈wFk+1e 为点特征点,pk,je,pk,le∈Mke 为对应的边特征,同理于面特征点。最终可以通过优化下问题获得位姿变换:
minΔTk,k+1=ΔTk,k+1minpk+1,ie∈wFk+1e∑dke+pk+1,ip∈wFk+1p∑dkp
当 scan-match 收敛时,可以得到关键帧 k 和 k+1 间的相对位姿变换 ΔTk,k+1。因此,LiDAR 里程为:
Tk+1=TkΔTk,k+1
虽然去除了动态点,然而在有数个动态物体的高动态环境下,LiDAR 里程会产生漂移。这里给出一个简单但有效的解决方法,其由边特征点 Fk+1e 的欧拉距离来进行判定。这种方法利用边特征点点稀疏性避免使用所有点计算的复杂度,同时具有好的兼容性。虽然需要额外的运算,但是能提供足够的效率。此算法定义如下:
图-4 收敛分数计算算法
其中 τD 为去除奇异点的阈值。当 score<score0,则判断为收敛。如果 scan-match 无法收敛,则使用 2.3 部分中的方法基于 LiDAR 里程生成更好的初始分辨率,然后再一次移除动态点并重复 2.5 部分中的步骤。
3 实验
- 参数设置:α=0.1,β=2.0,r0=0.02,γ=0.02,score0=0.25
- 初始分辨率分析:
图-5 初始分辨率分析
图-6 动态物体移除
图-7 动态物体移除
参考
- [1] C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza, “On-manifold preintegration theory for fast and accurate visual-inertial navigation,” IEEE Transactions on Robotics, pp. 1–18, 2015.