一、overview
提出了一种密集SLAM方法,使用RGBD数据,进行跟踪和建图。
主要贡献:
- surfel-based稠密建图。
- 将surfel分为激活区域和非激活区域,一段时间内未观测到的归入非激活区域。
- 每一帧,尝试把激活模型中当前相机估测位姿部分,登记至非激活模型在当前帧的部分,若登记成功,则检测到闭环,进行非刚体变换。发生闭环的非激活部分再次激活,放入登记的区域。(感觉意思是每一帧把同视角下的激活部分和未观测到的非激活部分匹配,来检测闭环)。
- 对于全局闭环,向随机encoding database里添加预测视角,每一帧匹配这个视角,如果匹配到,就登记这个视角并检测是否全局一致。如果是,对地图进行非刚体变换,消除闭环,(这个不太懂,predicted view是估计的位姿吗?根据估计位姿的匹配来检测和消除闭环?)
文章用词和以前看的都不太一样,读起来不太容易。frame-to-model和model-to-model应该分别是相机位姿估计和地图构建的优化。registration可能是做匹配的意思。
文章先提出了registration的方法,用于做跟踪。使用的是几何+光度联合误差优化。但是不知道激活和非激活在匹配中具体是怎么用的?
还提出了两个闭环检测。得到闭环后的优化使用了形变图。
二、fused predicted tracking
地图使用surfel表示。在做估测时:
- 同时预测深度图和彩色图,用于几何和光度的模型tracking。
- 将surfel根据未观测到的时间间隔,分为激活的和非激活的。设置时间间隔阈值。仅用激活的surfel进行相机位姿估计和深度图融合。
每一帧估计相机的全局位姿,方法是匹配(register)当前帧深度图和彩色图,与上一帧估计相机位姿下激活模型的深度图和彩色图。
2.1. geometric pose estimation
几何误差针对深度图,error是在surfel表示中的顶点vertex中计算。
使用point-to-plane error:
E i c p = ∑ k ( ( v k − e x p ( e ) T v t k ) n k ) 2 E_{icp}=\sum_k ((v^k-exp(e)Tv_{t}^{k})n^k)^2 Eicp=k∑((vk−exp(e)Tvtk)nk)2
v t k v_{t}^{k} vtk是当前帧的第 k k k个点, T T T是当前帧和上一帧的变换估测, v k v^k vk和 n k