图1:ORB-SLAM3系统的主要内容 Atlas 由一些不连续的地图组成的集合表示,分为活跃地图和非活跃地图。其中,跟踪线程在活跃地图定位传入帧,并通过局部建图线程随着新的关键帧不断优化和增长。Atlas构建了一个基于关键帧的唯一DBoW2数据库,用于重定位、回环检测以及地图合并。 跟踪线程 处理传感器信息并实时计算当前帧相对...
首先需要明确的是,ORB-SLAM3一共有3个主线程,还有一个是随时需要随时启动的GBA线程,即共计4个线程. a. 在进行子地图合并的时候,首先关闭的功能就是GBA,如果GBA还有任务在进行,就强行将其终止,并且释放掉该线程.OK,GBA这个线程的异步问题我们可以直接忽略了; b. 那么tracking这个线程咋办?这个线程我们可没有办法...
ORB_SLAM3::SystemSLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR,false); 该语句是主函数中最关键的一句代码,目的是创建SLAM系统,初始化系统所有线程,准备开始处理数据,其中SLAM()中第一个参数argv[1]表示的是输入的ORBvoc.txt即ORB词袋模型数据,第二个参数argv[2]表示的相机参数的yaml文件,显...
与ORB-SLAM2类似,该线程用来处理传感器信息,计算当前帧相对于active map的位姿以及最小化匹配到的地图点的重投影误差。该线程决定何时当前帧被判定为关键帧。在VI模式下,机体的速度以及IMU的bias通过优化惯导残差被估计。当系统追踪丢失后,会触发重定位模式,即当前帧在所有的Altas进行重定位;若重定位成功,当前帧恢复...
(1)首先是ros系统的初始化,以及启动相关线程 ros::init(argc, argv, "Mono_Inertial"); ros::NodeHandle n("~"); (2)创建SLAM系统,system会初始化所有的系统进程,并且准备好生成帧,此处会调用system的构造函数System::System(),具体见System.cc
ORB-SLAM算法主要由追踪、地图构建、闭环控制3个线程组成,其中地图构建部分平均处理每关键帧约385 ms,相对比较耗时,具备较大优化空间[3]。采用ORB-SLAM开源算法所构建的地图是用点云图方式显示,点云很稀疏,不容易看出所构建的室内结构[4]。对移动机器人地图要求上,栅格地图表示法优于点云图表示法,一方面可以大大...
RAM的实验平台上,运算速率可达到实时,且以帧率对图像进行准确处理。ORB-SLAM有3个主线程,它们和其他ROS线程并行运行,由于引入了ROS操作系统,因此算法结果具有一定的随机性,针对这个原因,我们在一些实验中公布了算法运行的中间结果。 A、基于Newcollege数据集测试系统性能 ...
算法运行在Intel Core i7-4700MQ (4核@2.40GHz)和8GB RAM的实验平台上,运算速率可达到实时,且以帧率对图像进行准确处理。ORB-SLAM有3个主线程,它们和其他ROS线程并行运行,由于引入了ROS操作系统,因此算法结果具有一定的随机性,针对这个原因,我们在一些实验中公布了算法运行的中间结果。
作者从VSLAM、VI-SLAM以及Multi-Map SLAM三个范围进行比较论述. 上图为ORB-SLAM3的系统框架图,可以看出新增部分如下: 1Atlas(地图集) 如图中所示,tlas包括一系列分离的地图组成的多地图表示(包括active map 和 non-active-map).一个active map(活动地图)表示当前位于的map,racking线程向其中传入帧,由local mappin...
ORB-SLAM3 是第一个同时具备纯视觉(visual)数据处理、视觉+惯性(visual-inertial)数据处理、和构建多地图(multi-map)功能,支持单目、双目以及 RGB-D 相机,同时支持针孔相机、鱼眼相机模型的 SLAM 系统。 最大后验概率估计(Maximum-a-Posteriori,MAP...