是什么:  openvslam是日本先进工业科技研究(National Institute of Advanced Industrial Science and Technology )所于2019年5月20日开源的视觉SLAM框架;  github源码地址:https://github.com/xdspacelab/openvslam

干什么的: 先上图:

通过不同类型的相机(单目,双目,RGBD,鱼眼或者全景相机)拍摄的序列图像(视频),实时定位当前位置以及重建三维空间的开源SLAM框架

优势(1)增加了鱼眼和全景相机的接口;

       (2)相比较业内开源代码ORBSLAM2速度和性能上更具优势,原文截图:

       (3)详细的文档,地址:https://openvslam.readthedocs.io/en/master/

怎么做:原文截图:

解释:三个模块:tracking module,mapping module, global optimization module,分别对应跟踪模块,主要是实现特征提取和位姿估计以及关键帧检测;mapping module主要是实现三维点重建以及局部位姿和三维点信息的优化;global optimization module主要是实现回环检测以及全局优化;

 

本文主要是解析如何实现的这一过程,主要是结合原文和代码去解释如何实现的,主要的框架是参考ORBSLAM的框架,所以比较过程清晰,下面是代码的结构:

camera: 定义相机类型,单目,双目,RGBD,鱼眼,全景

data: 定义openvslam的数据结构,包括BOW特征匹配,keyframe,landmark,map,graph等

feature: ORB特征点的实现与提取

initialize: 初始化

io: 输入输出文件读取和保存

match: 各种匹配方法的实现,包括区域法,BOW法,robust match等

module: 具体每个步骤的实现模块,包括初始化,关键帧选取,localmap的构建清除,局部BA,重定位等

optimization: 各种优化算法实现过程,包括全局BA,局部BA,位姿优化,拓扑图优化等

solve: 位姿和三维点解算实现,包括基础矩阵求解位姿,本质矩阵求解位姿,单应性矩阵求解位姿,P3P,相似变换求解位姿

public: 显示的实现,包括特征点跟踪状态的显示以及三维重建位姿定位的显示,主要是通过Pangolinsocket.io-client-cpp实现

util: 一些额外的操作,比如随机数的生成,图像灰度化等

tracking module ,mapping module,  global optimization module: 三个主要的模块

system: openvslam的接口

config: 读取控制参数的接口函数,通过yaml-cpp第三方库实现的;

 

。。。。。未完待续

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐