環境依賴: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
最后還是附一張編譯成功的圖
后期總結建圖方法