动态SLAM毕设(三) ORB SLAM2、DynaSLAM安装
前言
本科毕设做的是一个基于ORB SLAM2的一个动态去除SLAM,感谢@XindaBack,学长帮了我很多忙。整个过程比较依赖github和百度以及CSDN上的文章,因此也想记录下自己做的东西。本人从纯小白学起,因此很多内容也没有理论支持,如有不对请及时指正,避免误导他人。如果有引用不当的问题也请提醒。
ORB SLAM2安装
网上有很多文章已经写的很详细了,我补充一些吧。
终端运行:
git clone https://github.com/raulmur/ORB_SLAM2.git
下载得到的ORB SLAM2安装包。
#安装pangolin依赖:
sudo apt-get install libglew-dev libpython2.7-dev libboost-dev libboost-thread-dev libboost-filesystem-dev -y
#安装openssl依赖:
apt-get install libssl-dev
#安装其他依赖
sudo apt-get install build-essential -y
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
#安装可选包
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install pkg-config -y
#安装cmake(源码)和cmake-gui。cmake默认安装在/usr/local/bin下
在cmake官网下载源码。我的是在home文件夹下编译的,版本是3.17.0。
运行命令编译:
./bootstrap
make
make install
#检查安装:
cmake --version
安装cmake gui
sudo apt-get install cmake-qt-gui
#安装eigen3
参考文章:ubuntu16.04+eigen3安装
在eigen3官网下载安装包,我的放在了home文件夹下。注意一下版本,最好是3.1.0之后的。
sudo tar -xzvf eigen-eigen-5a0156e40feb.tar.gz -C /usr/local/include
注意:/usr/local/include 也可以换成/usr/include 但是上面对应的位置也要匹配修改,该命令 tar -xzvf file.tar.gz 表示解压tar.gz文件, -C表示建立解压缩档案
这条指令将eigen-eigen-5a0156e40feb.tar.g文件解压到了/usr/local/include目录下,在/usr/local/include目录下得到文件eigen-eigen-5a0156e40feb
运行命令;
sudo mv /usr/local/include/eigen-eigen-5a0156e40feb /usr/local/include/eigen3
这条指令将eigen-eigen-5a0156e40feb文件 更名为eigen3
运行命令:
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
因为eigen3 被默认安装到了usr/local/include里了(或者是usr/include里,这两个都差不多,都是系统默认的路径),在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>所以要做下处理,否则一些程序在编译时会因找不到Eigen/Dense而报错。上面指令将usr/local/include/eigen3文件夹中的Eigen文件递归地复制到上一层文件夹(直接放到/usr/local/include中,否则系统无法默认搜索到 -> 此时只能在CMakeLists.txt用include_libraries(绝对路径了))
DynaSLAM安装
参考文章:
安装DynaSLAM
DynaSLAM源码
这里安装的是cpu版本。需要提前安装opencv2.4.11,参考:
下载源码:
git clone https://github.com/BertaBescos/DynaSLAM.git
下载coco,我是安装到了home文件夹
git clone https://github.com/waleedka/coco.git
下载maskrcnn必需文件:百度网盘 提取码:gbrt
准备tensorflow1.12.3版本(对应的keras为2.0.9)(直接复制链接到浏览器进行下载)
https://pypi.tuna.tsinghua.edu.cn/packages/84/db/5ba3fa1dedc0cdf02fc7cb19592a52974cff8cdbbf788c172b68d5371bc3/tensorflow-1.12.3-cp27-cp27mu-manylinux1_x86_64.whl (83.1MB)
然后直接通过pip的方式进行安装,没有pip的先行安装pip
sudo pip install tensorflow-1.12.3-cp27-cp27mu-manylinux1_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装keras:
sudo pip install keras==2.0.9 -i https://pypi.tuna.tsinghua.edu.cn/simple
进入coco/PythonAPI
cd coco/PythonAPI
sudo make install
将编译好的pycocotools(在coco/PythonAPI/中)放置到我们下载好的Dynaslam的src/python目录下,然后将数据集mask_rcnn_coco.h5放置在Dynaslam的src/python目录下
打开Check.py 文件将17行的
ROOT_DIR = "src/python"
改为
ROOT_DIR = "./"
运行
python Check.py #以此检验python部分是否有错误
安装boot库
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev #这个命令不一定正确,大家可以先忽略这一步,后续根据报错信息进行安装缺失的依赖
sudo apt-get install libboost-all-dev #或者根据这个命令安装boost库
将Dynaslam根目录中的CMakeLists.txt 以及 Thirdparty中DBoW2和g2o中的CMakeLists.txt文件中的 -match native去掉 (否则会报核心转储的错误)
打开Dynaslam根目录中的CMakeLists.txt,如果你的src等文件夹中有mono_carla文件,就忽略这部,没有的话,删掉最后这三行:
add_executable(mono_carla
Examples/Monocular/mono_carla.cc)
target_link_libraries(mono_carla ${PROJECT_NAME})
同时,找到这段话:
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/include
${EIGEN3_INCLUDE_DIR}
${Pangolin_INCLUDE_DIRS}
/usr/include/python2.7/
/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/
${Boost_INCLUDE_DIRS}
)
如果你的/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/不正确,需要改为/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/
找到
find_package(OpenCV 2.4.11 QUIET)
if(NOT OpenCV_FOUND)
message("OpenCV > 2.4.11 not found.")
find_package(OpenCV 3.0 QUIET)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV > 3.0 not found.")
endif()
endif()
如果你的opencv跟我一样没有安装在默认位置,这里需要修改为:
set(OpenCV_DIR ~/opencv-2.4.11/build/installed/share/OpenCV)
message("PROJECT_SOURCE_DIR: " ${OpenCV_DIR})
find_package(OpenCV 2.4.11 QUIET)
或者
set(OpenCV_DIR ~/opencv-2.4.11/build)
message("PROJECT_SOURCE_DIR: " ${OpenCV_DIR})
find_package(OpenCV 2.4.11 QUIET)
其中OpenCV_DIR后面最好是绝对路径。
其余按照参考文章来就好了
运行:安装好之后,在DynaSLAM根目录中新建data文件夹,在data文件夹中再新建两个文件夹mask和output。运行
./Examples/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml /home/arm19c/data/rgbd_dataset_freiburg3_walking_xyz /home/arm19c/data/rgbd_dataset_freiburg3_walking_xyz/associate.txt