[代码学习] Real-time Depth Enhanced Monocular Odometry概述

《Real-time Depth Enhanced Monocular Odometry》是Ji Zhang等大牛于2014年发表在IROS的一篇论文。这篇论文将普通的单目相机和其他设备获取的深度信息相结合,设计了一个里程计。

论文的获取链接:论文链接

源代码的获取链接:demo_rgbd以及demo_lidar

这篇文章的大致思路是通过单目相机获取RGB图像,通过LiDAR或者是RGB-D相机获取深度信息。然后对RGB图像进行特征点的提取,然后对深度图进行处理,将相邻两帧图像能够匹配上的特征点所对应的深度值进行分类,分为传感器获取的,利用三角化、kd-tree恢复的,以及无法获得深度信息的,这三类。然后根据分类利用不同的公式,进行位姿的求解。接着最后是BA优化,这里的BA优化是每5帧选择一帧,也就是40帧挑选8帧出来进行优化。整体的系统框图如下图所示。

[代码学习] Real-time Depth Enhanced Monocular Odometry概述_第1张图片

接着对这篇论文进行motion estimation时利用到的公式进行一些简单的推导如下:

(R_1-\overline{x}_i^kR_3)X_i^{k-1}+T_1-\overline{x}_i^kT_3=0

(R_2-\overline{y}_i^kR_3)X_i^{k-1}+T_2-\overline{y}_i^kT_3=0

上述这两个公式是论文中的公式(3)和公式(4),对应的情况是k-1帧的特征点的深度信息已知。表达了待求的第k帧的位姿R和T的关系。这里利用第k帧对应的深度值z_i^k=R_3X_i^{k-1}+T_3,带入到论文的公式(2)中即可得出。

[-\overline{y}_i^kT_3+T_2,\overline{x}_i^kT_3-T_1,-\overline{x}_i^kT_2+\overline{y}_i^kT_1]R\overline{X}_i^{k-1}=0

这个公式是论文的公式(6),对应的情况是k-1帧的特征点的深度信息未知。表达了待求的第k帧的位姿R和T的关系。这个公式的推导这里仅作口头描述。对于论文中的公式(5),将x_i^k对应的等式的左右两边同时乘以T_3,将z_i^k对应的等式的左右两边同时乘以T_1,将这两个新得到的等式的左右两边分别相减,提取公因式,可以得到z_i^kz_i^{k-1}的比值关系式。同理对y_i^k对应的等式和z_i^k对应的等式进行操作,也得到一个z_i^kz_i^{k-1}的比值关系式,这两个比值的关系式是相等的,于是交叉相乘化简就得到了论文中的公式(6)。

论文代码运行的注意事项:由于代码比较老,在ubuntu16.04上运行时会报很多问题,推荐在14.04上跑。并且需要适当修改CmakeLists.txt等。

参考博客:这几篇博客的博主将DEMO误认为是VLOAM

你可能感兴趣的:(源码学习)