ubuntu20.04装ORB-slam2 和ORB-slam2-ros

ubuntu20.04装ORB-slam2 和ORB-slam2-ros

我的配置:

1.ubuntu20.04-noetic
2.opencv 4.5.5(注意我的是4.5.5版本,很多博主的是3的,注意我下面编译时所写的报错)
3.Pangolin0.6版本------多多注意
40.还有就是编译orb-salm2包里面的build.sh时候建议自己看着一步步来,毕竟环境不同,总会出错

链接

注意我所教的orb-slam2,orb-slam3容易出错,而且千万不要下1.0版本,要在git上下载0.4或者0.6版本,别问,问就是伤过----------.
1.orb-slam3版本,不加ros
2.ROS Melodic下D435i跑通ORB_SLAM2流程
这个是加注册服务器的公钥的git,里面有教程
orb-slam2下载地址
3.ubuntu18安装pangolin0.6版本会出错,应该下载0.5版本

opencv4版本与orb-salm2的各种冲突

1.Thirdparty/DBoW2和主函数的CMakeLists.txt里面的opencv版本路径要修改,改成自己的。
运行build.sh报错
ubuntu20.04装ORB-slam2 和ORB-slam2-ros_第1张图片

这是后来的make的报错
ubuntu20.04装ORB-slam2 和ORB-slam2-ros_第2张图片上面这个报错的解决方法就是把 ORBextractor.h文件里面的 #include 换成#include
就是把里cmakelist.txt里面的11换成14版本
ubuntu20.04装ORB-slam2 和ORB-slam2-ros_第3张图片

cmakelist.txt 的opencv的原地址ubuntu20.04装ORB-slam2 和ORB-slam2-ros_第4张图片改为:
在这里插入图片描述
这样就会摆脱Opencv的cmakelist.txt的部分问题
2.运行make时出的错
1.错误 ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope119 | imLeft = cv::imread(vstrImageLeft[ni],CV_LOAD_IMAGE_UNCHANGED);
解决办法:往指定文件添加头文件

#include "opencv2/imgcodecs/legacy/constants_c.h"

要加的文件有
stereo_euroc.cc
mono_kitti.cc
mono_tum.cc
mono_euroc.cc
stereo_kitti.cc
rgbd_tum.cc

2.报错:std::map must have the same value_type as its allocator

解决方法:
在LoopClosing.h中修改

typedef map,
        Eigen::aligned_allocator > > KeyFrameAndPose;

    typedef map,
            Eigen::aligned_allocator > > KeyFrameAndPose;

3.报错:没有那个文件或目录 26 | #include
方法:#include 改为#include

4.错误:‘CvMat’ has not been declared/‘CV_GRAY2BGR’ was not declared in this scope
error: ‘CV_RGB2GRAY’ was not declared in this scope
方法:

#include 

修改文件:
sim3Solver.cc
PnPsolver.h
FrameDrawer.cc

5.还有个问题我重装一遍没遇到,在第一次装的时候遇到了,说是c++支持的版本不是11
忘记了在哪里,之后再加

自己测试

我下载的MHO5,用他那种方式成功了-----ubuntu20.04装ORB-slam2 和ORB-slam2-ros_第5张图片
看我的细节

添加链接描述

你可能感兴趣的:(技术,ubuntu)