最近在看orb-slam,orb-slam方案在slam领域的地位就不用说了,我花了三天大概理清了一下代码的逻辑和思路。具体的细节还没有仔细去看,由于本人也是刚刚学完高博的视觉slam十四讲,所以有一些地方有错误的还望批评…
ORB SLAM的大名和介绍就不需要在这里多介绍了,直接进入代码解读环节吧。 一、系统代码结构 ORB SLAM的代码结构非常清晰,直接看下面这张图就可以 这张图里可以看出orb一共有三个线程,分别负责跟踪(TRACKING)、局部建图(LOCAL MAPPING)和闭环(LOOP CLOSING)功能,同时又增加了重定位(PLACE RECOGNITION)功能。 二、 系...
ORB SLAM的大名和介绍就不需要在这里多介绍了,直接进入代码解读环节吧。 1 系统代码结构 ORB SLAM的代码结构非常清晰,直接看下面这张图就可以 这张图里可以看出orb一共有三个线程,分别负责跟踪(TRACKING)、局部建图(LOCAL MAPPING)和闭环(LOOP CLOSING)功能,同时又增...
FUNCTION2.2.1.2.3.1.1:Triangulate ReconstructH函数中对t有归一化,这里三角化过程中恢复的3D点深度取决于 t 的尺度,但是这里恢复的3D点并没有决定单目整个SLAM过程的尺度,因为CreateInitialMapMonocular函数对3D点深度会缩放,然后反过来对 t 有改变。 再通过3D点的深度不能为负,计算重投影误差不能过大,淘汰掉不符...
1、ORB-SLAM纯单目已经可以初始化得到精确的地图,尺度信息可以通过IMU得到;双目图像输入下则尺度客观,可以不考虑尺度信息的问题; 2、如果将尺度单独作为优化变量进行表示和优化,效果比在BA中的隐式表达收敛更快; 3、IMU初始化过程中必须考虑传感器的不确定性,否则会产生难以预测的巨大误差。
1、ORB-SLAM纯单目已经可以初始化得到精确的地图,尺度信息可以通过IMU得到;双目图像输入下则尺度客观,可以不考虑尺度信息的问题; 2、如果将尺度单独作为优化变量进行表示和优化,效果比在BA中的隐式表达收敛更快; 3、IMU初始化过程中必须考虑传感器的不确定性,否则会产生难以预测的巨大误差。
ORB-SLAM3中对不同模型相机的畸变校正做了区分,当相机模型是针孔的时候,用的畸变校正参数是mDistCoef,当相机模型是鱼眼的时候,用的是虚拟出的相机类,代码参见mpCamera = new KannalaBrandt8(vCamCalib),为避免重复校正,用了个条件限制,就是在函数Frame::UndistortKeyPoints中判断mDistCoef.at<float>(0)==0.0,...
1. 掌握ORB-SLAM3基础理论及代码实现; 2. 真正动手使用ORB-SLAM,并知道结合具体应用场景对ORB-SLAM3算法进行改进; 3. 结合深度学习和深度强化学习,知道如何在学术方面对ORB-SLAM3进行算法改进; 4. 对视觉SLAM常见算法存在的优势与劣势、适应的场景有深刻的理解。
均分切割法(ORB-SLAM1中使用)代码:ORBextractor::ComputeKeyPointsOld 算法步骤:提前计算好每一层...
本文承接ORB-SLAM3 细读单目初始化过程(上),ORBSLAM3单目视觉有很多知识点需要展开和深入,初始化过程是必然要经历的,而网上资料不够系统,因此本文主旨是从代码实现出发,把初始化过程系统化,建立起知识树,以把零碎的知识点串联起来,方便快速学习提升自己。注意,本文虽然从代码出发,但并非讲全部代码细节,如有需要建议...