ORB-SLAM2安装和运行教程

前言

默认已经安装了cmake、git 、gcc 和g++

更新apt库,更新软件列表

sudo apt-get update

版本

以下库均可以通过apt-get方式安装,但是非常不建议这样做,版本不同,最后会报很多错,强烈建议源码安装!!!!!

Eigen3.3.7

Pangolin 0.6 提取码:45bo

OpenCV3.4.5 提取码:m27t

安装Pangolin

如果当前版本不是Pangolin 0.6 ,建议将之前版本删除,Pangolin文件夹即你之前安装的,具体方法如下,

cd Pangolin/build
make clean
sudo make uninstall

cd ../..
sudo rm -r Pangolin

sudo updatedb
locate pangolin
sudo rm -r /usr/local/include/pangolin

1.依赖项安装:

sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev

2.下载Pangolin

Pangolin 0.6 提取码:45bo,将下载后的文件夹放到指定目录,即当前安装的目录

unzip Pangolin-0.6.zip && mv Pangolin-0.6 Pangolin

3.编译和安装

cd Pangolin
mkdir build && cd build 
cmake -DCPP11_NO_BOOST=1 ..
sudo make install

安装OpenCV

同样的,ORB—SLAM2对应的OpenCV的版本的是3,为了避免后续bug,建议将版本4删除,方法如下:

cd OpenCV/build

sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

1.安装依赖项

sudo apt --fix-broken install
sudo apt-get update
sudo apt-get upgrade

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev
sudo apt-get install libtiff5.dev libswscale-dev

sudo apt-get install software-properties-common

sudo apt-get update
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
sudo apt-get install libjasper1 libjasper-dev

2.下载

OpenCV3.4.5源码 提取码:m27t

tar -xvf opencv-3.4.5.tar.gz && mv opencv-3.4.5 opencv

3.安装

cd opencv
mkdir build && cd build 
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j
sudo make install

安装Eigen

1.下载

Eigen3.3.7

解压并重命名为eigen

tar -xvf eigen-3.3.7.tar.gz && mv eigen-3.3.7 eigen

2.安装

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

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

在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>因此安装后需要将头文件从 /usr/local/include/eigen3/ 复制到 /usr/local/include

安装ORB-SLAM2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

报错解决

通过上述步骤,正常来说会出现如下两个错误

错误1:编译时出现了error: ‘usleep’ was not declared in this scope usleep(1000);

解决:在 ORB_SLAM2/include/System.h 中加上 #include <unistd.h>

错误2:Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;报错

解决:在LoopClosing.h中将 Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;改为Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;

至此,ORB-SLAM2应该能够编译通过!

运行ORB-SLAM2

单目模式运行

数据下载链接,下载如下数据集:

img

解压数据集

tar -xvf rgbd_dataset_freiburg1_desk.tgz

执行如下命令,在ORB-SLAM2的路径下,注意/home/ubuntu/rgbd_dataset_freiburg1_desk/是数据集地址,需要换成你自己的。

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/ubuntu/rgbd_dataset_freiburg1_desk/

不出意外又出意外了:
画面出来之后2s左右突然闪退

New Map created with 86 points
double free or corruption (out)
已放弃 (核心已转储)

删除掉ORBSLAM的cmakelists中的-march=native以及 g2o 的cmakelists中的-march=native
重新执行ORBSLAM目录下的./build.sh 后就可以正常跑了
在这里插入图片描述

相关推荐

  1. 动态SLAMORB-SLAM2+YOLOv8

    2024-03-19 17:58:04       36 阅读
  2. SLAM ORB-SLAM2(12)估算运动并初始地图点

    2024-03-19 17:58:04       52 阅读
  3. ORB-SLAM2算法单目流程

    2024-03-19 17:58:04       30 阅读
  4. SLAM ORB-SLAM2(16)奇异值分解

    2024-03-19 17:58:04       50 阅读
  5. 在realsense D455相机上运行orb_slam3

    2024-03-19 17:58:04       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-19 17:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-19 17:58:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-19 17:58:04       82 阅读
  4. Python语言-面向对象

    2024-03-19 17:58:04       91 阅读

热门阅读

  1. MATLAB中的优化工具箱和统计工具箱有什么功能?

    2024-03-19 17:58:04       36 阅读
  2. 在CentOS 7上快速安装配置Nginx

    2024-03-19 17:58:04       36 阅读
  3. Fastapi参数说明

    2024-03-19 17:58:04       51 阅读
  4. Android 实现照片抠出人像。

    2024-03-19 17:58:04       45 阅读
  5. Spring的事务框架

    2024-03-19 17:58:04       44 阅读
  6. linux 常用命令

    2024-03-19 17:58:04       39 阅读
  7. SQL注入无回显,利用DNSlog构造方式

    2024-03-19 17:58:04       37 阅读
  8. Linux学习笔记-Linux学习方法

    2024-03-19 17:58:04       46 阅读
  9. Ubuntu 22.04上构建libvirt源码错误解决

    2024-03-19 17:58:04       34 阅读