您的位置:首页 > 编程语言

DVO-SLAM详解之代码逻辑

2017-09-11 15:53 627 查看

DVO-SLAM详解之代码逻辑


一、整体框架

   

    本系列的文章主要解释DVO-SLAM的Tracking和闭环检测部分,首先从benchmark_slam.cpp这个文件入手,整个算法框架如下:


      

   

    配置好相关参数后,程序循环读取数据集中的图片,开始运行算法,如下图所示:



整个算法流程如下:

(1) 配置相关参数,读取所有的rgb图及其对应深度图的保存路径

(2) 创建KeyframeTracker对象

(3) 循环读取数据

    (3.1) 加载图片

    (3.2) 将图片及其时间戳传给KeyframeTracker对象,返回该图片对应的相机位姿

    (3.3) 保存相机位姿

(4) 全局进行一次闭环检测,进一步完善位姿图,再对位姿图进行优化。

二、KeyframeTracker对象的创建

   

    主函数中创建了KeyframeTracker对象,程序进入keyframe_tracker.cpp文件,这个文件中包含了KeyframeTracker对象的所有接口,KeyframeTracker对象主要包括两部分:KeyframeGraph对象和LocalTracker对象,KeyframeGraph对象主要负责后端位姿图的搭建、闭环检测、位姿图优化,LocalTracker对象主要负责前端位姿估计。



三、KeyframeTracker的运行

   

    KeyframeTracker对象每读取一张图片,就对图片进行如下操作:



(1) 将当前图片与前一帧以及关键帧之间进行帧间匹配,得到帧间运动变换量r_odometry、r_keyframe

(2) 根据r_odometry、r_keyframe判断当前帧是否为关键帧,若是则更新关键帧,进行局部闭环检测,搭建位姿图,否则直接将结果添加到位姿图中。

(3) 根据r_keyframe得到当前相机的位姿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息