ubuntu18.04+nvidia GTX1060+cuda10.0+cudnn7.3.0配置DS-SLAM

硬件条件如题

cuda+cudnn安装见上一遍博文。

DS-SLAM的配置步骤

 

0. 在自己的工作目录下/home/jerry/ 新建文件夹/catkin_ws/src

进入新建的src目录下 安装ORB_SLAM 配置ROS 参考之前的博文。

 

1. 根据作者的github

cd catkin_ws/src
git clone https://github.com/zoeyuchao/DS-SLAM.git
git clone https://github.com/OctoMap/octomap_mapping.git
git clone https://github.com/OctoMap/octomap_rviz_plugins.git
cd /home/jerry/catkin_ws/src/DS-SLAM/Examples/ROS/ORB_SLAM2_PointMap_SegNetM
git clone https://github.com/navganti/caffe-segnet-cudnn7.git #原作者给的是https://github.com/TimoSaemann/caffe-segnet-cudnn5 但是这里我们根据自己的cudnn版本调整

2. 编译编译caffe-segnet-cudnn7

注意:网上很多教程这里没描述清楚,我以为要先编译caffe,在编译caffe-segnet-cudnn7,不过可能也是因为我对caffe没什么了解所以误解了。总之这里直接编译caffe-segnet-cudnn7就行。

具体步骤如下:

mkdir cmake_build
cd cmake_build
cmake ..
make
make runtest
sudo make install

cmake的时候会报错Could NOT find LMDB (missing: LMDB_INCLUDE_DIR LMDB_LIBRARIES)

解决办法

sudo apt install libgflags-dev libgoogle-glog-dev liblmdb-dev -y

然后仍然报错Could NOT find LevelDB (missing: LevelDB_INCLUDE LevelDB_LIBRARY)

sudo apt install libgflags-dev libgoogle-glog-dev libleveldb-dev -y

然后仍然报错Could NOT find Snappy

sudo apt-get install libsnappy-dev

仍然报错Could NOT find Atlas

sudo apt-get install libopenblas-dev

如果还不行的话在编译的时候使用 cmake -DBLAS=open  ..进行编译

报错Error: CUDA_cublas_device_LIBRARY (ADVANCED) not found

参考issues,原因是我的cmake版本太低,需要升级cmake版本到3.12.2以上

附:通过cmake --version可以查看cmake版本

apt remove cmake
cd /usr/src
wget https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0.tar.gz
tar -zxvf cmake-3.16.0.tar.gz
cd cmake-3.16.0
apt install libssl-dev build-essential

sudo ./bootstrap  
sudo make 
sudo make install

通过以上方式可以升级cmake,但是在remove旧版本的cmake的时候,ros也被remove了,参考这篇文章,在安装完新版本的cmake后需要重新安装ros,从官方教程1.4开始安装就行

其次wget下载总是不成功,可能是版本3.16.0版本也已经很旧了 ,我直接上github在release里下载的3.18.1版本

最后在make install之后要cmake --version会报错"CMake Error: Could not find CMAKE_ROOT !!!"

hash -r

通过以上命令清楚缓存即可

接下来caffe-segnet-cudnn7编译过程应该一路畅通。

3. 编译安装OtcoMao和RVIZ

安装ros的一些包(注意ros版本要对上)

sudo apt-get install ros-melodic-octomap ros-melodic-octomap-mapping 
sudo apt-get install ros-melodic-octomap-msgs ros-melodic-octomap-ros ros-melodic-octomap-rviz-plugins

修改环境变量(我用到是shell是zsh,如果用到是bash就修改~/.bashrc)

sudo vim ~/.zshrc
#在最后一行添加
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/jerry/catkin_ws/src/DS-SLAM/Examples/ROS/ORB_SLAM2_PointMap_SegNetM
#保存退出后再执行命令使修改生效
source ~/.zshrc
#为了确保成功可执行一下命令查看
echo $ROS_PACKAGE_PATH

4. 修改CMakeLists

将所有CMakeLists.txt文件中的cudnn5修改成cudnn7,包括如下三个路径:

/home/jerry/catkin_ws/src/DS-SLAM
/home/jerry/catkin_ws/src/DS-SLAM/Examples/ROS/ORB_SLAM2_PointMap_SegNetM
/home/jerry/catkin_ws/src/DS-SLAM/Examples/ROS/ORB_SLAM2_PointMap_SegNetM/libsegmentation

同时将DS-SLAM目录下的CMakeLists.txt中的如下代码取消注释

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)

5. 拷贝Thirdparty and Vocabulary,替换TemplatedVocabulary.h

作者的github中提供了第三方库和词典,通过如下百度网盘下载后拷贝到DS-SLAM目录下

provided at https://pan.baidu.com/s/1-zWXlzOn-X0tjoEF9XI6qA, extract code: 8t7x)

TemplatedVocabulary.h文件如何不替换 据说编译时会出现词典错误,因为我是直接就替换了才编译的,所以不确定这一点。

6. 添加segnet模型

作者github中有提供There is the folder of models(provided at https://pan.baidu.com/s/1gkI7nAvijF5Fjj0DTR0rEg extract code: fpa3), please download and place the folder in the same path with the folder of prototxts and tools.

在第5项的something about Folders里

下载下来拷贝到如下目录

/home/jerry/catkin_ws/src/DS-SLAM/Examples/ROS/ORB_SLAM2_PointMap_SegNetM

到此就能正确编译了。

cd DS-SLAM
chmod +x DS_SLAM_BUILD.sh
./DS_SLAM_BUILD.sh            #注意根据自己的处理器修改脚本文件中的make -j12 我第一次运行的时候直接卡死了,后来修改为make -j4就正常了

编译过程中的输出信息比较多,建议输出到日志文件中查看error信息

./DS_SLAM_BUILD.sh >log.log 2>&1

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值