ORB_SLAM2配置 (XTDrone)
针对ubuntu20.04系统,之前已经参考“PX4仿真环境及XTDrone开发平台”配置好了环境,但是由于ORB_SLAM2的依赖版本都较早,和我们所配置的系统版本有很大的出入,经过多次调试跑通了此程序,故分享给大家。
有关其具体执行操作请大家移步至视觉SLAM进行学习,这里主要会讲我们在build编译过程中碰到的问题以及如何进行解决。
1.问题所在地
在进行build编译过程中的第6步,即./build.sh时会碰到一大堆的错误,可以在终端使用./build.sh 2>&1 | grep -A 10 -B 5 "error:"命令过滤出全部的错误,方便我们后续进一步的改正。这里由于我已经改过了,就不再贴图了,其中最核心的问题在于Noetic自带的OpenCV版本是4.2.0,而ORB_SLAM2中的代码都是基于OpenCV3以下写的,并不兼容(tips:有些朋友将OpenCV进行降级处理,但这会导致原有环境发生错误,后续的ORB_SLAM3等任务无法执行)。还有ubuntu20.04编译器为C++14的,而原来是基于C++11来编译的。剩下的就是一些C++的写法问题,这里给出我修改编译后的完整文件ORB_SLAM2_Fixed,但是请注意在你的系统上可能并不能很好的兼容,所以我建议还是根据报错信息去代码里面找问题并对应修改,这样得到的结果肯定是没问题的,并且能够加深你对代码的理解。
2.定位到文件
(1) 代码文件:src/Tracking.cc,src/FrameDrawer.cc,src/Sim3Solver.cc,src/PnPsolver.cc(需要大改!),/Examples/Monocular/mono_euroc.cc,/Examples/Monocular/mono_tum.cc,/Examples/Monocular/mono_kitti.cc,/Examples/RGB-D/rgbd_tum.cc,/Examples/Stereo/stereo_euroc.cc
(2) 头文件:include/LoopClosing.h,include/Optimizer.h,include/PnPsolver.h
(3) 将主文件夹下面的CMakeLists.txt以及Examples/ROS/ORB_SLAM2/CMakeLists.txt的OpenCV版本以及C++编译器进行修改
(4) 需要编译Thirdparty/DBoW2以及g2o!
主要替换所有的OpenCV旧宏(即带有CV_的需要考虑修改);矩阵API(如CV_REDUCE_SUM改成cv::REDUCE_SUM,CV_SVD_U_T直接删除等等);数据访问(如PW0->data.db[i]要改为PW0.ptr<double>(i)[j]等等);指针问题(如cv::Mat *PW0改为cv::Mat PW0等等);问题比较多,人工改耗时较长且有遗漏,建议将问题直接拷贝给AI进行修改,就按照开头时的那个指令就好。
3.顺利完成喽


浙公网安备 33010602011771号