论文笔记——Dense Visual SLAM for RGB-D Cameras
论文笔记——Dense Visual SLAM for RGB-D Cameras
文章摘要
本文提出了一种RGB-D相机的密集视觉SLAM方法,使光度和深度误差在所有像素上最小化。与稀疏的、基于特征的方法相比,这使我们能够更好地利用图像数据中的可用信息,从而获得更高的位姿精度。此外,本文提出了一种基于熵的相似性度量用于关键帧选择和环闭包检测。通过在公开的基准数据集上对此方法进行广泛的评估,发现它在低纹理和低结构的场景中都有很好的表现,且产生了一个显著的更低的轨迹误差。
背景
许多机器人技术应用,如导航和制图要求精确和漂移自由姿态估计的移动相机,都偏好基于视觉特征的方法,并结合束调整或姿态图优化。这样在选择相关关键点的过程中会丢弃大量的获取图像数据。
因此,本文的目标是开发一种密集SLAM方法以便更好地利用传感器获取的可用数据,保证实时运行和有效消除漂移,并通过全局地图优化来修正累积误差。如图1所示,我们针对RGB-D相机提出了一种密集SLAM方法,该方法使用关键帧和基于熵的闭环检测来消除漂移。
| Fig. 1:the groundtruth, frame-to-keyframe odometry, and the optimized trajectory for the fr3/office dataset. | 
|---|
本文提出的视觉SLAM系统,它结合了基于光度和几何误差最小化的稠密视觉测程法和位姿SLAM。通过同时估计一致的地图,然后根据消除漂移的一致模型对摄像机进行定位。获取关键帧并对映射进行优化,不需要用户交互。如图2:

| Fig. 2:the camera motion g* between two RGB-D images by minimizing photometric and the geometric error | 
|---|
密集的视觉里程计
本文的目标是仅从它的图像流来估计相机的运动,即在给定连续两个时间步长的RGB-D图计算相机的刚体运动g。
利用给定场景中像素的测量强度应该是相同的这一原理,即L_1(x)=L_2(x^{'}),通过最大化两幅图像之间的一致性来寻找相机的运动。
对于深度测量,理想情况下,预测的深度测量和实际测量是相等的。因此,运动可以估计最小的差距之间的预测和实际深度测量。
A.摄像机模型
三维点在齐次坐标系中定义为P=

其中f_x, f_y为焦距,o_x, o_y为标准针孔相机模型中摄像机中心的坐标。点的像素坐标可以通过投影函数来计算:

B.刚体运动
我们将摄像机运动g限制为一类刚体运动,形成特殊的欧几里得群SE(3)。刚体运动g的常见表示是一个变换矩阵T,

包含一个旋转矩阵和一个平移向量。用变换矩阵表示的点p的变换定义为:

变换矩阵T是g的一个过顺化表示,即T有12个参数,而g只有6个自由度。变换矩阵T可以使用李代数\xi来计算:T = exp(\xi)。
C.翘曲函数
利用之前定义的投影函数和刚体运动,我们可以推导出一个翘曲函数,该函数在给定刚体运动的情况下,从第一幅图像计算出第二幅图像中像素的位置:

D.误差函数
根据翘曲函数\tau,我们将像素x的光度误差r_\text{\i}定义为:

同理,深度误差为:

E.概率公式
我们试图确定的运动\xi的概率最大化像素误差,即:

应用贝叶斯规则,假设所有的误差都是独立的同分布的,并使用负对数似然,得到:

定义P(r_{\text{\i},i\vert}\xi)分布会导致一个迭代调整权值最小二乘配方:

对于二元情况,公式(10)变成:
基于t分布的权值w_i为:

F.线性化和优化
我们所寻求的最小化误差函数\xi不是线性的运动参数。因此,我们线性化它当前的运动估计使用一阶泰勒展开式\xi_k。由此得到的非线性最小二乘问题的正规方程为:

在每个迭代中,我们重新评估矩阵规模和权重w_i使用标准期望最大化算法t分布。
G.参数不定性
我们假设估计参数\xi服从均值\xi^{*}和协方差\sum_\xi的正态分布,如\xi~N(ξ,\sum_\xi)。法方程中的近似Hessian矩阵A等价于Fisher信息矩阵。它的逆矩阵给出了方差的下界估计参数\xi,即\sum_\xi=A^{-1}。
基于关键帧的视觉slam
为了克服误差模型没有捕捉传感器数据中的所有变化这一局限性,我们采用了基于关键帧姿态的SLAM方法,并将其与我们的密集视觉测程方法相结合。为了限制局部漂移,我们估计了当前图像和关键帧之间的变换。只要相机保持足够接近关键帧,就不会积累漂移。每个关键帧被插入到一个映射中,并通过一个约束连接到它的前一帧。当重新访问之前看到的场景区域时,可以建立对旧关键帧的附加约束来校正累积漂移。
A.关键帧选择
常用的策略是创建一个新的关键帧:当两幅图像中可见特征个数低于阈值时,每n帧,在一定的旋转平移距离创建一个新的关键帧。
在本文的方法中,我们发现误差值计算不具有直接可比性,因为它取决于不同图像对之间的规模\sum误差分布。因此,我们使用以下策略。多元正态分布的m维微分熵x\backsimN(\mu,\sum)维度定义为

我们计算从最后一个关键帧k当前帧j运动估计\xi_{k,k+j}和从关键帧k到第下一帧k + 1之间的运动估计\xi_{k,k+1}的熵率,即:

将该熵值作为今后比较的参考。当当前帧与关键帧之间的距离增大时,熵增大。如果\alpha值低于当前帧的预定义阈值,则选择前一帧作为新的关键帧并插入到映射中。
B.环路闭合检测
在本文的方法中,我们选择了测量的最近邻居搜索。我们以关键帧位置为中心,在预定义半径的球体中搜索候选环闭包。我们计算了每一个候选帧在粗分辨率上的两个关键帧之间的相对变换和相关的协方差矩阵。为了验证一个候选对象,我们使用与关键帧选择相同的熵比检验。然而,我们使用所有成功的平均熵匹配关键帧的中间帧,而不是转换的熵第一帧到关键帧帧H(ξ_{k: k + 1})。从图3可以看出,当相机返回到第50帧捕获点(420- 450帧)附近时,熵比再次增大。此外,还可以看出在估计中高熵比带来的误差低。

| Fig. 3: Frame 50 of the freiburg1/desk dataset matched against all frames of the dataset. | 
|---|
c.地图表示与优化
将映射表示为一个相机姿态图,其中每个顶点都是一个关键帧的姿态。边缘表示关键帧之间的相对转换。当我们向映射中添加新的关键帧时,通过相对转换链接的关键帧链就会创建。为了纠正在轨迹中累积的错误,我们搜索循环闭包到之前访问的关键帧。有效的循环闭包成为图中的新边。然后通过求解非线性最小二乘优化问题对误差进行修正。误差校正分布在环路的边缘上。每条边与协方差矩阵加权\sum_\xi的相对运动估计。在数据集的末尾,我们为每个关键帧搜索额外的循环闭包约束,并再次优化整个图。
实验结果
本文使用慕尼黑工业大学提供的RGB-D基准进行评估。该基准测试包含多个真实数据集捕获与一个RGB-D相机。每个数据集都伴随着一个精确的groundtruth轨迹获得一个外部运动捕捉系统。
在第一组实验中,我们评估了结合光度和几何误差最小化的好处。图4显示了不同数据集的代表性图像。表1显示了实验结果。

| Fig. 4: Example images of the datasets with varying structure and texture | 
|---|

| TABLE I: Comparison of RGB-only, depth only and combined visual odometry methods based on the RMSE of the translational drift (m/s) for different scene content anddistance | 
|---|
在第二组实验中,我们比较了帧对帧、帧对关键帧(和姿态图优化帧对关键帧跟踪的性能。我们使用了所有freiburg1 (fr1)数据集。表2显示了结果。

| TABLE II: RMSE of translational drift (RPE) in m/s for frame-to-frame, frame-to-keyframe odometry and frame-to keyframe odometry with pose graph optimization for allfreiburg1 datasets | 
|---|
最后,我们将我们的方法与最近最先进的可视化SLAM方法进行比较,表三总结了结果。

| TABLE III: RMSE of absolute trajectory error (m) for our visual SLAM system in comparison to three state-of-art systems. The second column shows the number of keyframes used by our system. | 
|---|
结论
本文提出了一种将密集跟踪与关键帧选择和位姿图优化相结合的新方法。对公开数据集的实验中,我们表明关键帧的使用已经减少了漂移(16%)。我们引入了一个基于熵的准则来选择合适的关键帧。此外,本文还证明了同样的基于熵的度量可以用来有效地检测环路闭包。通过对所得到的位姿图进行优化,可以使全局轨迹误差降低170%。
