最近,Apollo开始了星火计划的活动,作为希望学习Apollo已久的我立刻报名参加。为了更好的学习,我打算将自己在课程中学习到的内容记录成博客,以方便之后阅览。
Apollo是国内百度发起的一项自动驾驶框架开源项目,自2017年开放截至当下已经迭代至Apollo 6.0。其官网文档如下:Apollo开放平台文档
根据Apollo开发文档所说,推荐使用Ubuntu18.04及以上版本。此处我选用了20.04版本的Ubuntu进行配置。首先先进行更新软件源。
sudo apt-get update
sudo apt-get upgrade
Apollo环境依赖于NVDIA GPU驱动进行,根据官网文档显示如果不需要运行感知模块可以不用安装NVIDIA驱动。
安装驱动可以通过图形化界面进行也可以直接使用指令:
sudo apt-get update
sudo apt-add-repository multiverse
sudo apt-get update
sudo apt-get install nvidia-driver-455
此处演示如何使用图形化界面进行安装驱动,首先打开软件与更新,在附加项一栏中选择需要的驱动版本即可,此处选择nvidia-driver-460
随后点击应用更改,等待下载完成即可。所需要的时间适网络情况而视。安装完成后可以使用指令查看驱动是否生效(建议重新启动后查看)
nvidia-smi
显示信息如下所示:
Sun Sep 5 13:17:48 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03 Driver Version: 460.91.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce GTX 1060 Off | 00000000:01:00.0 On | N/A |
| N/A 56C P0 27W / N/A | 452MiB / 6078MiB | 12% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1733 G /usr/bin/kwin_x11 142MiB |
| 0 N/A N/A 8778 G /usr/lib/xorg/Xorg 150MiB |
| 0 N/A N/A 9108 G /usr/bin/kwin_x11 63MiB |
| 0 N/A N/A 9110 G /usr/bin/plasmashell 31MiB |
| 0 N/A N/A 9157 G /usr/bin/latte-dock 15MiB |
| 0 N/A N/A 9391 G ...phinCuCRRi.9.slave-socket 11MiB |
| 0 N/A N/A 9594 G ...AAAAAAAAA= --shared-files 30MiB |
+-----------------------------------------------------------------------------+
Apollo 6.0+ 依赖于Docker 19.03版本及以上,安装方式如下:
# 安装依赖项
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 卸载旧版本(可能不存在)
sudo apt-get remove docker docker-engine docker-ce docker.io
# 添加gpg密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新软件源
sudo apt-get update
# 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
#添加docker用户组
sudo groupadd docker
#将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
#更新用户组
newgrp docker
基于Apollo的CUDA的docker镜像需要依赖于NVIDIA Container Toolkit。使用如下指令进行安装
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
随后,重启Docker完成应用。
sudo service docker start
首先需要下载Apollo的源码至本地,由于其源码较大需要先设置git的缓存大小。
# 5G大小
sudo git config --global http.postBuffer 5242880000
随后下载源码即可,由于其大小约为2G左右,根据网速快慢而完成。
git clone [email protected]:ApolloAuto/apollo.git
在源码根目录执行docker下载镜像脚本:
cd docker/scripts
bash dev_start.sh -g cn
此步骤需要耐心等待完成,成功后将显示如下字样:
[ OK ] Congratulations! You have successfully finished setting up Apollo Dev Environment.
[ OK ] To login into the newly created apollo_dev_jasonLi container, please run the following command:
[ OK ] bash docker/scripts/dev_into.sh
[ OK ] Enjoy!
在源码根目录运行如下脚本进入Apollo的Docker容器
cd docker/scripts
bash dev_into.sh
在 /apollo 目录下执行如下指令进行编译:
# 优化模式编译(GPU)
bash apollo.sh build_opt_gpu
# 优化模式编译(CPU)
bash apollo.sh build_cpu
编译成功后,将显示如下字样:
(09:58:11) INFO: Elapsed time: 3331.877s, Critical Path: 204.26s
(09:58:11) INFO: 30716 processes: 18774 internal, 11942 local.
(09:58:11) INFO: Build completed successfully, 30716 total actions
==============================================
[ OK ] Done building apollo. Enjoy!
==============================================
完成编译后,即可在Docker环境下启动Dreamview进行测试:
bash scripts/bootstrap.sh
此时如果出现如下报错,可以再重新启动脚本,即可解决。
nohup: appending output to 'nohup.out'
[ OK ] Launched module monitor.
nohup: appending output to 'nohup.out'
[ OK ] Launched module dreamview.
Failed to start Dreamview. Please check /apollo/data/log or /apollo/data/core for more information
启动成功后可以在浏览器中打开链接进行查看Dreamview:https://localhost:8888
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record
cyber_recorder play -f demo_3.5.record --loop