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

最后還是附一張編譯成功的圖

后期總結建圖方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM