1. 程式人生 > 其它 >Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)

Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)


沒有宣告版本的環境搭建都是耍流氓,因此需要首先明確安裝autoware.ai1.14版本所需要的依賴環境,根據官網可知:

Ubuntu:18.04

ROS:Melodic

QT:5.9.5或者更高

CUDA:10.0

NVIDIA driver:410.48或者更高

cudnn(依照cuda選擇對應的版本)


  • Ubuntu的安裝就不說了,需要注意一點是安裝完ubuntu之後更新一下國內的下載源:

https://www.cnblogs.com/mengw/p/11408118.html

使用國內的源進行下載比較快

  • 安裝NVIDIA driver

在安裝新的驅動之前先將之前安裝的NVIDIA驅動解除安裝,如果是新裝的系統,那麼預設採用的是第三方驅動nouveau

解除安裝存在的NVIDIA driver:

sudo apt-get --purge remove nvidia*
sudo apt autoremove

輸入以下命令檢視,如果沒反應說明解除安裝成功了

sudo dpkg --list | grep nvidia-*

安裝driver的時候要注意先禁用一下UEFI secure boot(根據不同的電腦自行百度,但是奇怪的是有的電腦需要禁用有的不需要禁用),如果沒有禁用,安裝完driver之後重啟會出現/dev/sda clean... 的錯誤,還要注意一下driver版本的問題。

輸入以下命令檢視系統推薦的版本

ubuntu-drivers devices

輸出中有一行為

driver : nvidia-driver-440-server - distro non-free recommended

說明推薦的驅動版本是440(一般會滿足的),因此輸入以下命令採用自動安裝就行:

sudo ubuntu-drivers autoinstall

安裝完成之後重啟

重啟之後輸入以下命令顯示顯示卡資訊

nvidia-smi

注意:這時候會顯示一個CUDA version,一般會大於我們所需的版本,不用擔心,這不是執行的時候CUDA版本,下面正常安裝CUDA就行。

  • 安裝CUDA 10.0

根據官網上autoware.ai 1.14版本比如安裝CUDA 10.0,所以要根據官網上來以免出錯。

前提一定要禁用nouvean(其實在安裝完驅動重啟之後就會使用安裝的NVIDIA driver了)

使用以下命令檢視nouvean有沒有在執行,沒有輸出就說明沒有執行

lsmod | grep nouveau

如果nouveau執行的話就禁用它

sudo gedit /etc/modprobe.d/blacklist.conf

開啟檔案之後在最後一行加上:

blacklist nouveau

儲存之後在終端執行以下命令使其生效

sudo update-initramfs -u

下載CUDA 10.0 runfile檔案:

系統的選擇就按照上圖來,然後在runfile檔案所在的資料夾下執行:

sudo sh cuda_10.0.130_410.48_linux.run

這裡需要注意一點就是:當詢問你是否安裝driver的時候選n,因為我們之前單獨安裝過了。其餘的選y或者預設就可以了

還有一點,網上說在執行安裝命令的時候,後面加上 –no-opengl-files,但是我沒加,安裝選項裡也沒有類似的選擇,但是不加安裝下來也沒有問題

最後安裝的2個東西是:

CUDA 10.0 ToolKit

CUDA 10.0 Samples

然後新增環境變數~/.bashrc(下面是3個命令):

cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
sudo make
./deviceQuery

出現下圖說明成功了

  • QT 5.12的安裝(版本高於5.9.5就可以)

QT的安裝沒啥踩的坑,老老實實按照參考連結安裝就行

  • ROS Melodic的安裝

ROS安裝的坑還算是比較多的,不過按照下面的方法是可以的,最起碼能安裝上就可以了不是嗎?

ROS官方推薦軟體源設定為中國科技大學(USTC)或清華大學(Tsinghua),這裡將軟體源切換成中科大的源,執行以下命令(下面是1個命令):

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

新增Keys,執行以下命令(下面是1個命令):

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

然後執行以下命令來更新源:

sudo apt update
sudo apt upgrade

一定要保證所有的源都被命中或者被獲取,如果出現以下錯誤:

執行以下語句:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

(後面的簽名就改成錯誤裡報的簽名)

然後執行更新命令看看是否成功。

執行如下命令安裝ROS桌面完整版(這裡會遇到下載過慢的問題,我的解決方式:用v*n)(下面是2個命令)

sudo apt install ros-melodic-desktop-full
sudo apt-get install ros-melodic-rqt*

初始化rosdep:

sudo rosdep init

執行這句話一般會遇到兩個問題:

沒有該指令,解決方法:執行以下命令

sudo apt install python-rosdep

出現cannot download ...問題,解決方式:用v*n

然後執行更新指令:

rosdep update

安裝rosinstall:

sudo apt-get install python-rosinstall

載入環境設定檔案:

source /opt/ros/melodic/setup.bash

設定環境變數(下面是2個命令):

sudo apt install net-tools
gedit ~/.bashrc

在開啟的檔案中加入下面一行:

source /opt/ros/melodic/setup.bash

下面就是進行測試了:

然後進行小海龜測試:開啟3個終端,依次輸入(下面是3個命令)

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

如果能正常測試就沒問題了。

  • Autoware.ai 1.14的安裝

Autoware的小毛病還是比較多的,因此最好還是根據成功的經驗來

首先應該將ubuntu的編碼方式設為en_US.UTF-8否則在執行aotuware的時候你會收穫一下兩種錯誤:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe5 in position 103339: invalid continuation byte

xmbtextlisttotextproperty result code -2

設定方式:

sudo gedit /etc/default/locale

刪除全部內容後在檔案中新增:

LC_ALL="en_US.UTF-8"

然後執行

source /etc/default/locale

需要將當前使用者設定為不需要密碼的方式,否則會遇到如下錯誤:

sudo:沒有終端存在,且未指定askpass程式

設定方式:

sudo visudo

在最後一行加入(注意一定是最後一行

使用者名稱 ALL=(ALL) NOPASSWD: ALL

這兩個準備工作完成之後重啟一下再進行接下來的安裝

安裝階段:

安裝相關依賴(下面是4個命令)

sudo apt update
sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools

建立工作空間(下面是2個命令)

mkdir -p autoware.ai/src
cd autoware.ai

下載工作空間的配置

wget -O autoware.ai.repos "https://raw.githubusercontent.com/Autoware-AI/autoware.ai/1.14.0/autoware.ai.repos"

下載autoware到工作區

vcs import src < autoware.ai.repos

使用rosdep安裝依賴項(下面是2個命令)

rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

進行到這裡該下載的就下載完了,下面是編譯階段,但是在編譯開始之前還要進行一個操作,否則會有以下錯誤:

CMake Error at /home/sai/autoware.ai/install/autoware_build_flags/share/autoware_build_flags/cmake/autoware_build_flags-extras.cmake:32 (message):

GPU support on Melodic requires Eigen version>= 3.3.7

這是因為autoware對於Eigen庫的版本有要求,執行如下升級庫(下面是4個命令):

cd && wget http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz 
mkdir eigen && tar --strip-components=1 -xzvf 3.3.7.tar.gz -C eigen 
cd eigen && mkdir build && cd build && cmake .. && make && sudo make install 
cd && rm -rf 3.3.7.tar.gz && rm -rf eigen

升級完了之後生效的目錄依然是舊版的目錄,因此還要進行如下操作:

將/usr/local/share/eigen3/cmake下的全部檔案拷貝到/usr/lib/cmake/eigen3目錄下替換

下面就可以進行編譯了,注意一個細節:要將當前終端的目錄cd 到autoware.ai下

執行以下命令編譯支援CUDA的autoware:

AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

安裝完之後要修改一下run指令碼,否則在執行autoware的時候會提示找不到路徑,修改步驟如下(下面是2個命令):

cd ~/autoware.ai/install/runtime_manager/share/runtime_manager/scripts
gedit run

將對應的行修改為:

${OPTION_COMMAND}="bash -c 'source ~/autoware.ai/install/setup.bash;

下面就可以跑官方的demo了。

  • cudnn的安裝

在NVIDIA官網下載好對應版本的檔案後解壓進入目錄可以看到cuda資料夾,在噹噹前資料夾開啟終端,執行以下語句:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/cudnn.h

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

然後檢視是否安裝成功:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果出現以下則說明安裝成功