代码链接:https://github.com/ethz-asl/segmap.git
参考教程链接:ubuntu16.04编译segmap - Lachiven - 博客园
官方教程和参考教程具有很重要的意义,为了下一次依然能够完整编译,记录如下:
使用环境 ubuntu16.04、ros Kinect
1、安装编译过程中所需要的依赖包:
$sudo apt-get install python-wstool doxygen python3-pip python3-dev python-virtualenv dh-autoreconf
2、设置工作空间
$ mkdir -p ~/segmap_ws/src
$ cd ~/segmap_ws
$ catkin init
$ catkin config --merge-devel
$ catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
这个过程中会遇到catkin命令不存在的现象,主要因为较新版本的ros使用catkinmake命令,解决方法(catkin_make其实也ok)
# 安装catkin
$ sudo apt-get update
$ sudo apt-get install python-catkin-tools
3、使用wstool获取依赖
$ cd src
$ git clone https://github.com/ethz-asl/segmap.git
$ wstool init
$ wstool merge segmap/dependencies.rosinstall
$ wstool update
4、编译tensorflow
#创建虚拟环境
$ virtualenv ~/segmappyenv
$ source ~/segmappyenv/bin/activate
(segmappyenv)$ pip install --upgrade pip
(segmappyenv)$ pip install catkin_pkg empy pyyaml
对于ubuntu16.04使用需要对tensorflow进行编译,使用cpu版本会导致后面速度较慢。
安装tensorflow的过程涉及到bazel的安装,安装tensorflow-1.8使用的为bazel1.1版本
安装bazel
https://github.com/bazelbuild/bazel/releases下载对应的版本
chmod +x bazel-0.16.1-installer-linux-x86_64.sh
./bazel-<version>-installer-linux-x86_64.sh --user
#写一下环境文件
sudo gedit ~/.bashr
#复制粘贴以下内容 保存
export PATH="$PATH:$HOME/bin"
source ~/.bashrc
tensorflow的安装(采用链接中的教程)
接下来在虚拟环境中操作。。也就是说前面需要看到(segmappyenv)source ~/segmappyenv/bin/activate
然后cd到tensorflow文件下
(segmappyenv)$./configure 除了是否需要cuda支持其余全部默认即可(bazel0.10.0默认用上面的cuda9.0cudnn7.0)
(segmappyenv)$ bazel build --config=opt --define framework_shared_object=true tensorflow:libtensorflow_cc.so (这也是github官网推荐的代码)
编译时间很长..
5、配置其他环境
$sudo apt-get install autoconf automake libtool
$ git clone https://github.com/doxygen/doxygen.git
$ cd doxygen
$ mkdir build
$ cd build
$ cmake ..
$ make -j4(几核就写几我是四核,可加快速度)
$ sudo make install
6、安装Protocol Buffers-3.5,否则在后期将会报错
https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.0
下载完之后
./configure
make
make checksudo
make install
protoc --version
7、编译tensorflow_ros_cpp
$ cd ~/segmap_ws
$ catkin build tensorflow_ros_cpp
这个过程可能报错,主要因为没能找到tensorflow包的位置
设置 CMakeLists.txt 内 tensorflow 的路径
修改:
set(TF_BAZEL_LIBRARY “CATKIN_DEVEL_PREFIX/…/libtensorflow_cc.so” CACHE STRING “Path to the bazel-compiled Tensorflow C++ library”)
set(TF_BAZEL_SRC_DIR “${CATKIN_DEVEL_PREFIX}/…/tensorflow-include-base” CACHE STRING “Path to the Tensorflow sources directory”)
内的 tensorflow 的库路径和源码路径为上步骤确定的路径
#例如
set(TF_BAZEL_LIBRARY “/home/ubuntu/tensorflow-r1.8/bazel-bin/tensorflow/libtensorflow_cc.so” CACHE STRING “Path to the bazel-compiled Tensorflow C++ library”)
set(TF_BAZEL_SRC_DIR “/home/ubuntu/tensorflow-r1.8” CACHE STRING “Path to the Tensorflow sources directory”)
中间可能会涉及到enum34错误
使用pip进行安装
8、完成后复制 ~/tensorflow/bazel-bin/tensorflow/libtensorflow_framework.so 到 ~/segmap_ws/devel/lib中 不然容易出错
9、部分展示
![031d28aed8b25ba20da116d83f8d1f7a.png](https://i-blog.csdnimg.cn/blog_migrate/51448e57b60f4e28ff0e571fe72ba838.jpeg)