在Ubuntu18.04上實現apollo5.5系統部署javascript
筆者在Ubuntu18.04上部署了一下Apollo,中間遇到的各類問題解決了好久,真的有不少坑須要注意,到今天基本上是部署上了,總結一下具體操做步驟和幾個須要注意的問題:html
1.在終端執行如下命令完成最新軟件包的更新:java
~$ sudo apt update
2.安裝並降級GCC和G++
請先用如下命令檢查gcc和g++的版本:
python
~$ gcc --version ~$ g++ --version
若輸出的gcc和g++的版本是4.8版本的,則跳過此步驟;不然,請執行如下兩條命令安裝4.8版本的gcc和g++,命令以下:linux
~$ sudo apt-get install g++-4.8 g++-4.8-multilib gcc-4.8 gcc-4.8-multilib ~$ sudo /usr/bin/update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 99 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
安裝完成後,用以上命令檢查gcc和g++的版本以確認安裝成功;若安裝未成功,請從新安裝直到成功爲止。git
3.安裝Apollo內核
a.從releases文件夾下載發佈的包
github
https://github.com/ApolloAuto/apollo-kernel/releases
b.安裝包下載完成後,解壓後安裝:docker
tar zxvf linux-4.4.32-apollo-1.5.5.tar.gz cd install sudo bash install_kernel.sh
c.在終端輸入sudo gedit /etc/default/grub打開配置文件。
把grub_timeout_style=hidden註釋掉,
把grub timeout=0中的0修改成10,
把grub_cmdline_linux_default=」quiet splash」中的「quiet splash」修改成」text」,
修改完成後保存退出。在終端中執行 sudo update-grub更新grub配置。 使用reboot命令從新啓動計算機。
bootstrap
d.重啓ubuntu系統進入grub引導界面,在引導界面選擇高級選項,在高級選項裏選擇倒數第二項的apollo-kernel來引導系統。進入系統後,在終端中輸入uname -r,若輸出「4.4.32-apollo-2-RT」字樣,則表示此時系統是以apollo-kernel引導的。 注意:今後之後,每次開機都須要以apollo-kernel來引導系統。ubuntu
注:如下操做均要在內核系統完成
4.安裝網卡驅動
默認狀況下,IPC的兩個網卡中有一個網卡是沒有安裝驅動鏈接不了互聯網的。請從如下地址下載驅動安裝包e1000e-3.8.4.tar.gz,在打開的頁面中點擊下載按鈕會彈出「英特爾軟件許可協議」對話框,接着點擊「我接受許可協議中的條款」就能夠開始下載了。下載完成後進入驅動文件的下載目錄,執行如下命令來安裝驅動:
下載地址:https://downloadcenter.intel.com/zh-cn/download/15817?_ga=1.159975677.114505945.1484457019
tar -zxvf e1000e-3.8.4.tar.gz cd e1000e-3.8.4/src/ sudo make install sudo modprobe e1000e
安裝完成後,再檢查驅動是否能夠上網就能夠了。
5.安裝GPU驅動
下載apollo-kernel官網上的腳本install-nvidia.sh至當前用戶的home目錄下,注意是內核倉庫下的,這個腳本很容易弄錯,下載地址爲:
https://github.com/ApolloAuto/apollo-kernel
輸入如下命令完成顯卡驅動內核模塊的安裝:
cd ~ sudo apt install make sudo bash install-nvidia.sh
完成顯卡驅動內核模塊的安裝後,在當前用戶的home目錄下會出現一個名爲NVIDIA-Linux-x86_64-430.50.run的文件,執行如下命令完成顯卡驅動用戶庫的安裝:
cd ~ sudo bash ./NVIDIA-Linux-x86_64-430.50.run --no-x-check -a -s --no-kernel-module
完成顯卡驅動用戶庫的安裝後,從新啓動。
在終端中輸入如下命令來檢查顯卡驅動內核模塊是否安裝成功:
cat /proc/driver/nvidia/version
若輸出的內容中包含」430.50」字樣,則表示顯卡驅動內核模塊安裝成功;若不是,請從新安裝顯卡驅動內核模塊。
在終端中輸入如下命令來檢查顯卡驅動用戶庫是否安裝成功:
sudo dpkg --list | grep nvidia*
若輸出的內容中顯示顯卡的用戶庫的版本是430.50的,則表示顯卡驅動用戶庫安裝成功;若不是,請從新安裝顯卡驅動用戶庫。
在終端中輸入nvidia-smi,能看到顯卡的信息且最下面沒有出現No running processes found的相關字樣,輸入nvidia-settings能調出顯卡的配置界面,則表示顯卡驅動安裝成功。(這裏筆者驅動用戶庫沒有裝上去,官方迴應調用獨顯試試,我這裏沒有弄好,可是發現同樣能用,只要不循環啓動就行)。
6.安裝Can驅動
can卡驅動我不知道本身的電腦怎麼安裝,由於沒有can卡驅動包,工控機的can卡驅動廠家會提供,因此這步我沒管。
7.安裝docker軟件
參考網上的安裝教程,這裏我參考的
https://www.cnblogs.com/wt7018/p/11880666.html
8.下載Apollo源代碼
建議去Apollo官網在GitHub倉庫上直接下載:
https://github.com/ApolloAuto/apollo
解壓到主目錄,這裏默認是apollo–master
另外一個分支是apollo–r5.5.0,筆者用第二個分支作的編譯
9.設置Apollo編譯環境
a.設置環境變量,在終端輸入如下命令:
cd ~ echo "export APOLLO_HOME=$(pwd)" >> ~/.bashrc && source ~/.bashrc source ~/.bashrc
b.將當前帳戶加入docker帳戶組中並賦予其相應權限,在終端輸入如下命令:
sudo gpasswd -a $USER docker sudo usermod -aG docker $USER sudo chmod 777 /var/run/docker.sock
命令執行完成後,從新啓動一下計算機。
10.編譯Apollo源代碼
a.啓動並進入docker容器,在終端輸入如下命令:
cd ~/apollo-r5.5.0 bash docker/setup_host/install_docker.sh bash docker/scripts/dev_start.sh
第一次進入docker時或者image鏡像有更新時會自動下載apollo所需的image鏡像文件,下載鏡像文件的過程會很長,請耐心等待;若是你確信計算機本地有你須要的image鏡像文件或者你不但願更新image鏡像時,可使用bash docker/scripts/dev_start.sh -n這個命令代替上面的命令,這樣apollo就不會去github的官方網站比較本地image鏡像和官方網站image鏡像的區別了,這樣能夠省去兩者比較的時間和避免因網絡問題而致使的兩者比較失敗的現象,能夠加快啓動docker容器的速度。這個過程完成後,請輸入如下命令以進入docker環境中:
bash docker/scripts/dev_into.sh
b.編譯apollo,在終端輸入如下命令,等待編譯完成,整個編譯過程大約耗時25分鐘:
bash apollo.sh build_opt
11.運行DreamView
a.若您已經在docker環境中,請忽略此步驟,不然請執行如下命令進入docker環境:
cd ~/apollo bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh
b.啓動apollo 在終端輸入如下命令:
bash scripts/bootstrap.sh
若是啓動成功,在終端會輸出如下信息:
nohup: appending output to 'nohup.out' Launched module monitor. nohup: appending output to 'nohup.out' Launched module dreamview. Dreamview is running at http://localhost:8888
在瀏覽器中輸入如下地址:
http://localhost:8888
能夠訪問DreamView。
c.回放數據包 在終端輸入如下命令下載數據包:
python docs/demo_guide/rosbag_helper.py demo_3.5.record
輸入如下命令能夠回放數據包,在瀏覽器DreamView中應該能夠看到回放畫面。
cyber_recorder play -l -f demo_3.5.record
若是成功在瀏覽器中看到回放畫面,則代表您的apollo系統已經部署成功!