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
如果出現以下則說明安裝成功