voxblox-plusplus编译总结

voxblox++是在voxblox基础上改进的,基于RGB-D相机的用于构建语义地图的ROS包。这两天想使用一下看看效果,因为遇到了挺多问题,所以记录一下。另外,过程中需要下载的一些资源(包括整个source目录下的源码)我已经上传到了百度云里,方便大家下载,希望大家能给我的文章点个赞!

好了,废话不多说,开始安装吧。

步骤基本跟着github上的教程来操作。我的系统是Ubuntu16.04,cuda使用8.0,对应的cudnn为6.0。如果不对的话,这里提供一下各种版本的cuda以及对应的cudnn给大家:https://download.csdn.net/download/qq_35590091/13110716

另外,source目录下的源码:链接: https://pan.baidu.com/s/1asSIjxbXDpqppEaHZz94-Q  提取码: 7jf8 

使用nvcc -v以及cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

分别查看cuda以及cudnn版本。

注:如果不使用cuda8.0和cudnn6.0可能后面编译的时候会出现:

ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory
和
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

这就是在/usr/local/cuda目录下找不到上面的两个文件。 

步骤一

安装各种依赖:

sudo apt update
sudo apt install python-dev python-pip python-wstool protobuf-compiler dh-autoreconf
pip2 install 'protobuf>=3.0.0a3' scipy scikit-image ipython 'keras==2.0.8'
pip2 install tensorflow-gpu==1.3.0

这里注意,我将keras的版本调整成了2.0.8,官网为2.1.6,之所以这样,是因为我安装2.1.6版本之后,运行时出现错误:

TypeError: softmax() got an unexpected keyword argument 'axis' 

经过一番查询之后,发现是keras的版本问题,因此这里给大家一个提醒。

此外,我还把tensorflow-gpu的版本指定为了1.3.0,因为如果不指定,就会安装最新版本的tensorflow-gpu,但是新版本的可能不支持cuda8.0。所以选择了1.3.0。


步骤二

开始clone以及下载各种文件。

export ROS_VERSION=kinetic # (Ubuntu 16.04: kinetic, Ubuntu 18.04: melodic)
export CATKIN_WS=~/catkin_ws #(这里设置成你自己的工作空间)

如果没有工作空间的话,就自己创建一个工作空间,如下:

mkdir -p $CATKIN_WS/src && cd $CATKIN_WS
catkin init
catkin config --extend /opt/ros/$ROS_VERSION --merge-devel 
catkin config --cmake-args -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release
wstool init src

然后开始clone仓库,以及下载需要的各种第三方的库:

cd $CATKIN_WS/src
git clone --recurse-submodules https://github.com/ethz-asl/voxblox-plusplus.git
wstool merge -t . voxblox-plusplus/voxblox-plusplus_https.rosinstall
wstool update

执行ws update之后,就会开始下载,我的话使用了代理进行下载,否则的话使用国内的网可能个比较慢。

注:另外,我在后面进行编译的时候还出现了:

File "/usr/lib/python2.7/urllib2.py", line 1205, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>

原因可能是前面下载的时候使用的是代理,但是后面catkin build的时候没有用,所以,大家最后在整个安装编译过程一直都要打开代理,因为后面的catkin_build也需要使用代理,也会下载一堆东西。

然后就是开始进行编译工作,执行:

catkin build mask_rcnn_ros depth_segmentation gsm_node

在这个执行过程中可能会出现很多问题,这里我把我遇到的都记录下来。

  1. 运行到一半卡住不动。具体原因在官网也说了,好象是多线程编译的时候RAM够,反正运行的时候,一定要在最后加上-j1 -l1,也就是执行:
    catkin build mask_rcnn_ros depth_segmentation gsm_node -j1 -l1

    只是用一个线程来编译。另外:有可能在编译opencv3_catkin以及pcl_catkin这一部分时卡住很久,这是正常的,等等就好,我就一直开在10%,然后我就给他自己运行,没管他了。

  2. 运行时出现:

      File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
      File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
      File "h5py/h5f.pyx", line 88, in h5py.h5f.open
    IOError: Unable to open file (truncated file: eof = 53772288, sblock->base_addr = 0, stored_eof = 257557808)

    这是因为缺少了模型文件,因为~/.ros目录下应该有一个maskrcnn的模型文件(mask_rcnn_coco.h5),但可能下载有问题,比如我查看了一下我的mask_rcnn_coco.h5文件,大小只有52M,实际上这个文件有200多M。因此:

    首先进入:cd ~/.ros
    然后删除:rm -f ./mask_rcnn_coco.h5
    然后手动下载这个模型文件,然后复制:cp /path/to/your/model/mask_rcnn_coco.h5  ~/.ros/

    这里我提供一下我下载的模型文件:链接: https://pan.baidu.com/s/190wcUpA8XZkqnqNakcDyfQ 提取码: c72i 

  3. 遇到了:

    File "/home/azs/.local/lib/python2.7/site-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status
        pywrap_tensorflow.TF_GetCode(status))
    tensorflow.python.framework.errors_impl.InternalError: Failed to create session.

    下面的网站也提到了一样的错误:https://blog.csdn.net/qq_31112205/article/details/103186409
    但是我重启了一下电脑,又可以运行了。

  4. 编时时出现错误:

    ~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory

    解决:https://blog.csdn.net/u011736771/article/details/85960300

  5. 显示protoc版本不对,错误如下:

    /home/wei/Documents/project/worspace/build/voxblox/Block.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
     #error This file was generated by an older version of protoc which is
      ^
    /home/wei/Documents/project/worspace/build/voxblox/Block.pb.h:18:2: error: #error incompatible with your Protocol Buffer headers. Please
     #error incompatible with your Protocol Buffer headers.  Please
      ^
    /home/wei/Documents/project/worspace/build/voxblox/Block.pb.h:19:2: error: #error regenerate this file with a newer version of protoc.
     #error regenerate this file with a newer version of protoc.
      ^
    In file included from /home/wei/Documents/project/worspace/build/voxblox/Layer.pb.cc:5:0:
    /home/wei/Documents/project/worspace/build/voxblox/Layer.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
     #error This file was generated by an older version of protoc which is

    解决:重新安装新版本:https://blog.csdn.net/zhou4411781/article/details/100676193              我最后可以运行的版本是:2.6.1

  6. 编译时报错:

    unsupported/Eigen/MatrixFunctions: No such file or directory

    解决:网上找到别人的提问:https://answers.opencv.org/question/7666/build-failure-244-unsupportedeigenmatrixfunctions/
    以及:https://www.cnblogs.com/long5683/p/13601705.html
    我使用的就是下面一个网页里面的方法。

  7. 编译时遇到:/usr/local/include/eigen3/Eigen/src/Core/products/Parallelizer.h:162:19: error: ‘eigen_assert_exception’ is not a member of ‘Eigen’
       if (errorCount) EIGEN_THROW_X(Eigen::eigen_assert_exception());

    解决:https://blog.csdn.net/qq_25244255/article/details/109268128
    估计是cuda和eigen的版本不对应的问题,我这里的,将cuda版本降为8.0,但是还是不行,有可能是eigen版本不对,试一试降级成3.3.5看看。换成3.3.5可以了,具体的更换方法见:https://blog.csdn.net/qq_43247439/article/details/107574195?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

  8. 编译时出现:

    pcl/visualization/pcl_visualizer.h: No such file or directory
    
    

    可能是安装pcl_catkin的时候要下载东西,但是有的东西没下载完整,所以把build目录下的pcl_catkin删除了重新build,试一试。可以了。

以上就是编译的时候出现了的问题。接下来就准备运行程序。


运行

首先执行:

source ../devel/setup.bash 

然后执行:

roslaunch gsm_node scenenn_dataset.launch bag_file:=/home/wei/Documents/dataset/voxblox/scenenn_231.bag
或者
roslaunch gsm_node asl_office_floor_dataset.launch bag_file:=/home/wei/Documents/dataset/voxblox/asl_office_floor.bag

注意修改路径。

运行时可能遇到的一些问题如下:

  1. 安装完tensorflow-gpu之后,python2依然显示无法import tensorflow,解决:卸载tensorflow-gpu,然后重新安装,只不过这次安装时,前面没有加sudo。也有人说是路径问题,但是我这里没有路径问题。

运行之后什么画面也没有,就一个map1,里面还是空白的,但是奇怪的是没有任何报错,,,,解决:暂时不知道怎么解决,貌似我这个电脑运行的太慢??给他运行个几十秒就有图像了,另外pangolin的map1里面可能需要鼠标滚轮放大才能显示。


其他

最后,这个项目最近才看到,具体的细节也还没了解,也想尝试一下使用自己的数据集来运行看看,不过之前貌似在github上看到有人也问了类似的问题,而且我比较奇怪的一点是:好像看到最这自己说这个voxblox++只是用于建图的,他里面是没有VO的,这我就纳闷了,提供的数据集bag里面也没有发布每一帧的位姿数据的话题啊,没有位姿数据怎么进行建图呢?如果大家知道可以留个言。

另外这个建图效果在数据集里面看还是比较不错的,就不知道实际效果怎么样,以及如果想使用自己的数据集还需要进行那些参数的修改??

最后,给个运行效果图吧:

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值