目录
一、下载ORB Slam2依赖
1、安装Pangolin
注意:选择0.5版本,否则会出现错误
(1)下载Pangolin
链接:https://pan.baidu.com/s/1_rhfvx5rW7LteLXig8J8sg?pwd=3lzi
提取码:3lzi
(2)安装Pangolin
下载完成后在Pangolin_v0.5目录下打开终端,执行以下命令:
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
编译成功后,可以通过以下代码进行测试。
cd examples/HelloPangolin
./HelloPangolin
2、安装Eigen
注意:千万不要使用 sudo apt-get install libeigen3-dev
因为这个命令下载的是3.2版本的eigen,从而无法与模板类的sophus相匹配(1)在官网(Eigen)下载安装包:eigen-3.3.7.tar.bz2 ,然后提取到此处
(1)下载Eigen3.3.7:https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
(2)安装Eigen
解压后,在eigen-3.3.7目录下打开终端
mkdir build
cd build
cmake ..
sudo make install
(3)测试是否安装完成
建立一个test.cpp文件用以测试
touch test.cpp
用gedit 打开测试文件,添加c++代码用于测试
gedit test.cpp
test.cpp
#include <iostream>
//需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include
#include <Eigen/Dense>
//using Eigen::MatrixXd;
using namespace Eigen;
using namespace Eigen::internal;
using namespace Eigen::Architecture;
using namespace std;
int main()
{
cout<<"*******************1D-object****************"<<endl;
Vector4d v1;
v1<< 1,2,3,4;
cout<<"v1=\n"<<v1<<endl;
VectorXd v2(3);
v2<<1,2,3;
cout<<"v2=\n"<<v2<<endl;
Array4i v3;
v3<<1,2,3,4;
cout<<"v3=\n"<<v3<<endl;
ArrayXf v4(3);
v4<<1,2,3;
cout<<"v4=\n"<<v4<<endl;
}
运行:
./test.cpp
出现错误:Eigen/Dense:没有那个文件或目录
解决办法:
安装完成后,编译器会去 /usr/local/include 或者 /usr/include 目录找头文件,但找到的是eigen3,并没有Eigen和unsupported,因此需要建立一个软连接,链接到这两个文件夹即可
如果eigen3文件在/usr/local/include 目录下
cd /usr/local/include
sudo ln -sf eigen3/Eigen Eigen
sudo ln -sf eigen3/unsupported unsupported
3、安装 Sophus
(1)fmt安装
①下载fmt
官方下载链接:
②解压后,在fmt-8.1.1目录下打开终端
mkdir build
cd build
cmake ..
make
sudo make install
(2)sophus安装
建立一个文件夹,右键在终端中打开后:
git clone https://github.com/strasdat/Sophus.git
cd Sophus/
mkdir build
cd build
cmake ..
make
sudo make install
4、 Ceres安装
先安装依赖项:sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
git下来
编译:
cd ceres-solver
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
问题: CMake 3.16...3.27 or higher is required. You are running version 3.5.1
解决参考链接:https://blog.youkuaiyun.com/qq_37425813/article/details/120436670
5、g2o安装
安装依赖:sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3
git下来
git clone https://github.com/RainerKuemmerle/g2o.git
编译:
cd g2o
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
6、 DBoW3安装
git下来
git clone https://github.com/rmsalinas/DBow3.git
mkdir build
cd build/
cmake ..
make
sudo make install
二、安装编译ORB_SLAM2
# 通过git下载ORB_SLAM2源码,需要科学上网
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
# 赋予shell文件运行权限
chmod +x build.sh
# 需要科学上网
# 博主根据个人电脑性能将build.sh里的make -j 修改为 make -j8
./build.sh
出现错误:
解决:在 ORB_SLAM2/include/System.h 中加上 #include <unistd.h>
安装完成:
三、运行Kitee数据集
1、数据集准备
链接:The KITTI Vision Benchmark Suite
2、单目模式运行演示案例
运行命令格式为:
./mono_kitti path_to_vocabulary path_to_settings path_to_sequence
该命令共有4个参数:
mono_kitti:为ORB-SLAM2编译生成的针对MONO_KITTI数据集的可执行文件,一般路径为ORB-SLAM2工程目录下Examples/Monocular/mono_kitti;
path_to_vocabulary为所选词典的路径,路径为ORB_SLAM2/Vocabulary/ORBvoc.txt;
path_to_settings为配置文件,存放在ORB-SLAM2/Examples/Monocular下,运行时选择了KITTI00-02.yaml(可选择别的),该配置文件中存放的相机的内参和外参,提取特征时候图像金字塔相关参数,可视化过程中用到的参数;
path_to_sequence为数据集路径,这个根据自己下载的kitti数据集路径来指定。这里在Examples/Monocular目录下存放数据集文件01,故目录为 ./Example/Monocular/01 (…/表示上层目录,./表示当前目录)
我的执行,如下:在ORB_Slam2目录下,开启终端,输入:
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml ./Example/Monocular/01
结果如下:
参考链接
致命错误:Eigen/Dense:没有那个文件或目录-优快云博客
ORB-SLAM2详细安装教程(ubuntu18.04)_orbslam2安装-优快云博客
ORB_SLAM2编译及试运行(含ROS)_/usr/local/include/pangolin/gl/opengl_render_state-优快云博客编译orbslam2出现的error: ‘usleep’ was not declared in this scope usleep(3000);_orb_slam2/src/tracking.cc:1512:13: error: ‘usleep’-优快云博客ORB SLAM2 编译报错 /usr/bin/ld:找不到 -lEigen3::Eigen - Weighting - 博客园 (cnblogs.com)从零开始构建ORB-SLAM2 (一)Pangolin v0.5的安装_pangolin 0.5-优快云博客ubuntu20.04 安装 Sophus库 slambook2_ubuntu安装fmt8.1.1-优快云博客ubuntu安装eigen3.3.7_ubuntu20.04编译安装eigen3.3.7-优快云博客