VDO-SLAM

Zhang 2020 · 论文

一句话总结 —— 一个具有动态物体感知能力的 SLAM 系统,在单一因子图中联合估计相机轨迹以及刚性运动物体的 SE(3) 运动,无需任何先验物体模型。

问题

机器人在动态环境中的路径规划和避障依赖于了解机器人周围物体的运动方式——然而经典 SLAM 假设世界是静态的,而大多数”动态 SLAM”系统只是检测运动内容并将其丢弃。VDO-SLAM 则将动态刚性物体本身整合进估计问题:它在无需任何关于物体形状或几何模型的先验知识的情况下,识别、跟踪并联合相机估计每个运动物体的完整 SE(3) 运动。

方法与架构

预处理。 实例分割(Mask R-CNN,COCO 权重)分离出潜在的可移动物体;稠密光流(PWC-Net)在各处提供对应关系,最大化占据像素较少的物体上被跟踪的点数,并传播逐物体的标识符(在分割失败时恢复掩码)。输入可以是 RGB-D、由立体转换而来的深度,或使用 MonoDepth2 深度的”基于学习的单目”方案。

运动表示。 给定相机位姿 0Xk{}^{0}\mathbf{X}_k 和物体位姿 0LkSE(3){}^{0}\mathbf{L}_k \in \mathrm{SE}(3),刚性物体上的点 0mki{}^{0}\mathbf{m}^i_k 满足

0mki=0Lk1  k1Lk1Hk  0Lk11  0mk1i=k10Hk  0mk1i,{}^{0}\mathbf{m}^{i}_{k} = {}^{0}\mathbf{L}_{k-1}\; {}^{L_{k-1}}_{k-1}\mathbf{H}_{k}\; {}^{0}\mathbf{L}^{-1}_{k-1}\; {}^{0}\mathbf{m}^{i}_{k-1} = {}^{0}_{k-1}\mathbf{H}_{k}\; {}^{0}\mathbf{m}^{i}_{k-1},

因此物体的逐帧运动 k10HkSE(3){}^{0}_{k-1}\mathbf{H}_k \in \mathrm{SE}(3) 将其自身的点在时间上关联起来,而完全不需要将物体位姿纳入状态——这正是实现无模型运行的关键。

前端估计。 相机位姿通过在静态点上最小化经 Huber 鲁棒化的重投影误差来求解,ei=Ikp~kiπ(0Xk10mk1i)\mathbf{e}_i = {}^{I_k}\tilde{\mathbf{p}}^i_k - \pi({}^{0}\mathbf{X}^{-1}_k\,{}^{0}\mathbf{m}^i_{k-1});每个物体的运动则通过最小化类似的代价函数来求解,ei=Ikp~kiπ(k10Gk0mk1i)\mathbf{e}_i = {}^{I_k}\tilde{\mathbf{p}}^i_k - \pi({}^{0}_{k-1}\mathbf{G}_k\,{}^{0}\mathbf{m}^i_{k-1}),其中 k10Hk=0Xkk10Gk{}^{0}_{k-1}\mathbf{H}_k = {}^{0}\mathbf{X}_k\,{}^{0}_{k-1}\mathbf{G}_k,两者都以 se(3)\mathfrak{se}(3) 参数化,并用 Levenberg–Marquardt 求解。关键之处在于,光流会与每个运动联合精修(一个正则化项将其锚定到初始光流上),这大大延长了点的跟踪轨迹。物体是否被判定为动态取决于场景流大小(阈值 0.12,若物体超过 30% 的点在运动则判定为动态)。

后端因子图。 相机位姿、静态点、动态点和物体运动在同一个图中通过四种因子类型联合精修:

ei,k=0Xk10mkizki(三维点观测),ei,l,k=0mkik10Hkl0mk1i(三元点-运动因子),\mathbf{e}_{i,k} = {}^{0}\mathbf{X}^{-1}_k\,{}^{0}\mathbf{m}^i_k - \mathbf{z}^i_k \quad \text{(三维点观测)}, \qquad \mathbf{e}_{i,l,k} = {}^{0}\mathbf{m}^i_k - {}^{0}_{k-1}\mathbf{H}^l_k\,{}^{0}\mathbf{m}^i_{k-1} \quad \text{(三元点-运动因子)},

再加上里程计因子和一个平滑运动先验 el,k=(k20Hk1l)1k10Hkl\mathbf{e}_{l,k} = ({}^{0}_{k-2}\mathbf{H}^{l}_{k-1})^{-1}\,{}^{0}_{k-1}\mathbf{H}^l_k,用以惩罚物体运动的突变。使用修改版 g2o 中的 LM 求解。物体的线速度可以直接从运动中得出:vk10tk(I3k10Rk)ck1\mathbf{v} \approx {}^{0}_{k-1}\mathbf{t}_{k} - (\mathbf{I}_3 - {}^{0}_{k-1}\mathbf{R}_{k})\,\mathbf{c}_{k-1},其中 ck1\mathbf{c}_{k-1} 为物体点云的质心。

实验结果

对SLAM的意义

VDO-SLAM 是”估计而非丢弃”这一动态 SLAM 流派的一个里程碑:动态物体成为一等的估计目标,而不是被当作离群值处理。其无模型的点-运动因子——在无需物体位姿变量的情况下,将刚体上的点在时间上关联起来——是一种优雅的表述,如今已成为动态 SLAM 的标准做法,而其开源发布也使其成为驾驶和移动机器人场景中联合相机/物体估计的参考基线。

相关条目