前言
最近有实现Carla与Apollo联合仿真的想法,必备条件就是都两个软件部署到Ubantu20.04上,目前已经完成Carla 0.9.13的部署工作,详见Carla学习笔记(1):Ubantu20.04安装Carla 0.9.13_智驾小兵的博客-CSDN博客
这一篇博客这要记录安装Apollo7.0的过程,供大家参考。
找官方文档安装最靠谱,但无奈Github和Apollo社区都没找到Apollo7.0的快速安装指南,只好用Apollo6.0的官方安装文档作为参考:技术文档丨Apollo 6.0软件安装指南,但是经过查阅其它博主的文章,会加入一些其它步骤来避坑。
一.安装Apollo7.0的先决条件
1.Ubantu20.04的安装(双系统可参考)小米笔记本双固态硬盘安装win10+ubantu20双系统 实录_智驾小兵的博客-CSDN博客
2.NVIDIA GPU驱动安装
小米笔记本ubantu20.04安装谷歌输入法和Nvidia驱动 实录_智驾小兵的博客-CSDN博客
3.Docker容器安装
官方指导文档:Install Docker Engine on Ubuntu | Docker Documentation
1)彻底去除系统中的老版本(之前没安过docker的可忽略)
官网只给了两条指令,但根据经验来说,会增加步骤保证旧版本docker删除干净
#官网给出的删除指令
~$ sudo apt-get purge docker-ce docker-ce-cli containerd.io
~$ sudo rm -rf /var/lib/docker
#增加步骤:
#1.自动删除的常规操作
~$ sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
#2. 删除其它配置文件
~$ dpkg -l | grep docker
~$ dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P # 删除无用的相关的配置文件
#3.卸载没有删除的docker相关插件
~$ sudo apt-get autoremove docker-ce-*
#4.删除docker的相关配置&目录
~$ sudo rm -rf /etc/systemd/system/docker.service.d
~$ sudo rm -rf /var/lib/docker
#5.确定docker卸载完毕
~$ docker --version
2)更新并安装docker相应依赖
~$ sudo apt-get update
#安装依赖
~$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
3)添加密钥
~$ sudo mkdir -p /etc/apt/keyrings
~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4)设置储存库并更新
~$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5)更新并安装docker引擎
~$ sudo apt-get update
~$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
6)列出docker版本列表并选择
~$ apt-cache madison docker-ce
保险起见,我选择最新版的docker安装(标红框的为变量,下方指令的变量位置可以用不同版本替换)
~$ sudo apt-get install docker-ce=5:20.10.17~3-0~ubuntu-focal docker-ce-cli=5:20.10.17~3-0~ubuntu-focal containerd.io docker-compose-plugin
7)安装后测试
~$ sudo docker run hello-world
成功
8)后续操作(重要!!!)
创建组docker,并将当前用户加入组中,后续就可以以用户身份操作docker而不是root,这一步至关重要,也是官方文档没有的,命令如下:
~$ sudo groupadd docker
~$ sudo usermod -aG docker $USER
重新登录系统,并且继续为docker添加启动项
~$ systemctl start docker && systemctl enable docker
~$ docker run hello-world
#添加启动项
~$ sudo systemctl enable docker.service
~$ sudo systemctl enable containerd.service
Docker的更新也比较频繁,升级则会出现新版本安装不成功又禁用旧版本服务的情况,还会导致系统Docker和镜像Docker的驱动nvidia-docker2版本不匹配,导致启动Apollo镜像的操作dev_start.sh时报错,所以非必要不要升级Docker。
~$ service docker start
Failed to start docker.service: Unit docker.service is masked.
~$ systemctl unmask docker.service
~$ systemctl unmask docker.socket
~$ systemctl start docker.service
~$ service docker start
docker run hello-world
4.安装NVIDIA Container Toolkit
NVIDIA Container Toolkit允许用户构建和运行GPU加速Docker容器。该工具包包括一个容器运行时库和实用程序,用于自动配置容器以利用NVIDIA GPU。
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
5.配置github密钥
Github配置ssh key的步骤(大白话+包含原理解释)_风中一匹狼v的博客-CSDN博客_github配置ssh key
二.安装Apollo7.0
1.下载Apollo7.0
~$ git clone git@github.com:ApolloAuto/apollo.git
2.设置环境变量,拉取Apollo镜像
~$ cd apollo/
~apollo $ echo "export APOLLO_ROOT_DIR=$(pwd)" >> ~/.bashrc && source ~/.bashrc
~apollo $ bash docker/scripts/dev_start.sh
...
[ OK ] Congratulations! You have successfully finished setting up Apollo Dev Environment.
[ OK ] To login into the newly created apollo_dev_shaw container, please run the following command:
[ OK ] bash docker/scripts/dev_into.sh
[ OK ] Enjoy!
3.从源代码编译Apollo
#登录到新启动的容器
~$ bash docker/scripts/dev_into.sh
#编译Apollo
root@in-dev-docker:/apollo#./apollo.sh build
三. 启动Demo
1.运行命令启动 Dreamview 后端和监视器模块
在Chrome或Firefox浏览器中打开网址http://localhost:8888/,可以查看初始化界面。
root@in-dev-docker:/apollo# bash scripts/bootstrap.sh
[INFO] Module monitor is already running - skipping.
[INFO] Module dreamview is already running - skipping.
2.下载record
root@in-dev-docker:/apollo# python3 record_helper.py demo_3.5.record
3.设置页面并播放record
在DreamView界面中,选择驾驶模式为“Mkz Standard Debug”,选择车型为“Lincoln2017MKZLGSVL”,选择地图为“Sunnyvale with Two Offices”,最后播放record。
root@in-dev-docker:/apollo# cyber_recorder play -f demo_3.5.record --loop
播放效果如下:
以上,为安装Apollo7.0的记录,欢迎收藏点赞评论,谢谢大家!!!