以前成功配置过一次,后来电脑出了点问题重装了系统,现重新配置一下,比上次出的错多多了,特来记录一下。
第一遍安装时不知道是哪里除了问题,后面编译的时候报了巨多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
默认安装地址是
下载地址 ,编译:
cd eigen3 mkdir build && cd build cmake .. make sudo make install
复制头文件到
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;
再次
下一篇运行ORB-SLAM2,有人要看的话就写!