ubuntu16.04编译segmap

环境依赖:PCL1.9 tensorflow1.8.0 ros (pcl1.9 及 ros自行配置 ros配置时推荐用国内源)

2020年最近rosdep不易成功具体方法需要 sudo gedit /etc/resolv.conf
删掉其中所有内容替换为

nameserver 8.8.8.8 #google域名服务
nameserver 8.8.4.4 #google域名服务器

下面开始正题

一、下载源码及虚拟环境

$ sudo apt-get install python-wstool doxygen python3-pip python3-dev python-virtualenv dh-autoreconf

$ cd ~/segmap_ws
$ catkin init
$ catkin config --merge-devel
$ catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
$ cd src
$ git clone https://github.com/ethz-asl/segmap.git
$ wstool init
$ wstool merge segmap/dependencies.rosinstall
$ wstool update
$ virtualenv ~/segmappyenv
$ source ~/segmappyenv/bin/activate
(segmappyenv)$ pip install --upgrade pip
(segmappyenv)$ pip install catkin_pkg empy pyyaml

二、配置tensorflow

1.首先下载nvidia驱动 sudo add-apt-repository ppa:graphics-drivers/ppa 然后 sudo apt update 然后进入ubuntu设置安装某版本驱动

注:cuda9.0需390以上nvidia驱动版本

2.安装cuda

tensorflow1.8对应的是cuda9.0(从官网可以查的对应版本)下载.run文件 安装时ctrl+c阅读完成告知,然后accept 第一个选项是否安装nvidia驱动Y/N 此时选择N 后面的samples也不建议安装(实在用不到)最后就是
sudo gedit ~/.bashr
然后 复制粘贴以下内容 保存

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64

export PATH=$PATH:/usr/local/cuda-9.0/bin  

然后
source ~/.bashrc
然后
nvcc --version 查看是否安装成功

3.安装cudnn

下载完source文件直接extra(解压缩)到home目录下然后home下

sudo cp -a cuda/include/cudnn.h /usr/local/cuda/include/   
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64/

查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
然后同样跟3一样
sudo gedit ~/.bashr

然后 复制粘贴以下内容 保存
然后
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-9.0
source ~/.bashrc

4.编译tensorflow

此处需注意、此处需注意、此处需注意
segmap官网知ubuntu16.04 ubuntu18必须得通过bazel编译
此处我用的是bazel0.10.0 .sh文件 下载后

./bazel-<version>-installer-linux-x86_64.sh --user  注意--user否则没法安装

同样的还是得写一下环境文件
sudo gedit ~/.bashr
然后 复制粘贴以下内容 保存
然后
export PATH="$PATH:$HOME/bin"
source ~/.bashrc
然后下载tensorflow 1.8.0的源码

接下来在虚拟环境中操作。。也就是说前面需要看到(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官网推荐的代码)
编译时间很长..

三、配置其他环境

$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

四、开始配置

$ source ~/segmappyenv/bin/activate
(segmappyenv)$ cd ~/segmap_ws
(segmappyenv)$ catkin build tensorflow_ros_cpp -DFORCE_TF_PIP_SEARCH="OFF" -DFORCE_TF_BAZEL_SEARCH="ON"

编译后只有1 succeed 31skiped不要疑虑就是这样的因为你只编译了一个catkin

完成后复制 ~/tensorflow/bazel-bin/tensorflow/libtensorflow_framework.so 到 ~/segmap_ws/devel/lib中 不然容易出错 这是我在github中自己的问题:我的问题

(segmappyenv)$ cd ~/segmap_ws
(segmappyenv)$ catkin build segmapper

最后还是附一张编译成功的图

后期总结建图方法

posted @ 2020-03-26 19:23  Lachiven  阅读(1561)  评论(3编辑  收藏  举报