SLAM ORB-SLAM2(2)编译安装
发布时间
阅读量:
阅读量
在Ubuntu 20.04上安装SLAM ORB-SLAM2涉及多个步骤:首先安装软件包依赖如Eigen、Pangolin和OpenCV;接着依次安装这些库;然后下载ORB-SLAM2源码并进行修改;最后扩展交换空间并编译软件包以生成动态连接库libORB_SLAM2.so。
SLAM ORB-SLAM2(2)编译安装
-
1. 软件包依赖安装
-
2. 依赖安装
-
- 2.1. Eigen
- 2.2. Pangolin
- 2.3. OpenCV
-
3. ORB-SLAM2
-
- 3.1. 源码下载
- 3.2. 文件修改
- 3.3. 扩大交换空间
- 3.4. 编译
1. 程序包在配置过程中被依赖地进行安装
以一个纯净的ubuntu20.04桌面版为例
1.首先设置软件源为清华源
2.安装必要依赖
sudo apt-get install git cmake g++ gcc libglew-dev build-essential libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libopenexr-dev libtbb-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev pkg-config python3-numpy tree
2. 依赖安装
2.1. Eigen
Eigen3是一个C++编写的线性代数库,可以方便的进行向量、矩阵的数值运算
cd ~
git clone https://gitee.com/JoveH-H/eigen.git
cd eigen && git checkout 3.1.0
mkdir build && cd build
cmake ..
make -j4 && sudo make install
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
2.2. Pangolin
Pangolin是一个用于OpenGL显示/交互以及处理输入视频的库
cd ~
git clone https://gitee.com/JoveH-H/Pangolin.git
cd Pangolin && git checkout v0.5
mkdir build && cd build
cmake ..
进入Pangolin/src/CMakelists.txt文件
注释掉以下内容(第287-295/第308-332):
# find_package(FFMPEG QUIET)
# if(BUILD_PANGOLIN_VIDEO AND FFMPEG_FOUND)
# set(HAVE_FFMPEG 1)
# list(APPEND INTERNAL_INC ${FFMPEG_INCLUDE_DIRS} )
# list(APPEND LINK_LIBS ${FFMPEG_LIBRARIES} )
# list(APPEND HEADERS ${INCDIR}/video/drivers/ffmpeg.h)
# list(APPEND SOURCES video/drivers/ffmpeg.cpp)
# message(STATUS "ffmpeg Found and Enabled")
# endif()
# find_package(OpenNI QUIET)
# if(BUILD_PANGOLIN_VIDEO AND OPENNI_FOUND)
# set(HAVE_OPENNI 1)
# if(_LINUX_)
# add_definitions(-Dlinux=1)
# endif()
# list(APPEND INTERNAL_INC ${OPENNI_INCLUDE_DIRS} )
# list(APPEND LINK_LIBS ${OPENNI_LIBRARIES} )
# list(APPEND HEADERS ${INCDIR}/video/drivers/openni.h )
# list(APPEND SOURCES video/drivers/openni.cpp)
# message(STATUS "OpenNI Found and Enabled")
# endif()
# find_package(OpenNI2 QUIET)
# if(BUILD_PANGOLIN_VIDEO AND OPENNI2_FOUND)
# set(HAVE_OPENNI2 1)
# if(_LINUX_)
# add_definitions(-Dlinux=1)
# endif()
# list(APPEND INTERNAL_INC ${OPENNI2_INCLUDE_DIRS} )
# list(APPEND LINK_LIBS ${OPENNI2_LIBRARIES} )
# list(APPEND HEADERS ${INCDIR}/video/drivers/openni2.h )
# list(APPEND SOURCES video/drivers/openni2.cpp)
# message(STATUS "OpenNI2 Found and Enabled")
# endif()
编译安装Pangolin
make -j4 && sudo make install
2.3. OpenCV
OpenCV就不用过多介绍了
需要注意的是 ORB-SLAM2 用的是 OpenCV3
cd ~
git clone https://gitee.com/opencv/opencv.git
cd opencv && git checkout 3.4.9
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
make -j4 && sudo make install
3. ORB-SLAM2
3.1. 源码下载
cd ~
git clone https://gitee.com/JoveH-H/ORB_SLAM2.git
若下载非官方源码,下载已经修改过的工程,则跳过下章节 3.2. 文件修改
cd ~
git clone https://gitee.com/JoveH-H/ORB-SLAM2.git ORB_SLAM2
3.2. 文件修改
编辑~/ORB_SLAM2/include/LoopClosing.h
gedit ~/ORB_SLAM2/include/LoopClosing.h
找到
Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
替换为
Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
然后还有打开下列文件,添加头文件#include<unistd.h>
gedit ~/ORB_SLAM2/src/LocalMapping.cc ~/ORB_SLAM2/src/LoopClosing.cc ~/ORB_SLAM2/src/System.cc ~/ORB_SLAM2/src/Tracking.cc ~/ORB_SLAM2/src/Viewer.cc ~/ORB_SLAM2/Examples/Monocular/mono_euroc.cc ~/ORB_SLAM2/Examples/Monocular/mono_kitti.cc ~/ORB_SLAM2/Examples/Monocular/mono_tum.cc ~/ORB_SLAM2/Examples/RGB-D/rgbd_tum.cc ~/ORB_SLAM2/Examples/Stereo/stereo_euroc.cc ~/ORB_SLAM2/Examples/Stereo/stereo_kitti.cc
3.3. 扩大交换空间
编译ORB_SLAM2前,建立16G的交换空间
sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1024M count=16 # 16*1024创建16G的内存分区
sudo mkswap /swapfile
sudo swapon /swapfile
3.4. 编译
cd ~/ORB_SLAM2
./build.sh
可以在ORB_SLAM2/lib的目录下看到动态连接库libORB_SLAM2.so就成功了

编译好后可以选择关闭交换空间
swapoff -a
sudo swapoff /swapfile
sudo rm /swapfile
谢谢
全部评论 (0)
还没有任何评论哟~
