ORB_SLAM3::SystemSLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR,false); 该语句是主函数中最关键的一句代码,目的是创建SLAM系统,初始化系统所有线程,准备开始处理数据,其中SLAM()中第一个参数argv[1]表示的是输入的ORBvoc.txt即ORB词袋模型数据,第二个参数argv[2]表示的相机参数的yaml文件,显...
ORBSLAM2:采用双目去畸变后的图像,去畸变的remap过程发生在进入system之前,ComputeStereoMatches() 所采用的双目匹配方法是在极线上搜索,是一个很小的带状区域;搜索到匹配点之后直接根据视差d计算深度z; ORBSLAM3:采用暴力匹配的方式,在全局使用knn搜索,只查找与当前左目描述子距离最近和次近的右目描述子,只要满足L...
SLAM.TrackMonocular(im,tframe);// im表示图像,tframe表示时间戳 进入Tracking类中查看其成员函数TrackMonocular()中具体发生了什么。首先,该成员函数的完整函数形式如下: Sophus::SE3fTrackMonocular(constcv::Mat&im,constdouble×tamp,constvector<IMU::Point>& vImuMeas = vector<IMU::Point>(),stringfile...
PR曲线肯定会有提升,但是定位效果...也许可能不一定有提升,这个得试试看才行,看你改进的目的是什么...
PR曲线肯定会有提升,但是定位效果...也许可能不一定有提升,这个得试试看才行,看你改进的目的是什么...
mptLocalMapping= new thread(&ORB_SLAM3::LocalMapping::Run,mpLocalMapper); 原来关键在这里,关键在于LocalMapping类的run()函数,该条语句的执行也代表着LocalMapping线程的正式启动。上面这条语句表示线程将运行类中的成员函数Run,传入的参数为LocalMapping类对象的一个指针。
这里我们先将没有关键帧的情况进行分析,队列中没有关键帧那么就会进入下一条函数ResetIfRequested(),这个函数其实就是一个重置函数,将队列中的所有关键帧都清除,相当于重新开始建图和定位(当然前提是重置请求已经收到)如果是收到地图激活那么就会从当前开始利用已有的关键帧建立起局部的小地图,这也是ORB_SLAM3算法...