前面主要參考 手把手教你運行apollo,但這個文章里的apollo版本太低。后面主要看官方文檔,在官方的apollo/docs目錄下,通過typora去看。
sudo snap install typora
以前在別的公司可以通過sublime的插件去看,但這次安裝了sublieme件,卻沒有效果。
准備工作
aria2c <ubuntu link>
這樣比你用瀏覽器的下載工具下載要快,如果中間斷了,可以加選項“-c”來下載。
老板事先給了個虛擬機,他自己下載到了centos虛擬機了,說4個多G,但應該在ubuntu下編譯。我沒有對這個有足夠的重視,直接在分給我的虛擬機(小型機上)下准備環境。實際現在來看是個很大的錯誤。小型機沒法切割成擁有很大磁盤空間的虛擬機,apollo應該安裝到單獨的機器上,並且需要看apollo官方文檔,看看對編譯機子和跑仿真的機器的配置要求。
結合網上的一些資料,很多建議選擇有4G顯存和支持avx2的cpu。擁有4G顯存的nvidia顯卡,網上看了看報價,新顯卡普遍3K以上,只有一個二手的nvidia顯卡,700元。只有nvidia的顯卡才對cuda有挺好的支持。
本來想嘗試不在docker下編譯,結果失敗。docker僅僅是apt install docker是不行的。需要參考說明文檔。
安裝顯卡驅動的時候,建議我安裝470版本,實際安裝后,發現分辨率變得很大沒法調整,是840x640,機器沒法用。進入到/etc/default/grub下制定1024x768分辨率,這里面指定更高的分辨率沒有用。
安裝Nvidia
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - 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 -y update sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker
從nvidia.github.io下載困難的話,可以考慮kx上網,還不行,
sudo apt install uget -y
用uget這個圖形工具下載。
# 使用 SSH 的方式 git clone git@github.com:ApolloAuto/apollo.git # 使用 HTTPS 的方式 git clone https://github.com/ApolloAuto/apollo.git
切換到master分支
cd apollo
git checkout master
echo "export APOLLO_ROOT_DIR=$(pwd)" >> ~/.bashrc && source ~/.bashrc
啟動和進入docker容器,編譯
bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh
為了在docker里能運行ping,ifconfig命令,我在$APOLLO_ROOT_DIR目錄下新建目錄/lib/x86_64-linux-gnu/libidn.so.11* 和 /lib/x86_64-linux-gnu/libcap.so.2* 拷貝到 host下,並且把原先/usr/local/bin的proxy.sh也拷貝過來:
#!/bin/bash
httpHost=127.0.0.1:7890 export http_proxy=http://$httpHost export https_proxy=https://$httpHost export ALL_PROXY=socks5://127.0.0.1:7891
在$APOLLO_ROOT_DIR下運行 host/env.sh,其內容是:
#!/bin/bash export PATH=`pwd`/host:$PATH export PATH=`pwd`/docs/demo_guide:`pwd`/autobin/bin/cyber/tools/cyber_recorder:$PATH export LD_LIBRARY_PATH=`pwd`/host:$LD_LIBRARY_PATH . proxy.sh
實際ifconfig,發現地址和宿主機的ip地址完全一樣。說明實際不copy ifconfig和ping命令應該也沒事。
proxy.sh是設置全局代理,我運行的是clash(linux版)。
構建apollo
./apollo.sh build
進行優化模式的構建
./apollo.sh build_opt
If no GPU is availabe, please run "./apollo.sh build_opt" instead.
./apollo.sh build_opt_gpu
build過程中碰到錯誤:
如果是下載超時的錯誤,重新嘗試下,或者換速率更高的代理。
另一個錯誤是 _mm256_min_epi16 或者 _mm256_max_epi16 編譯錯誤。通過https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=3828,301,2553,另外 cat /proc/cpuinfo|grep flags,可以知道 cpu不支持 avx2指令。這兩個都是avx2指令。
進入到modules/drivers/camera中修改CMakeLists.txt,
把 -mavx 修改為-mavx2。 然后注意要把./cache里和camera相關的已經編譯出來的東西給刪了。
我曾經這樣修改過,但編譯還是報錯,估計就是沒有刪中間文件的原因。
# Startup modules monitor and dreamview, the default option is start. ./scripts/bootstrap.sh [start | stop | restart]
訪問
# You need to download the demo record using the following commands cd docs/demo_guide/ python3 record_helper.py demo_3.5.record # You can now replay this demo "record" in a loop with the '-l' flag cyber_recorder play -f docs/demo_guide/demo_3.5.record -l
現在你看web界面,可以發現小車在循環地跑。