像教女朋友一樣教你安裝Autoware.ai
今天自動駕駛之心很榮幸邀請到夏嵩杰來分享Autoware.ai-1.14.0超詳細(xì)的安裝教程!如果您有相關(guān)工作需要分享,請?jiān)谖哪┞?lián)系我們!
作者?| 夏嵩杰
編輯 | 自動駕駛之心
本文檔以邏輯狀態(tài)進(jìn)行安裝,會遇到的錯誤也是大家最大可能遇到的,希望能幫助大家學(xué)習(xí)!
硬件支持
首選?i7?處理器,i5?也可以(8核)
8GB?-?32GB?運(yùn)行內(nèi)存
至少?30GB?硬盤存儲空間(推薦使用固態(tài)硬盤)
顯卡?NVIDIA?GTX?GeForce?GPU(980M或更高性能)
本機(jī)硬件
i5(8核)
8GB?運(yùn)行內(nèi)存
120GB?硬盤存儲空間
顯卡?NVIDIA?GTX?GeForce?1050?Ti
安裝可以分為docker和源碼安裝,兩者都可以,根據(jù)習(xí)慣或安裝過程是否順利進(jìn)行選擇。要注意的是一定要有g(shù)pu驅(qū)動?。?!
docker編譯
1. 安裝docker
運(yùn)行以下指令
sudo?apt-get?update
sudo?apt-get?install?apt-transport-https?ca-certificates?curl?software-
properties-common
curl?-fsSL?https://download.docker.com/linux/ubuntu/gpg?|?sudo?apt-
key?add?-
sudo?apt-key?fingerprint?0EBFCD88
sudo?add-apt-
repository?"deb?[arch=amd64]?https://download.docker.com/linux/ubuntu?$(lsb_release?-cs)?stable"
sudo?apt-get?update
sudo?apt-get?install?docker-ce
docker版本至少19以上。
2.安裝nvidia驅(qū)動
打開系統(tǒng)的軟件與更新,選擇附加驅(qū)動,等待可選驅(qū)動加載

加載完成:

這里我選擇的是470,對應(yīng)的cuda版本是11.4。選擇完點(diǎn)擊應(yīng)用即可,然后在終端輸入nvidia-smi可看到:

即完成。
3. 安裝docker-nvidia
運(yùn)行以下指令:
curl?-s?-L?https://nvidia.github.io/nvidia-docker/gpgkey?|?sudo?apt-key?add?-
distribution=$(.?/etc/os-release;echo?$ID$VERSION_ID)
curl?-s?-L?https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list?|?sudo?tee?/etc/apt/sources.list.d/nvidia-docker.list
sudo?apt-get?update
sudo?apt-get?install?-y?nvidia-docker2?
4.安裝autoware的docker版本
git?clone?https://gitlab.com/autowarefoundation/autoware.ai/docker.git
cd?docker/generic?
./run.sh
一般master是最新的1.14版本。在執(zhí)行./run.sh
時,通常會要求root權(quán)限,如果不想每次運(yùn)行docker都要用root權(quán)限,可以用下面的方法配置:
sudo?groupadd?docker
sudo?usermod?-aG?docker?$USER
newgrp?docker
耐心等待下載,需要下載一段時間了,下載完成之后可能會報(bào)一個錯誤:usermod: UID '0' already exists:

需要手動修改一下剛才運(yùn)行的run.sh腳本,加入這一段內(nèi)容:
USER_ID="$(id -u)"
if [ USER_ID != 0 ]; then
USER_ID=1000;
else
USER_ID=${USER_ID};
fi

注意,安裝完會在下載autoware-docker相應(yīng)路徑生成shared_dir文件夾,方便傳文件到docker。
5.編譯
cd?/home/autoware/Autoware?(此目錄為工程目錄)
colcon?build?--cmake-args?-DCMAKE_BUILD_TYPE=Release
可以不用編譯,docker版本已經(jīng)編譯好了。
6.運(yùn)行
source?install/setup.bash
roslaunch?runtime_manager?runtime_manager.launch

源碼編譯
ubuntu20編譯源碼會出現(xiàn)一堆版本問題,建議使用ubuntu18.04,還有安裝一下cuda驅(qū)動,安裝方式如docker里面介紹。
1.創(chuàng)建工程
mkdir?-p?autoware.ai/src
cd?autoware.ai
2.下載源碼
wget?-O?autoware.ai.repos?"https://raw.githubusercontent.com/Autoware-AI/autoware.ai/1.14.0/autoware.ai.repos"
vcs?import?src?<?autoware.ai.repos
3.使用rosdep安裝依賴
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
如果rosdep update報(bào)錯:index-v4.yaml文件找不到
解決方法參考:https://zhuanlan.zhihu.com/p/479551543

如果出現(xiàn)以上錯誤,缺什么安裝什么,比如 sudo apt-get install ros-melodic-rosbridge-server。
最后成功。

4.python2.7環(huán)境,別用python3或conda。
python2和python3相互切換
sudo?update-alternatives?--config?python
切換為python2.7
5.先安裝,注意不要在conda里面運(yùn)行
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
pip?install?catkin_pkg?-i?https://pypi.tuna.tsinghua.edu.cn/simple/
sudo?apt?install?libglew-dev
6.先安裝一些缺的ros依賴(在rosdep步驟可能缺漏的包)
sudo?apt-get?update
我已總結(jié)好,直接運(yùn)行
sudo?apt-get?install?-y?ros-melodic-jsk-recognition-msgs?ros-melodic-jsk-rviz-plugins?ros-melodic-nmea-msgs?ros-melodic-rqt-gui??ros-melodic-rqt-gui-py??ros-melodic-nmea-navsat-driver?ros-melodic-velodyne-pointcloud??ros-melodic-grid-map-cv?ros-melodic-grid-map-msgs??ros-melodic-grid-map-ros?ros-melodic-automotive-navigation-msgs?ros-melodic-rosbash??ros-melodic-autoware-msgs?ros-melodic-automotive-platform-msgs?ros-melodic-qpoases-vendor?ros-melodic-xacro
sudo?apt-get?install?-y?ros-melodic-controller-manager??ros-melodic-robot-state-publisher??ros-melodic-joint-state-controller??ros-melodic-gps-common?ros-melodic-geodesy
7.安裝Qt
我用的是5.9版本,網(wǎng)上資料比較多。
8.安裝eigen3.3.7
下載鏈接:https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz 下載完成后,在壓縮包所在目錄打開終端
//解壓
sudo?tar?-xzvf?eigen-3.3.7.tar.gz
//安裝
cd?eigen-3.3.7
mkdir?build
cd?build
cmake?..
sudo?make?install
安裝后,頭文件安裝在/usr/local/include/eigen3/
9.安裝opencv"3.4.16"
可以參考:https://blog.csdn.net/qq_58879770/article/details/127037125
10.編譯
colcon?build?--cmake-args?-DCMAKE_BUILD_TYPE=Release?
默認(rèn)會在gpu上編譯
11.報(bào)錯經(jīng)驗(yàn)
問題1.:
編譯到ros_observer時,會報(bào)出如下錯誤:/usr/bin/ld:
?CMakeFiles/ros_observer.dir/src/ros_observer.cpp.o: undefined reference to symbol ‘pthread_mutexattr_settype@@GLIBC_2.2.5’ //lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
解決:
打開autoware/common/ros_observer/CMakeLists.txt,在所有的target_link_libraries中,加入libpthread.so.0,再編譯即可通過

問題2.:
執(zhí)行編譯ndt_gpu會出現(xiàn)錯誤:GPU support on Melodic requires Eigen version>= 3.3.7
解決:
在/usr目錄下搜索Eigen3Config.cmake文件,/usr/lib/cmake/eigen3目錄下
與/usr/local/share/eigen3/cmake目錄下存在這個文件,區(qū)別在于:
/usr/local/share/eigen3/cmake目錄下的Eigen3Config.cmake文件第32行為:set
(EIGEN3_VERSION_STRING "3.3.7")
/usr/lib/cmake/eigen3目錄下的Eigen3Config.cmake文件第42行為:set
?(EIGEN3_VERSION_STRING "3.3.4")
(上面的區(qū)別請參考自己的實(shí)際文件)
所以只需要將/usr/lib/cmake/eigen3下的全部文件保存到別處后刪除,然后
將/usr/local/share/eigen3/cmake下的全部文件拷貝到/usr/lib/cmake/eigen3目錄下即可。

比如我這里將原先的文件保存在backup-eigen3.3.4,把/usr/local/share/eigen3/cmake下的全部文件拷貝到/usr/lib/cmake/eigen3目錄
重新執(zhí)行編譯命令。
我是裸機(jī)安裝的,所以大家跟著我步驟,應(yīng)該不會出現(xiàn)大問題。
12.運(yùn)行
source?install/setup.bash
roslaunch?runtime_manager?runtime_manager.launch
運(yùn)行的效果根dokcer的一樣,會出現(xiàn)ui界面。
13.注意
運(yùn)行的時候也會有一點(diǎn)小錯誤,比如print要改成python3的print,還有一些python的包要pip install一下,注意運(yùn)行也要在python2.7下的環(huán)境運(yùn)行。
2.我還出現(xiàn)了一個錯誤:
sudo: 沒有終端存在,且未指定 askpass 程序
網(wǎng)上的解決方法:
將當(dāng)前用戶設(shè)置為不需要密碼的方式,否則會遇到如下錯誤,sudo:沒有終端存在,且未指定askpass程序
sudo visudo
在%sudo ALL=(ALL:ALL) ALL下面添加一行
username??ALL=(ALL)?NOPASSWD:?ALL
發(fā)現(xiàn)我問題沒有解決,不過不影響運(yùn)行。
到這里安裝步驟基本介紹完啦,接下來我們介紹對ui界面進(jìn)行簡介。
ui界面的簡介
1.修改run腳本,改為正確source路徑
cd?~/autoware-1.14/install/runtime_manager/share/runtime_manager/scripts
gedit?run
修改如下內(nèi)容:
${OPTION_COMMAND}="bash -c 'source ~/autoware-1.14/install/setup.bash;

(https://www.guyuehome.com//Uploads/Editor/202204/20220415_83868.png)
2. 為了防止警告,找到‘state_publisher’并用‘robot_state_publisher’去代替它。
文件位置:autoware-
1.14/install/vehicle_description/share/vehicle_description/launch/vehicle_model.launch
打開后修改其中的文件:把‘state_publisher’改為‘robot_state_publisher’
啟動autoware
source?install/setup.bash
roslaunch?runtime_manager?runtime_manager.launch
3. 界面簡介
(1) Simulation
播放錄制的bag數(shù)據(jù),包括點(diǎn)云和路點(diǎn)等。加載下載好的示例數(shù)據(jù),點(diǎn)擊Play按鈕,然后點(diǎn)Pause。注意這里一定要先點(diǎn)一下Play!然后再進(jìn)行后面的操作,不要等全部設(shè)置完才回來點(diǎn)。這樣會導(dǎo)致timestamp的錯誤,使得demo無法正常運(yùn)行。

點(diǎn)擊autoware界面中的Rviz按鈕,會打開默認(rèn)配置的Rviz,在打開的Rviz界面左上角點(diǎn)擊File?Open Config,加載如下的配置文件:
/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/default.rviz
這個rviz已經(jīng)添加好相關(guān)的話題了:

(2) Quick Start

加載每個模塊對應(yīng)配置launch文件,進(jìn)行rviz的顯示配置。
點(diǎn)擊Map右側(cè)的Ref按鈕,選擇加載地圖
點(diǎn)擊Sensing記載啟動激光雷達(dá)及標(biāo)定文件
點(diǎn)擊Localization加載雷達(dá)與汽車base_link的坐標(biāo)變換、加載汽車模型、點(diǎn)云降采樣、gps信息轉(zhuǎn)換和ndt匹配定位程序。
其他launch文件文件類似。
(3) 其他Tab需要配合仿真環(huán)境或?qū)嵻嚾ゲ僮骼斫狻?/p>
4.界面運(yùn)行報(bào)錯
(1)這里開啟Map按鈕報(bào)錯:

就是沒有把data文件夾放到.autoware里面。
(2)

解決辦法就是找到‘state_publisher’并用‘robot_state_publisher’去代替它。
文件位置:autoware-
1.14>install>vehicle_description>share>vehicle_description>launch>vehicle_model.launch
打開后修改其中的文件:把‘state_publisher’改為‘robot_state_publisher’
(3)
啟動 runtime_manager 后瘋狂報(bào)如下錯誤
Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_core.py", line 16765, inlambda event: event.callable(*event.args, **event.kw) ) File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_core.py", line 9207, in SetLabel return?core.Window_SetLabel(*args, **kwargs) File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1253-1254: invalid continuation byte
可以看到是 Python 的編碼問題,直接將系統(tǒng)語言更改為英語解決
demo運(yùn)行
1.下載數(shù)據(jù)
wget?https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz
wget?https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz
一定要注意解壓文件是在.autoware/路徑下的,不然后續(xù)運(yùn)行l(wèi)aunch文件時,會提示找不到文件:.autoware/data/tf/tf.launch。
2.配置Demo
1在Runtime Manager中選中“Simulation”Tab,在底下的文件選擇框中選取從
“sample_moriyama_data.tar.gz”中解壓出來的rosbag文件,設(shè)置start Time為140s,點(diǎn)擊下面的“Play”按鍵即可開始播放Demo中所錄制的自動駕駛過程,但這里我們需要在2s后點(diǎn)擊
“Pause”,如圖所示,原因是我們還需要設(shè)置其他一些數(shù)據(jù)和參數(shù)。

2.在“Setup”Tab中設(shè)置TF和車輛模型,即點(diǎn)擊“TF”按鈕及“Vehicle Model”按鈕即可。正確點(diǎn)擊后了兩個按鈕應(yīng)該是處于深色的狀態(tài)。

3.在“Map”Tab中選擇地圖文件和TF設(shè)置文件。在“Point Cloud”后面的文件選擇框內(nèi)載入點(diǎn)云地圖文件,相關(guān)的文件存儲在“sample_moriyama_data.tar.gz”文件所解壓出來的文件中,具體位置為“data/map/pointcloud_map”,需要選中文件夾內(nèi)所有的文件。然后點(diǎn)擊“Point Cloud”按鈕使之變?yōu)橄聢D所示的深色狀態(tài)。在“TF”按鈕后面的文件選擇框內(nèi)載入tf.launch文件。我選用autoware-
1.14/src/autoware/documentation/autoware_quickstart_examples/launch里面的,選中tf_local.launch文件。然后點(diǎn)擊“TF”按鈕使之變?yōu)橄聢D所示的深色狀態(tài)。

4.在“Sensing”Tab中勾選“voxel_grid_filter”,如下圖所示。

5.在“Computing”Tab中勾選“nmea2tfpose”“ndt_matching”,如下圖所示。

6.開啟RViz可視化工具,回到“Simulation”Tab,點(diǎn)擊底下的“RViz”按鈕,使之成為深色的狀態(tài),如下圖所示。

7.設(shè)置RViz,首先選擇RViz配置文件,在菜單中選擇“File–>Open Config”,選擇“autowar-1.14/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/”下的“default.rviz”文件。
8.回到Runtime Manager,進(jìn)入到“Simulation”Tab頁,點(diǎn)擊“Pause”按鈕,這時Demo會結(jié)束暫停狀態(tài),繼續(xù)播放rosbag文件。稍等片刻,就可以在Rviz中看到點(diǎn)云地圖和機(jī)器人行駛的畫面了。

bug:

車飄。
成功解決:將sample_moriyama_data里面的tf.launch改為autoware自帶的tf_local.launch。并把Start Time設(shè)置為140(其實(shí)多少沒有多大關(guān)系),讓數(shù)據(jù)先跑會,穩(wěn)定一下。

① 全網(wǎng)獨(dú)家視頻課程
BEV感知、毫米波雷達(dá)視覺融合、多傳感器標(biāo)定、多傳感器融合、多模態(tài)3D目標(biāo)檢測、點(diǎn)云3D目標(biāo)檢測、目標(biāo)跟蹤、Occupancy、cuda與TensorRT模型部署、協(xié)同感知、語義分割、自動駕駛仿真、傳感器部署、決策規(guī)劃、軌跡預(yù)測等多個方向?qū)W習(xí)視頻(掃碼即可學(xué)習(xí))
視頻官網(wǎng):www.zdjszx.com

② 國內(nèi)首個自動駕駛學(xué)習(xí)社區(qū)
近2000人的交流社區(qū),涉及30+自動駕駛技術(shù)棧學(xué)習(xí)路線,想要了解更多自動駕駛感知(2D檢測、分割、2D/3D車道線、BEV感知、3D目標(biāo)檢測、Occupancy、多傳感器融合、多傳感器標(biāo)定、目標(biāo)跟蹤、光流估計(jì))、自動駕駛定位建圖(SLAM、高精地圖、局部在線地圖)、自動駕駛規(guī)劃控制/軌跡預(yù)測等領(lǐng)域技術(shù)方案、AI模型部署落地實(shí)戰(zhàn)、行業(yè)動態(tài)、崗位發(fā)布,歡迎掃描下方二維碼,加入自動駕駛之心知識星球,這是一個真正有干貨的地方,與領(lǐng)域大佬交流入門、學(xué)習(xí)、工作、跳槽上的各類難題,日常分享論文+代碼+視頻,期待交流!

③【自動駕駛之心】技術(shù)交流群
自動駕駛之心是首個自動駕駛開發(fā)者社區(qū),聚焦目標(biāo)檢測、語義分割、全景分割、實(shí)例分割、關(guān)鍵點(diǎn)檢測、車道線、目標(biāo)跟蹤、3D目標(biāo)檢測、BEV感知、多模態(tài)感知、Occupancy、多傳感器融合、transformer、大模型、點(diǎn)云處理、端到端自動駕駛、SLAM、光流估計(jì)、深度估計(jì)、軌跡預(yù)測、高精地圖、NeRF、規(guī)劃控制、模型部署落地、自動駕駛仿真測試、產(chǎn)品經(jīng)理、硬件配置、AI求職交流等方向。掃碼添加汽車人助理微信邀請入群,備注:學(xué)校/公司+方向+昵稱(快速入群方式)

④【自動駕駛之心】平臺矩陣,歡迎聯(lián)系我們!
