文章目录
最近在接触自动驾驶相关的功能,今天先带着大家把自动驾驶开放平台给搭建起来,由于百度开始较早,基建能力也比较完善,所以我们可以利用其开源的Apollo Auto来快速搭建一套属于我们自己的自动驾驶系统。
1.目标
部署Apollo Auto,并且能够成功启动它,要求如下:
- 1.启动 Dreamview+,并在 Dreamview+ 中播放数据包,
- 2.实现Cyber RT 与 ROS 通信
2.硬件资源要求
处理器(CPU)
最低要求:4核处理器(x86_64架构)
推荐配置:8核或更高(建议使用x86_64架构的Ubuntu 22.04操作系统或者aarch64架构的Ubuntu 20.04操作系统)
说明:多核性能直接影响编译速度和实时计算效率。
内存(RAM)
Apollo 3.5及以上版本:至少 16GB(低于此容量编译可能失败)
运行要求:建议 ≥32GB(若启用感知模块或仿真需更高内存)
优化建议:无独立显卡时需配置大容量Swap空间(≥32GB)。
存储空间
系统盘:预留 ≥ 100GB(Ubuntu系统 + 基础依赖)
Apollo源码及编译:额外 ≥ 100GB(Docker镜像、中间文件、地图数据等)
总建议:≥200GB SSD(机械硬盘可能导致编译卡顿)。
3.部署
3.1 下载ApolloAuto安装包
git clone https://github.com/ApolloAuto/apollo.git
git clone https://github.com/ApolloAuto/application-core.git
需要保持这种目录结构:
注意如果你只是想尝试着玩,但是没有ubuntu系统的话,可以用docker拉一个ubuntu的镜像,由于国外的镜像源我们国内需要魔法才能获取,所以大家可以直接用我这个拉取
3.2 使用docker建立ubuntu系统
有ubuntu系统的兄弟们可以跳过该步骤
docker pull docker.m.daocloud.io/library/ubuntu:22.04 --platform linux/amd64
docker run -it --name apollo-ubuntu --platform linux/amd64 --privileged -v //Users/hb24795/soft/docker/ubuntu/apollo_data/apollo-master:/apollo_data docker.m.daocloud.io/library/ubuntu:22.04 /bin/bash
注意:-v /Users/hb24795/soft/docker/ubuntu/apollo_data/apollo:/apollo_data 这个目录地址就是我源代码下载后的地址,我们直接挂载上去就避免了资源的复制了
进入容器后先安装一些必要的包
apt-get update
apt-get install -y curl sudo lsb-release gnupg2
3.3 安装依赖
sudo apt-get update
sudo apt-get upgrade
很多在执行这一步时喜欢用阿里云、清华、华为等镜像,切记不要去改当前镜像源,否则后面的一些Apollo的必要依赖下载过程中会出现找到该软件的问题,博主已踩坑,切记!!!
3.4 安装docker
PS:如果系统本身已经有docker 可以跳过该步骤,可以通过docker ps 去尝试是否可以执行成功
你可以使用官方提供的安装方式
wget http://apollo-pkg-beta.bj.bcebos.com/docker_install.sh
bash docker_install.sh
注意:bash docker_install.sh 执行时间可能较长,中间可能会有中断之类的现象,建议多次执行,如果还是不行,可以按照下面这种安装方式
# 安装必要的依赖
apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 使用阿里云镜像源添加 Docker 的 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置阿里云 Docker 仓库
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.iodocker
4.获取 GPU 支持
Apollo某些模块需要GPU的支持才能够编译、运行(例如感知模块),如果您需要使用此类模块,需要安装Nvidia显卡驱动以及Nvidia container toolkit以获取GPU支持。
从 Apollo 10.0 开始,CUDA 最低版本要求为 11.8 ,因此推荐使用 520.61.05 以上版本的驱动,CUDA 版本与 驱动版本的兼容信息可参考 Nvidia 官方文档 。 显卡驱动和CUDA版本兼容性,由于nvidia的硬件更新的很快,因此会遇到显卡驱动和CUDA版本不兼容的情况,下面是官方推荐的几款驱动以及对应的cuda版本
注意:本教程只适用于ubuntu系统,虚拟机无法安装显卡驱动,wsl请自行上网搜索 注意:如果您之前已经安装过Nvidia显卡驱动,即往终端输入nvidia-smi能够正常输出,可以跳过1.安装显卡驱动小节
MAC系统:苹果菜单中的"关于本机"→"系统报告"→"图形/显示器"
ubuntu系统:
lspci | grep -i vga # 显示显卡型号(如 "NVIDIA Corporation GA104 [GeForce RTX 3070]")[5,6,7](@ref)
sudo lshw -C display # 列出显卡型号、驱动、显存等[5,6](@ref)
我当前ubuntu系统的显卡无 CUDA 支持,且显存极低(未标注显存大小,通常≤8MB),无法满足 Apollo 的深度学习感知计算需求
由于我当前系统无显卡支持,所以后续步骤待我显卡到了之后实操完成在给大家更新,所以后面的步骤可以先基于CPU去计算
5.安装 Apollo 环境管理工具
5.1 安装依赖软件
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
5.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
上面的指令一行行执行,执行成功后安装aem
5.3 安装aem
sudo apt install apollo-neo-env-manager-dev --reinstall
安装成功后即可使用
aem -h
给大家说几个常见的指令
# 查看aem列表
aem list
# 移除指定Apollo环境
aem remove --name
6.安装示例工程
Apollo 目前提供了3个示例工程,您可以根据需要选择其一
- application-core , 包含 Apollo 所有开源软件包,可以基于此工程搭建自己的应用
- application-pnc , 仅包含规划控制相关的软件包,适合仅关注规划控制方向的用户
- application-perception , 仅包含感知相关的软件包,适合仅关注感知方向的用户
官方使用的是application-core作为demo,但是我下面带着大家直接用 Apollo 全量源码的工程 apollo来部署
首先进入我们的工程根目录
# 切换环境配置, 会自动识别您的宿主机环境切换.env和.workspace.json配置
# 如果您使用apollo源码方式,不需要执行此步骤,aem会自动识别起动环境
bash setup.sh
# 启动容器,
aem start --cpu or aem start --gpu
进入容器后你就会见到这样一个画面
7.安装软件包
执行
buildtool build --cpu or buildtool build
注意:该指令一次可能不会成功,需要执行多次,直至成功为止(PS:我执行了5次左右才完全成功)
如果你不小心退出了docker环境,可以通过
bash docker/scripts/dev_into.sh
8.播放数据包
# 获取数据包
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record -P $HOME/.apollo/resources/records/
# 获取数据包对应的地图
buildtool map get sunnyvale
# 启动 Dreamview+
aem bootstrap start --plus
在 Dreamview+ 中播放数据包
启动 Dreamview+ 之后,在浏览器输入 localhost:8888 进入 Dreamview+ 界面,您可以选择默认模式,也可以选择其他模式播放数据包。本小节以默认模式为例。