ubuntu20.04配置并编译ORB-SLAM2

以前成功配置过一次,后来电脑出了点问题重装了系统,现重新配置一下,比上次出的错多多了,特来记录一下。

第一遍安装时不知道是哪里除了问题,后面编译的时候报了巨多error,看到有人说可能是安装了anaconda之后虚拟环境的问题,也可能是某个依赖库版本不对的问题,干脆又重装一遍系统,从头开始。

主要包括以下几个步骤:

安装依赖项;

安装Pangolin库;

安装Opencv3;

安装Eigen3;

编译ORB-SLAM2

安装依赖项

sudo apt-get update
sudo apt-get install git gcc g++ vim make cmake

安装Pangolin库

安装0.5版本的,之前安装了0.6的(说是稳定版),但是后面编译ORBSLAM2时报了超多的错,不知道是不是因为这个

下载地址 进去之后通过 master–tags–0.5 选择0.5版本下载,下载后解压到根目录

sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev
cd Pangolin 
mkdir build && cd build
cmake ..
make
sudo make install

在make的过程中出现报错,参考文献 ,亲测有效,后面编译会有warning,但不影响编译成功。

验证:

cd ../examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin

若出现一个彩色立方体则为安装成功。

安装opencv

版本是3.4.15,下载链接

安装依赖项:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev 
sudo apt-get install libavformat-dev libjpeg.dev libtiff5.dev 
sudo apt-get install libswscale-dev libjasper-dev 
sudo apt-get install libcanberra-gtk-module libcanberra-gtk3-module 

编译:

mkdir build && cd build 
cmake ..
make -j4
sudo make install

通过查询版本来判断是否安装成功

pkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs   opencv

安装eigen3

直接安装

sudo apt-get install libeigen3-dev

默认安装地址是 /usr/local/include/eigen3/ ,但不知道为什么我没有这个文件,应该没安装成功,于是选择源码安装:

下载地址 ,编译:

cd eigen3
mkdir build && cd build
cmake ..
make
sudo make install

复制头文件到/usr/local/include

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

编译ORB-SLAM2

下载地址

cd ORB_SLAM2
chmod +x build.sh
./build.sh

最后一步会报错

  • 报错 error: ’usleep’ was not declared in this scope ,在对应文件的头文件加上

    #include <unistd.h>
    

    大概有十来个文件需要加。

  • 出现错误:

    error: static assertion failed: std::map must have the same value_type as its allocator
    

    把源码中的include/LoopClosing.h文件中的

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
    

    改为:

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
    

再次 ./build.sh,则编译成功。

下一篇运行ORB-SLAM2,有人要看的话就写!

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值