【动手学Apollo】5. 本地开发基础(上):系统安装

科技   2024-11-06 08:04   上海  

土豆泥老师 (知乎:@土豆泥): 上海交通大学在读博士.

引言

Apollo是一个完整的自动驾驶系统,其中包括许多模块和不少依赖。为了降低安装难度,Apollo提供了一系列镜像以及工具。同时,Apollo还提供了两种安装方式,分别是源码包管理安装。

相比于源码安装方式,包管理优化了下载安装中出现的下载量大、无法按需使用、编译时间过长等问题,规范了组件依赖关系以及组件粒度,提升了自动驾驶开发效率。从实际安装的角度来说,包管理也更方便,免除了源码编译系统容易卡死的问题。

因此,本文将利用包管理的方式对Apollo系统进行安装。同时,介绍包管理下的源码下载和编译的方法,并利用vscode对源码进行查看和编辑,再通过dreamview仿真来验证源码修改的效果。最后,还将简单介绍vscode进行代码单步调试的方法。

如果想利用源码安装,可以详见:Apollo9.0 安装指南。这篇文章也基本参考指南中的内容,顺便还有一些自己的经验。

另外,在进行安装前,保证自己的电脑满足以下配置:

CPU四核以上
内存16G以上
GPU(如果运行感知模块)GTX1060以上

一、安装基础软件

1. 安装Ubuntu系统

Apollo需要运行在Ubuntu 18.04及以上的系统上。安装Ubuntu 18.04+的步骤,参见Ubuntu系统安装指南

完成安装后保持联网状态更新相关软件,在终端中运行以下代码(按Ctrl+Alt+T弹出终端):

sudo apt-get update
sudo apt-get upgrade

推荐大家安装为双系统,因为Apollo运行配置要求16G内存。如果安装为虚拟机的话,性能可能无法满足要求。另外,如果Apollo安装过程中出现了问题,需要重装系统,在双系统的模式下可以参考

Windows和Linux(Ubuntu)双系统下,完全删除Ubuntu系统

2. 安装Docker

Docker是一种容器化技术,用于创建和使用容器。容器可以被视作一个轻量级的虚拟机,有着虚拟机的效果,但是性能损耗远低于虚拟机。

Apollo依赖于Docker 19.03+。可以根据官方文档对Docker引擎进行安装:Docker安装指南

Apollo也提供了安装脚本,推荐按此脚本可以直接进行安装

wget http://apollo-pkg-beta.bj.bcebos.com/docker_install.sh
bash docker_install.sh

这个过程可能会运行多次脚本,根据脚本提示执行即可。一般来说3-4次就能安装成功,成功之前会提示你再次执行脚本,就再输入bash docker_install.sh。

二、获取GPU支持(如不运行感知,可先跳过)

Apollo的某些模块需要GPU的支持才能够编译、运行(例如感知模块),如果您需要使用此类模块,需要安装Nvidia显卡驱动以及Nvidia container toolkit以获取GPU支持。

‍注意:本教程只适用于ubuntu系统,虚拟机无法安装显卡驱动,WSL请自行上网搜索。另外,如果之前已经安装过Nvidia显卡驱动,即往终端输入nvidia-smi能够正常输出,可以跳过 安装显卡驱动 小节

1. 安装显卡驱动

可参照官网方法安装驱动  Linux AMD64 Display Driver Archive | NVIDIA

由于nvidia的硬件更新的很快,因此会遇到显卡驱动和CUDA版本不兼容的情况,以下为测试过的畅通链路:

显卡系列测试显卡驱动版本最低支持驱动版本cuda版本
GeForce 10 SeriesGeForce GTX 1080nvidia-driver-470.160.03nvidia-driver-391.35CUDA Version :11.4
GeForce RTX 20 SeriesGeForce RTX 2070 SUPERnvidia-driver-470.63.01nvidia-driver-456.38CUDA Version :11.4
GeForce RTX 30 SeriesGeForce RTX 3090nvidia-driver-515.86.01nvidia-driver-460.89CUDA Version :11.6
GeForce RTX 30 SeriesGeForce RTX 3060nvidia-driver-470.63.01nvidia-driver-460.89CUDA Version :11.4
Tesla V-SeriesTesla V100nvidia-driver-418.67nvidia-driver-410.129CUDA Version :10.1
AMDMI100 dGPUROCm™ 3.10 driver

10、20、30系列显卡推荐使用470.63.01版本的驱动 ,您可以通过Nvidia官网来  下载驱动

40系列显卡推荐驱动版本>=520.61.05,提供525.105.17版本驱动下载链接: https://www.nvidia.cn/geforce/drivers/results/202351/

下载之后,找到相应的文件夹打开终端输入安装指令:

sudo chmod 777 NVIDIA-Linux-x86_64-470.63.01.run
sudo ./NVIDIA-Linux-x86_64-470.63.01.run

安装完毕后,您可以通过nvidia-smi指令来检查驱动是否安装成功,如果一切正常,您可以看到类似以下的提示:

Tue Jan 3 12:04:21 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03 Driver Version: 470.63.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 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 1080 Off | 00000000:01:00.0 Off | N/A |
| 0% 38C P8 7W / 198W | 239MiB / 8118MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 2566 G /usr/lib/xorg/Xorg 18MiB |
| 0 N/A N/A 2657 G /usr/bin/gnome-shell 67MiB |
| 0 N/A N/A 6104 G /usr/lib/xorg/Xorg 132MiB |
| 0 N/A N/A 6234 G /usr/bin/gnome-shell 13MiB |
| 0 N/A N/A 7440 G gnome-control-center 1MiB |
+-----------------------------------------------------------------------------+

2. 安装 Nvidia container toolkit

为了在容器内获得 GPU 支持,在安装完 docker 后需要安装 NVIDIA Container Toolkit。 运行以下指令安装 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 systemctl restart docker

三、安装Apollo环境管理工具

Apollo 环境管理工具是一个帮忙管理和启动 Apollo 环境容器的命令行工具。

1. 安装依赖软件

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

2. 在宿主机添加 Apollo 软件源的 gpg key,并设置好源和更新

# 添加 gpg key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://apollo-pkg-beta.cdn.bcebos.com/neo/beta/key/deb.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/apolloauto.gpg
sudo chmod a+r /etc/apt/keyrings/apolloauto.gpg
# 设置源并更新
echo \
    "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/apolloauto.gpg] https://apollo-pkg-beta.cdn.bcebos.com/apollo/core"\
    $(. /etc/os-release && echo "$VERSION_CODENAME""main" | \
    sudo tee /etc/apt/sources.list.d/apolloauto.list
sudo apt-get update

‍注:如果之前已经安装过8.0版本的apollo的话,在宿主机上的/etc/apt/sources.list文件中会有形如debhttps://apollo-pkg-beta.cdn.bcebos.com/neo/betabionic main的配置,可以直接删除,宿主机上的apollo源配置仅用于安 装aem工具

3. 安装aem工具

sudo apt install apollo-neo-env-manager-dev --reinstall

安装成功后即可使用下列代码查看aem使用说明

aem -h

四、安装Apollo工程

1. 选择示例工程并下载

Apollo 目前提供了3个示例工程,您可以根据需要选择其一

application-core , 包含 Apollo 所有开源软件包,可以基于此工程搭建自己的应用,推荐安装

application-pnc , 仅包含规划控制相关的软件包,适合仅关注规划控制方向的用户

application-perception , 仅包含感知相关的软件包,适合仅关注感知方向的用户

以 x86 架构的 application-core 为例

git clone https://github.com/ApolloAuto/application-core.git application-core

2. 启动并进入Apollo环境容器

# 创建并进入工程目录
mkdir application-core
cd application-core
# 环境设置:识别主机系统是x86_64还是aarch64, 并修改对应的.env和.workspace.json配置
bash setup.sh
# 启动容器
aem start
# 进入容器
aem enter

当进入容器后,可以看见in-dev-docker字样。

3. 安装软件包

示例工程中包含一个名为 core 目录,其中 core/cyberfile.xml 文件中描述了工程所依赖软件包,可以通过 buildtool 工具进行依赖包的安装

buildtool build -p core

‍此操作真正含义是编译工程中 core 这个包,但 core 本身并没有需要编译的代码,所以此操作仅会安装 core/cyberfile.xml 中声明的依赖包。 这一步需要较长的时间,如果失败,检查是否正确进入容器,还有软件包是否正常下载。

4. 选择车型配置

示例工程中profiles/sample目录是官方提供的基于一个雷达两个摄像头的车型配置,您可以参考profiles目录下的sample编写自己的车型配置,生效车型配置的方法如下

# 以sample为例
aem profile use sample

5. 播放数据包

获取数据包

wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record -P $HOME/.apollo/resources/records/

获取数据包对应的地图

buildtool map get sunnyvale

‍从9.0.0-rc-r10版本开始,地图数据已经被分离出来,需要单独下载,不再随地图包发布;通过buildtool map list可以查看所有可用的地图

启动 Dreamview+,可能需要多次执行才能启动成功

aem bootstrap start --plus

在Dreamview中播放数据包

启动 Dreamview+ 之后,在浏览器输入localhost:8888进入 Dreamview+ 界面,您可以选择默认模式,也可以选择其他模式播放数据包。本小节以默认模式为例。

https://picx.zhimg.com/80/v2-16c8de3a25f16ae013c25106914944d0_1440w.png?source=d16d100b

Mode Settings/模式设置页面,设置播包参数。

  • Operations/操作 中选择 Record
  • Environment Resources/环境资源 中,单击 Records/数据包 ,并选择demo 3.5
  • Environment Resources/环境资源 中,单击 HDMap/高精地图 ,并选择 Sunnyvale
https://pic1.zhimg.com/80/v2-8ccd257380e9af9ba2018d3e48423567_1440w.png?source=d16d100b

单击底部按钮区域,可以在 Vehicle Visualization/车辆可视化 中看到数据包播放的画面。

五、删除工程(可选)

此步说明如何删除已安装的工程

# 先进入工程目录
cd application-core
# 删除容器
aem remove
# 回到上一级目录
cd ..
# 删除工程目录
rm -r application-core

小结(要点总结)

如果你顺利进行到这一步,并且在Dreamview中看到播放的画面,恭喜你已经在你的电脑上成功安装了Apollo系统。与源码安装不同,包管理安装在根目录下并不能看到源码,这与我们的熟悉的开发方式或许有些不同。后续我们将简单介绍包管理的开发方式,并且在dreamview上重复我们在云实验室中进行的几个实验。

如果你并没有顺利安装成功,我这里总结了几个安装要点:

  1. 一定要严格按照最新版本的安装手册进行安装。目前最新版本是9.0,当进入官网还能搜到6.0和8.0版本的,如果不小心依照之前的手册安装,可能会出现各种各样的bug。如果实在无法解决,可以参照一、1重装系统。如果你安装的时候已经出到更新的版本,依照最新版本手册进行安装。
  2. Apollo的代码量真的很大,源码下载下来有20多G。整个源码编译很吃电脑性能,所以如果你用源码安装方式又经常编译死机,还是推荐包管理安装。
  3. 打开dreamview,发现环境资源里,地图和车辆没有文中的多,这是正常现象。Apollo提供了一些工具下载对地图和车辆进行下载,也可以编辑自己的地图和车辆。

推荐阅读:

🏎️自动驾驶小白说官网:https://www.helloxiaobai.cn


自动驾驶小白说
输出专业自动驾驶算法教程的开发者社区. 🦈 官网: https://www.helloxiaobai.cn
 最新文章