DS-SLAM编译总结

DS-SLAM编译总结

  • 编译
    • caffe-segnet-cudnn5编译
  • OctoMap和RVIZ编译安装
  • 编译项目时出现orb词典错误
  • 在bashrc下添加路径
  • 修改CMakeLists.txt
  • 添加segnet模型
  • 编译DS-SLAM
  • 运行问题

编译

caffe-segnet-cudnn5编译

该库的编译与caffe一样,其中的Makefile.config文件Makefile文件都需要进行配置
参考教程
caffe-segnet-cudnn5的编译安装,其需要cuda8.0和cudnn5,且需要gpu需要支持compute_20
在cuda9.0和cudnn7.0.5的环境下也可以成功编译,不过需要在Makefile.config中再做相关调整
首先将USE_CUDNN :=1注释掉
其次修改CUDA_ARCH的参数

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
		-gencode arch=compute_20,code=sm_21 \
		-gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
		-gencode arch=compute_50,code=sm_50 \
		-gencode arch=compute_50,code=compute_50

这里需要删除

-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \

编译时会出现以下错误

fatal error: caffe/proto/caffe.pb.h: No such file or directory

如果真的找不到,则用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc,命令如下:

protoc --cpp_out=PATH/caffe/include/caffe/ caffe.proto
# 一般输入一下指令即可
protoc --cpp_out=../../../include/caffe/ caffe.proto

PATH应该替换为该项目所在目录下

注意,最后运行测试时
需要执行如下命令

sudo make runtest -j8

一定要加sudo,否则会报错,原因不知

OctoMap和RVIZ编译安装

需要在octomap_mapping/octomap_server/include/octomap_server目录下的OctomapServer.h文件中添加宏定义

#define COLOR_OCTOMAP_SERVER

先安装ros包

#官方只安装了前两个
sudo apt-get install ros-kinetic-octomap ros-kinetic-octomap-mapping ros-kinetic-octomap-msgs ros-kinetic-octomap-ros ros-kinetic-octomap-rviz-plugins ros-kinetic-octomap-server

下载DS-slam所需要的OctoMap和RVIZ
在ros工作空间目录下输入

catkin_make

则编译安装成功

编译项目时出现orb词典错误

可使用该TemplatedVocabulary.h或者TemplatedVocabulary.h(高翔)替换第三方库中的DBoW2库中相对应的文件
因为DS-SLAM给的第三方库中的该文件下定义的类中没有对应的loadFromBinaryFile(strVocFile)成员函数

在bashrc下添加路径

export  ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/DS-SLAM/Examples/ROS/ORB_SLAM2_PointMap_SegNetM

PATH需要修改为ROS工作空间src目录的路径

修改CMakeLists.txt

修改DS-SLAM路径下的CMakeLists.txt文件,需要将如下代码取消注释:

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)

否则会出现编译时找不到相应库的情况

添加segnet模型

模型下载,密码是fpa3
模型需要放在ORB_SLAM2_PointMap_SegNetM目录下

编译DS-SLAM

在编译DS-SLAM前
即执行以下命令

cd DS-SLAM
chmod +x DS_SLAM_BUILD.sh
./DS_SLAM_BUILD.sh

需要检查DS_SLAM_BUILD.sh文件

make -j12
# 改为,根据自己的处理器
make -j4

运行问题

执行roslaunch DS_SLAM_TUM.launch 时出现

E0509 14:38:52.222496 22357 common.cpp:113] Cannot create Cublas handle. Cublas won't be available.

解决方法
在/home目录下打开终端,输入:

sudo rm -rf .nv/

个人感觉只是装cudacudnn的问题,因为我并没有在字符界面中安装,并且没有以管理员权限安装,所以在执行很多cuda和cudnn应用时需要管理员权限。
采用上面方法后,在运行cuda和cudnn的应用时不再需要管理员权限,原因未知。

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