错误日志

1.

1
2
3
4
5
6
The following packages have unmet dependencies:
dpkg : Breaks: libapt-pkg5.0 (< 1.7~b) but 1.6.17 is to be installed
E: Broken packages

解决方法
sudo apt remove ubuntu-advantage-tools

ORB-SLAM2

ORB-SLAM2 是用于单目、立体和 RGB-D 相机的实时 SLAM 库,用于计算相机轨迹和稀疏 3D 重建(在具有真实比例的立体和 RGB-D 情况下)。它能够检测循环并实时重新定位相机。我们提供了在 KITTI 数据集中以立体或单目运行 SLAM 系统的示例,在 TUM 数据集中以 RGB-D 或单目运行,在 EuRoC 数据集中以立体或单目运行 SLAM 系统。我们还提供 ROS 节点来处理实时单目、立体声或 RGB-D 流。该库可以在没有ROS的情况下进行编译(引自ORB-SLAM2)

1 安装环境:

ubuntu 18.04 LTS

2 依赖:

C++11

一般ubuntu 环境创建好后默认是存在的,验证命令

1
gcc -v 

Pangolin

官网Plangolin,ORB-SLAM2要求的版本为 v0.5

下载

1
2
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git ```
cd Pangolin

切换版本

检查是否有 v0.5 这个标签

1
git tag

如果存在 v0.5这个标签,可以直接切换到该版本

1
git checkout v0.5 

或者可以直接创建一个新分支,并切换到v0.5 版本

1
git checkout -b new_branch_name v0.5 

依赖

1
2
3
4
5
6
7
8
9
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install cmake
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
sudo apt install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
sudo apt install libdc1394-22-dev libraw1394-dev
sudo apt install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev

特殊依赖

1
sudo apt-get install libeigen3-dev	

编译安装

1
2
3
4
5
6
cd Pangolin
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install

OpenCV

下载

1
2
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

切换版本

1
2
3
4
cd opencv_contrib
git checkout 3.4.6
cd ../opencv
git checkout 3.4.6

依赖

1
2
3
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

编译安装

1
2
3
4
5
6
cd opencv
mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j4
sudo make install

环境声明

build目录下,打开编写一个空白的文件opencv.conf,在其中追加/usr/local/lib

1
2
cd build
sudo gedit /etc/ld.so.conf.d/opencv.conf

使刚才的路径配置生效 sudo ldconfig

配置 bashrc

1
sudo gedit /etc/bash.bashrc'

在结尾处添加

1
2
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH

保存关闭文件使之生效 source /etc/bash.bashrc

Eigen3

1
sudo apt-get install libeigen3-dev 

DBoW2 and g2o (Included in Thirdparty folder)

ROS (optional)

编译

1
2
3
cd ORB_SLAM2
chmod +x build.sh
./build.sh

运行与测试

1 . RGB-D测试

数据集TUM
使用 python 脚本 associate.py 关联 RGB 图像和深度图像

1
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt

执行以下命令。将 freiburg1freiburg2freiburg3 序列分别更改为 TUM1.yamlTUM2.yamlTUM3.yaml。更改为未压缩的序列文件夹。更改为相应关联文件的路径
TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE

需注意该命令有四个参数方可执行成功。

1
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE

示例

1
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml datasheet/rgbd_dataset_freiburg1_xyz Examples/RGB-D/associations/fr1_xyz.txt 

错误解决方案

1. 找不到opencv

OpenCV > 2.4.3 not found
修改ORB-SLAM2 和 Thirdparty/DBoW2 中的 CMakelsit.txt,将 opencv3.0 改为 4.4

1
2
3
4
5
6
7
find_package(OpenCV 4.4 QUIET)
if(NOT OpenCV_FOUND)
find_package(OpenCV 2.4.3 QUIET)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
endif()
endif()

2. 找不到 Eigen3

修改 ORB-SLAM2目录下 的 CMakelist.txt 中的

1
2
3
find_package(Eigen3 3.1.0 REQUIRED)
改为
find_package(Eigen3 3.1.0 REQUIRED NO_MUDULE)

3. 缺少头文件

1
error: ’usleep’ was not declared in this scope 

报错的文件包括:mono_euroc.cc、mono_kitti.cc、mono_tum.cc、rgbd_tum.cc、stereo_euroc.cc、stereo_kitti.cc、LoopClosing.cc、System.cc、Viewer.cc
在这些报错的文件中添加

1
#include <unistd.h> 

4. 头文件失效

fatal error: opencv/cv.h: 没有那个文件或目录
报错文件 ORBextractor.h

1
2
3
4
5

#include <opencv/cv.h>
替换为
#include<opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui_c.h>

5. Opencv定义更换

error:'CV_LOAD_IMAGE_UNCHANGED' was not declared in this scope

报错的文件包括:mono_euroc.cc、mono_kitti.cc、mono_tum.cc、rgbd_tum.cc、stereo_euroc.cc、stereo_kitti.cc

1
2
3
4

CV_LOAD_IMAGE_UNCHANGED
替换为
cv::IMREAD_UNCHANGED