Ubuntu基于Linux的免費開源桌面PC操作系統(tǒng),支持x86、64位和ppc架構(gòu)。
由于Apollo項目是在Docker中運行,因此不能直接在Ubuntu 14.04系統(tǒng)中直接生成核心轉(zhuǎn)儲文件并使用GDB對其進行調(diào)試,所有的工作必須在Docker中完成。
開發(fā)者還需要GLFW(圖形庫框架)3.2及更高版本,它支持EGL和運行時上下文創(chuàng)建API選擇。
本文由社區(qū)開發(fā)者「朗拓科技-楊鴻城」撰寫。為大家詳細講述了如何用Ubuntu14.04搭建GPU版本的Apollo3.5平臺。
Apollo 3.5 歷史版本的跨越式升級,使自動駕駛不光整體提升了駕駛能力和安全性,從而可以“媲美”人類老司機,更為自動駕駛?cè)袠I(yè)在向全面落地的進發(fā)過程中提供了更優(yōu)質(zhì)、更全方位的技術(shù)支持。Apollo 3.5將繼續(xù)為開發(fā)者們節(jié)省造輪子的時間。
希望本文能為開發(fā)者們帶來更多幫助。
以下,ENJOY
安裝Ubuntu14.04
安裝Git-LFS
添加SSH密鑰(可選)
下載Apollo鏡像
設(shè)置Docker環(huán)境
安裝ROS-Indigo(可選)
安裝Apollo預(yù)編譯的內(nèi)核
編譯CPU版本的Apollo
運行Apollo Demo 演示
編譯GPU版本的Apollo(可選)
可參考:
*《安裝Windows10,Ubuntu雙系統(tǒng)14.04LTS記錄》
https://www.cnblogs.com/arcsinw/p/5303615.html
1.安裝Curl
1sudoapt-getupdate2sudoapt-getupgrade3sudoapt-getinstallcurl
2.添加地址
1#RequiredforUbuntu14.04/16.04.2curl-shttps://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh|sudobash
3.安裝Git-LFS
1#Ubuntu14.04/16.04/18.04.2sudoapt-getinstall-ygit-lfs
PS:若未安裝Git,需先執(zhí)行 sudo apt-get install git .
寫在前面:用SSH方式下載Apollo鏡像需要秘鑰,用HTTP方式 下載則可以跳過此步驟。
1.首先注冊一個GitHub賬號
2.參考:
https://blog.csdn.net/qq_34446663/article/details/81106018
或者
https://www.cnblogs.com/qcwblog/p/5709720.html
添加秘鑰
最后實現(xiàn)效果如圖:
1.從GitHub源代碼下載Apollo源代碼并查看正確的分支:
1gitlfsclonehttps://github.com/ApolloAuto/apollo2cdapollo3gitcheckoutmaster4echo"exportAPOLLO_HOME=$(pwd)">>~/.bashrc&&source~/.bashrc
#文件下載大概1.8G,這里的APOLLO_HOME應(yīng)該替換為Apollo文件夾所在根目錄。
如果你過去安裝過其他版本的Docker,先刪掉:
1sudoapt-getremovedockerdocker-enginedocker.io
首先安裝依賴:
1sudoapt-getinstallapt-transport-httpsca-certificatescurlgnupg2software-properties-common
信任Docker的GPG公鑰:
1curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-
對于Amd64架構(gòu)的計算機,添加軟件倉庫:
1sudoadd-apt-repository2"deb[arch=amd64]https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu3$(lsb_release-cs)4stable"
1echo"deb[arch=armhf]https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu2$(lsb_release-cs)stable"|3sudotee/etc/apt/sources.list.d/docker.list
最后安裝
1sudoapt-getupdate2sudoapt-getinstalldocker-ce
把當前用戶加到Docker用戶組中:
添加Docker用戶組
1sudogroupadddocker
把自己加到Docker用戶組中
1sudogpasswd-amyusernamedocker
Myusername是指你的用戶名
重啟Docker后臺服務(wù)
1sudoservicedockerrestart
切換當前用戶到新Group
1newgrp-docker
確認Docker可以非sudo運行
1dockerps
寫在前面:Apollo3.5可不用安裝Ros,但Apollo很多驅(qū)動都是從Ros移植過來的,安裝Ros仍有研究價值。
1、執(zhí)行
1sudosh-c'echo"debhttp://packages.ros.org/ros/ubuntutrustymain">/etc/apt/sources.list.d/ros-latest.list'
2、執(zhí)行
1wgethttp://packages.ros.org/ros.key-O-|sudoapt-keyadd-
3、更新源
1sudoapt-getupdate
4、安裝ros-indigo-desktop-full
1sudoapt-getinstallros-indigo-desktop-full
大概需要半個小時左右
5、執(zhí)行代碼初始化ROS
1sudorosdepinit
若提示Rosdep update 則執(zhí)行Rosdep update
6、設(shè)置環(huán)境變量
1echo"source/opt/ros/indigo/setup.bash">>~/.bashrc2source~/.bashrc
以上的這個設(shè)置是永久性的,不需要每次打開一個終端都需要進行一次設(shè)置。到此ROS安裝完成,終端執(zhí)行Roscore進行測試即可。
7、下載Apollo-Platform并解壓:
https://github.com/ApolloAuto/apollo-platform/releases
將文件夾中的Ros拷貝到Apollo工程中:
1rsync-avros/~/apollo/third_party/ros_x86_642cdapollo3source./third_party/ros_x86_64/setup.bash
*注:如果只是用于「學(xué)習(xí)研究」用途可以不安裝「內(nèi)核」,用于「真實駕駛」則必須安裝「內(nèi)核」。
寫在前面:在安裝Apollo內(nèi)核之前先卸載 NVIDIA顯卡驅(qū)動(參考編譯GPU版本的Apollo(可選)第1步),因為Apollo內(nèi)核是實時系統(tǒng),而默認安裝的NVIDIA驅(qū)動內(nèi)核不支持實時系統(tǒng)(會造成循環(huán)登錄),如果只是用于學(xué)習(xí)研究用途可以不安裝內(nèi)核,用于真實駕駛則必須安裝內(nèi)核。
安裝Apollo內(nèi)核后,再安裝NVIDIA 驅(qū)動時必須加上 --no-kernel-module 參數(shù)(參考編譯GPU版本的Apollo(可選)第6步)。
1.從GitHub上的發(fā)布部分下載發(fā)行包:
https://github.com/ApolloAuto/apollo-kernel/releases
2.下載發(fā)布包后安裝內(nèi)核:
1tarzxvflinux-4.4.32-apollo-1.5.0.tar.gz2cdinstall3sudobashinstall_kernel.sh4sudoreboot
1.設(shè)置Docker環(huán)境
1cdapollo2bashdocker/scripts/dev_start.sh-C#-C表示從中國鏡像服務(wù)器下載,速度較快3bashdocker/scripts/dev_into.sh
2.編譯Apollo
1bashapollo.shbuild#若提示權(quán)限不足,則sudosu
3.啟動人機交互界面(HMI)
1bashscripts/bootstrap.sh
打開Chrome瀏覽器,輸入地址“l(fā)ocalhost:8888”即可訪問Dreamview。
參考:
https://github.com/ApolloAuto/apollo/blob/master/docs/demo_guide/README.md
或者
在Docker中執(zhí)行
1bash scripts/bootstrap.sh2python docs/demo_guide/rosbag_helper.py demo_3.5.bag cyber_recorder play -f docs/demo_guide/demo_3.5.record --loop
順利執(zhí)行后,打開網(wǎng)頁localhost:8888,便可以看到小車運動起來。效果如圖:
這一步官方教程寫得較為簡略,故安裝容易出錯。
1.由于官方推薦安裝NVIDIA-375版本的驅(qū)動,故先卸載原有驅(qū)動。
1sudoapt-get--purgeremovenvidia-*2sudoapt-getautoremove
若之前禁用了Nouveau,需要重新啟用Nouveau,在Blacklist中將Nouveau注釋掉。
1sudogedit/etc/modprobe.d/blacklist.conf2sudoupdate-initramfs-u3sudoreboot
開機后要確保NVIDIA驅(qū)動已經(jīng)被刪掉了,進入了低分辨率顯示。
可用lsmod | grep nouveau檢查Nouveau 是否正在運行。
2.在apollo/docker/scripts 目錄中,有一個dev_start.sh 文件,大概在它的305行加入兩條語句:
1-v/usr/src:/usr/src2-v/lib/modules:/lib/modules
效果如圖:
3.安裝NVIDIA驅(qū)動有Ppa、Run和Deb三種方式,本文推薦Ppa安裝,簡單且不容易出錯。
寫在前面,首先在NVIDIA官網(wǎng)上確定自己顯卡可以安裝的驅(qū)動版本,如RTX2080顯卡只能安裝410以上驅(qū)動。
a. 在主機里安裝NVIDIA驅(qū)動
1sudoadd-apt-repositoryppa:graphics-drivers/ppa2sudoaptsearchnvidia-3843sudoapt-getinstallnvidia-384
b. 在Docker中安裝NVIDIA驅(qū)動
1sudoadd-apt-repositoryppa:graphics-drivers/ppa2sudoaptsearchnvidia-3843sudoapt-getinstallnvidia-384
注意:Docker中NVIDIA驅(qū)動和主機中NVIDIA驅(qū)動的細分版本號(如384.130)必須保持完全一致,否則安裝失敗。
成功安裝NVIDIA驅(qū)動后,需要重新禁用nouveau。
注意:通過ppa成功安裝NVIDIA驅(qū)動后,不用再執(zhí)行第4-8點步驟。
4.這是官方推薦用run文件安裝驅(qū)動的方式:若按第3點已經(jīng)成功安裝驅(qū)動,則不用執(zhí)行4-8點步驟。
下載官方Nvidia驅(qū)動程序安裝文件,Apollo官方推薦375.39的版本
1wgethttp://us.download.nvidia.com/XFree86/Linux-x86_64/375.39/NVIDIA-Linux-x86_64-375.39.run
下載后默認放在/apollo 目錄下。
5.在終端命令行中打開啟動Docker:
按住CTRL+ALT+F1進入終端命令行 ,輸入用戶名和密碼登錄。
這一步會進入不帶圖形界面的命令行,在關(guān)閉圖形界面前,可以按CTRL+ALT+F7 在圖形界面間來回切換。
在F1的命令行中執(zhí)行:
1cdapollo2./docker/scripts/dev_start.sh3dockerexec-itapollo_dev/bin/bash
若第三步報錯,則執(zhí)行docker exec -it apollo_dev_username /bin/bash ,這里的Username指你的用戶名。
PS:在命令行中啟動Docker是為了后面關(guān)閉 圖形界面。
6.在F1的命令行Docker中安裝NVIDIA驅(qū)動程序,這一步是重中之重,很容易出錯,必須按照以下順序一步一步進行。
1source/apollo/scripts/install_gcc.sh2ln-s/usr/bin/cc/usr/bin/cc13chmod+x./NVIDIA-Linux-x86_64-375.39.run4sudo./NVIDIA-Linux-x86_64-375.39.run--no-opengl-files-a-s--no-kernel-module5source/apollo/scripts/recover_gcc.sh6rm/usr/bin/cc1
a. Apollo自帶gcc為4.8.4版本,而安裝NVIDIA驅(qū)動需要gcc4.9版本,故先執(zhí)行 install_gcc.sh 安裝gcc4.9 。
安裝完驅(qū)動后需切換回4.8.4版本,故執(zhí)行recover_gcc.sh 刪掉 gcc 4.9。
b. --no-opengl-files 這個參數(shù)非常非常重要,安裝時必須加上。
c. 在執(zhí)行NVIDIA安裝程序時應(yīng)該會出現(xiàn)
‘’ X.Org X server is running ‘’ 之類的錯誤提示,出現(xiàn)之后說明我們需要關(guān)閉 圖形界面。
1sudoservicelightdmstop
執(zhí)行之后再按CTRL+ALT+F7 應(yīng)該看不到圖形界面了。若在F1 的docker中關(guān)不掉圖形界面,可按CTRL+ALT+F2 后再關(guān)閉圖形界面。
d. 如果在執(zhí)行NVIDIA安裝程序時出現(xiàn)‘‘An NVIDIA kernel module ‘nvidia-drm’ appears to already be loaded in your kernel.’’之類的提示,說明之前NVIDIA驅(qū)動未卸載干凈。
e. 關(guān)閉掉圖形界面之后,再執(zhí)行
1sudo./NVIDIA-Linux-x86_64-375.39.run--no-opengl-files-a-s--no-kernel-module
可以在Docker中成功安裝驅(qū)動。
安裝完成可用
1whereisnvidia
檢查是否安裝成功。
1nvidia:/usr/src/nvidia-375.39/nvidia/usr/share/nvidia
若顯示有這兩個目錄則安裝成功,否則失敗。
7.確保成功完成以上每個步驟之后,再在主機中安裝NVIDIA 驅(qū)動。打開一個新終端:
1cdapollo2sudo./NVIDIA-Linux-x86_64-375.39.run--no-opengl-files-a-s--no-kernel-module
8.安裝好NVIDIA驅(qū)動后,執(zhí)行
1sudoservicelightdmstart
可重新啟動圖形界面。
9.在Docker中安裝好NVIDIA驅(qū)動后,千萬不能關(guān)閉正在運行的Docker,否則剛做的改動全部沒有保存。
此時在主機中新打開一個終端,執(zhí)行:
1dockerps#查看正在運行的docker2dockerimages#查看主機上的鏡像文件
此時我們需要將剛剛改動過的Docker,保存為新的鏡像文件
1dockercommitCONTAINER_IDapolloauto/apollo:NEW_DOCKER_IMAGE_TAG
其中,CONTAINER_ID為docker ps查看到的第二行第一列信息,NEW_DOCKER_IMAGE_TAG 為我們自定義保存新鏡像的名稱 ,對應(yīng)于Docker Images 的第二行第二列信息。
我們按照它的命名規(guī)則對新TAG進行命名,以筆者為例,正在運行Docker的TAG 為 dev-x86_64-20181216_1500 ,命名為dev-x86_64-20181217_1500,執(zhí)行
1dockercommite5dfeb8a0b2fapolloauto/apollo:dev-x86_64-20181217_1500
則將剛剛的改動保存為新的鏡像文件,可通過Docker Images 查看新的鏡像文件。
在主機與Docker中均成功安裝NVIDIA驅(qū)動后,重啟Ubuntu。
10.新打開一個終端,進入剛剛保存的新鏡像:
1cdapollo2/docker/scripts/dev_start.sh-l-tNEW_DOCKER_IMAGE_TAG3./docker/scripts/dev_into.sh
其中,NEW_DOCKER_IMAGE_TAG為 剛剛為新鏡像取的名稱。
若啟動Docker過程中 若出現(xiàn)NVIDIA Not Found 等提示,則說明主機NVIDIA驅(qū)動未成功安裝。
11.在新鏡像中使用GPU選項構(gòu)建Apollo
在正式Build之前,可用幾條指令檢查環(huán)境是否齊備:
1whereisnvidia2cat/usr/local/cuda/version.txt3dpkg-l|greplibcudnn74cat/usr/include/cudnn.h|grepCUDNN_MAJOR-A2
在主機的終端中執(zhí)行nvidia-smi 確認驅(qū)動是否正確安裝。
若所有條件均已達成,則開始編譯:
1./apollo.shbuild_gpu
若第一次使用GPU編譯,需要等待較久的時間。
13.編譯完成后,可執(zhí)行一個Demo檢查是否成功編譯GPU版本的APOLLO。
1./bazel-bin/modules/perception/camera/test/camera_lib_obstacle_detector_yolo_region_output_test
若出現(xiàn)
error while loading shared libraries: libcuda.so.1: cannot open shared object file: No such file or directory ,之類的錯誤提示,則說明Docker 或者主機的NVIDIA驅(qū)動未正確安裝。
或者直接運行所有測試
1./apollo.shtest
如果出現(xiàn)PASSED,恭喜你已經(jīng)成功編譯GPU版本的APOLLO!
-
gpu
+關(guān)注
關(guān)注
28文章
4754瀏覽量
129072 -
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29878 -
自動駕駛
+關(guān)注
關(guān)注
784文章
13877瀏覽量
166617 -
Apollo
+關(guān)注
關(guān)注
5文章
342瀏覽量
18474
原文標題:開發(fā)者說 | Ubuntu14.04搭建GPU版本的Apollo3.5平臺
文章出處:【微信號:Apollo_Developers,微信公眾號:Apollo開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論