Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)

  • 电脑硬件配置及环境版本
  • 前言
  • 正文
  • 配置Mask RCNN
  • 安装pangolin
  • 安装Eigen
  • 安装boost库
  • 安装OpenCV
  • 运行效果

电脑硬件配置及环境版本

Ubuntu:16.04 LTS
CPU:E5-2620 v3
GPU:GeForce GTX TITAN X
Nvidia-Driver Version:384.130
Cuda:9.0
Cudnn:7.4.1
tensorflow:1.12.3
keras:2.0.9
OpenCV:2.4.11

前言

1.为了不与系统中的环境相互干扰,建议安装Anaconda3并创建虚拟环境,可以方便管理。
2.Dynaslam源码选择其Github库branch中的:DynaSLAM-bbescos-feature-carla

正文

配置Mask RCNN

1.安装与显卡驱动对应版本的Cuda和Cudnn,可以参考链接:在Ubuntu 18.04中配置GPU环境:安装CUDA 9.0等

2.安装tensorflow与keras

// 安装tensorflow1.12.3
pip install tensorflow-gpu==1.12.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/
// 对应keras2.0.9
pip install keras==2.0.9 -i https://pypi.tuna.tsinghua.edu.cn/simple/

3.COCOAPI安装过程
github链接:COCOAPI
下载之后进入PythonAPI目录中

cd cocoapi-master/PythonAPI

执行命令:

make

运行结果:

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第1张图片
之后运行:

sudo make install

运行结果:

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第2张图片
此时若出现ImportError: No module named Cython.Build 的错误,可以直接

pip install Cython

将缺少的包和依赖安装好之后,会出现pycocotools文件夹。前期有教程指出需要将其复制到Dynaslam库中src/python文件夹中,但在我的机器上不需要。若复制还会报“No module named pycocotools”错误,可能是因为两个pycocotools重名导致程序无法准确定位。

4.将mask_rcnn_coco.h5文件放在DynaSLAM-bbescos-feature-carla/src/python文件夹中

下载链接:mask_rcnn_coco.h5
提取码:dyna

5.运行Check.py文件
切换至DynaSLAM-bbescos-feature-carla/src/python目录中
修改其中的Check.py文件,将

ROOT_DIR = "src/python"

更换为:

ROOT_DIR = "./"

并执行:

python Check.py

此时依然可能会出现缺失某些包,如前所述,使用pip命令安装即可
最终运行结果为:

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第3张图片
至此完成Mask RCNN配置。

安装pangolin

1.下载pangolin源码包
Github:https://github.com/stevenlovegrove/Pangolin.git

2.安装依赖项

sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

3.编译安装pangolin

cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j4

安装Eigen

sudo apt-get install libeigen3-dev

安装boost库

sudo apt-get install libboost-all-dev

安装OpenCV

1.建议在OpenCV官网下载opencv2.4.11的source源码
Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第4张图片
2.安装OpenCV依赖的软件包,执行:

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 libjasper-dev libdc1394-22-dev

3.解压后,对OpenCV中的OpenCVDetectCXXCompiler.cmake文件进行替换
下载链接:OpenCVDetectCXXCompiler.cmake
提取码:dyna

4.运行

cd opencv-2.4.11/
mkdir build
cd build/

此时需要cmake编译源码。使用如下命令(为了不出现Cuda文件夹中的报错,忘记截图了):

cmake -D CMAKE_BUILD_TYPE=bulid -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..

运行结果:

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第5张图片
之后在build目录下运行:

//选择与自己CPU核心数相匹配的数字
make -j4

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第6张图片
5.最后运行

sudo make install

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第7张图片
Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第8张图片
至此OpenCV库安装完毕。

接下来,将Dynaslam库及其Thirdparty中的g2o和DBoW2的CMakeLists.txt中出现的-match native去掉。注意是3个文件,不要漏掉。

使用gedit将Dynaslam库src文件夹中viewer.cc打开,修改其出现imshow部分的代码:
修改前:

cv::imshow("DynaSLAM: Current Frame",im);
cv::imshow("DynaSLAM: Dynamic Frame", im_dyn);

修改后:

if(!im.empty())
{
     
	cv::imshow("DynaSLAM: Current Frame",im);
}
if(!im_dyn.empty())
{
     
	cv::imshow("DynaSLAM: Dynamic Frame", im_dyn);
}       

最后进行Dynaslam的编译工作,运行:

cd DynaSLAM-bbescos-feature-carla
bash build.sh

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第9张图片

在DynaSLAM-bbescos-feature-carla中创建文件夹并命名为data,并在data文件夹中再创建两个文件夹分别命名为:mask和output

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第10张图片

将associate过的数据集放在data文件夹中

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第11张图片

最后可以进行代码测试,执行:

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM3.yaml ./data/rgbd_dataset_freiburg3_walking_rpy/ ./data/rgbd_dataset_freiburg3_walking_rpy/associations.txt ./data/mask ./data/output

运行效果

Ubuntu16.04下DynaSLAM配置过程(基于tensorflow-gpu)_第12张图片

可以看到,数据集中的动态物体(人)已经被Mask了,在进行特征点提取时会从Mask之外的地方提取。

如有问题,欢迎与我交流。

本文参考链接:
[开源项目配置排坑]DynaSLAM
ubunto18.04编译Dynaslam的痛苦历程-----cpu的版本
ubunto18.04编译安装Dynaslam基于tensorflow-gpu版本
Ubuntu18.04配置开源项目DynaSLAM

你可能感兴趣的:(ubuntu,slam,tensorflow,opencv)