本文是 Apollo(百度 Apollo 自动驾驶开源平台) GitHub 官方 README 的完整中文翻译版,内容与官方仓库保持一致,命令、版本号、路径均以官方 README 为准。
官方信息
| 项目 | 信息 |
|---|---|
| 项目名称 | Apollo 开源自动驾驶平台 |
| 维护方 | 百度(ApolloAuto) |
| 仓库地址 | github.com/ApolloAuto/apollo |
| 官方网站 | apollo.auto |
| 开源协议 | Apache-2.0 |
| 支持系统 | Ubuntu 18.04 / 20.04 / 22.04 |
| 业务合作邮箱 | apollopartner@baidu.com |
"我们选择在这个十年内登上月球,并把其余事情做完,不是因为它们容易,而是因为它们很难。"——约翰·肯尼迪,1962 年。这是 Apollo 仓库开篇引用的一句话,也是这个项目精神的写照。
项目简介
欢迎来到 Apollo 的 GitHub 主页。Apollo 是一个高性能、架构灵活的自动驾驶开放平台,旨在加速自动驾驶汽车的开发、测试与部署流程。它不是一个单一的算法仓库,而是一整套从感知、定位、预测、规划到控制的完整软件框架,配套了开发环境、仿真工具、可视化界面和硬件接入指南。
Apollo 内置了大量新模块和新功能,但官方特别提醒:在你真正把车开上路之前,必须先把平台校准、配置到位。请务必逐条阅读下文的前置条件与安装步骤,确认自己的软硬件环境齐备后再开始构建和启动 Apollo。此外,官方还建议阅读 Apollo 的架构总览,以更好地理解其核心技术与平台组成。
从技术构成上看,Apollo 以一套自研的实时通信中间件 CyberRT 作为各模块之间的数据总线,感知模块负责把激光雷达、摄像头、毫米波雷达的原始信号融合成周围障碍物与车道的结构化结果,定位模块负责输出车辆在高精地图中的精确位姿,预测模块推断其他道路参与者的未来轨迹,规划模块据此生成一条安全可行的行驶轨迹,控制模块再把这条轨迹转化为方向盘、油门、刹车的具体指令。开发者日常打交道的入口是浏览器中的 Dreamview 可视化界面,在那里可以启停模块、切换地图、观察规划轨迹和传感器原始数据。8.0 之后官方又引入了可复用的 Package 软件包机制,把上述能力封装成一个个易于二次开发的组件,9.0 进一步升级为包管理 2.0,并补充了更轻量的插件式扩展方式。整套平台从 2017 年首次开源至今,已经迭代到 11.0,是目前全球参与方最多、文档最完整的自动驾驶开源项目之一。
环境要求(Prerequisites)
【2024 年 11 月新增】 Apollo 平台稳定版升级了一批软件包与第三方库依赖,主要包括:
- CUDA 升级到 11.8,以支持 NVIDIA Ada Lovelace 架构(40 系显卡),对应 NVIDIA 驱动版本要求 >= 520.61.05;
- LibTorch(仅 arm64,CPU 与 GPU 版本同步)升级到 1.11.0;x86_64 平台仍保持 1.7.0 版本。
官方预期这次升级不会打断你正在进行的工作,但为了顺利迁移,你需要做以下三件事:
- 把宿主机上的 NVIDIA 驱动升级到 >= 510.61.05(可在 NVIDIA 官方驱动下载页 下载);
- 拉取最新代码,重启并登录 Apollo 开发容器后,执行以下命令清理旧版本的 Bazel 构建产物:
# 删除此前构建产生的 Bazel 输出
rm -rf /apollo/.cache/{bazel,build,repos}
- 重启开发容器:
./docker/scripts/dev_start.sh
除了这次升级之外,使用 Apollo 还需要满足以下基础条件:
- 车辆必须配备线控(by-wire)系统,包括但不限于线控制动、线控转向、线控油门和线控换挡(Apollo 目前在林肯 MKZ 车型上完成测试);
- 开发机至少为 8 核处理器、16GB 内存;
- 强烈推荐配备 NVIDIA Turing 架构 GPU,或 AMD GFX9 / RDNA / CDNA 架构 GPU;
- 操作系统支持 Ubuntu 18.04、20.04、22.04;
- NVIDIA 驱动版本 520.61.05 及以上(官方驱动下载),或安装 ROCm v5.1 及以上版本;
- Docker-CE 19.03 及以上版本(Docker 官方安装文档);
- 安装 NVIDIA Container Toolkit,让容器内可以调用宿主机 GPU。
官方特别建议:安装顺序应为 1.0 -> 你想测试的目标版本。原因在于,你需要先确认每一个硬件部件和模块都工作正常,并在低阶版本上把各类测试用例跑通之后,再升级到能力更强的高阶版本——这是为了你自己和周围人的安全。
版本演进:Apollo 各版本能力一览
官方用一张路线图展示了每个版本的能力范围,下面逐版翻译说明。
- Apollo 1.0(自动 GPS 轨迹巡航):工作在封闭场景内,比如测试场或停车场。这一版的安装是必需的,用来确保 Apollo 与你的车辆正确配合。
- Apollo 1.5(固定车道巡航):新增激光雷达后,车辆对周围环境的感知能力增强,可以更好地定位自身位置、规划本车道轨迹,实现更安全的车道内行驶。
- Apollo 2.0(简单城市道路自动驾驶):车辆可以在城市简单道路上安全巡航、规避障碍物、在红绿灯前停车,并在需要时变道到达目的地。
- Apollo 2.5(地理围栏高速公路):允许车辆在有地理围栏的高速公路上依靠摄像头做障碍物检测自主行驶,保持车道控制、巡航并与前车防碰撞。官方特别提示:测试 2.5 出于安全考虑必须寻求 Apollo 工程团队协助,确保车辆正确集成后再上路。
- Apollo 3.0(封闭场地低速开发平台):主要面向开发者,提供封闭场地低速环境下的构建平台,车辆可保持车道控制、巡航和前车防碰撞。
- Apollo 3.5(复杂城市场景通行):具备在居民区、市中心等复杂驾驶场景穿行的能力。车辆拥有 360 度感知视野,感知算法升级以应对城市道路变化,并引入场景化规划,可处理无保护转弯、狭窄街道、停止标志路口等复杂情形。
- Apollo 5.0(量产导向):面向地理围栏自动驾驶的量产落地,360 度感知视野配合升级的深度学习感知模型;场景化规划新增靠边停车、无保护路口穿越等场景。
- Apollo 5.5(路缘到路缘):在 5.0 基础上引入 curb-to-curb 全路段城市道路驾驶支持,并配备全新的预测模型处理复杂道路与路口场景,向全自动城市道路驾驶再进一步。
- Apollo 6.0(深度学习模型升级):引入新的深度学习模型增强部分模块能力,并配套数据流水线服务,也是首个集成部分无人驾驶演示特性的版本。
- Apollo 7.0(Apollo Studio 上线):新增 3 个深度学习模型增强感知与预测模块;推出 Apollo Studio,结合数据流水线提供一站式在线开发平台;并发布 PnC(规划与控制)强化学习模型训练与仿真评估服务。
- Apollo 8.0(可扩展软件框架):提供可复用的 "Package" 软件包机制来组织模块;打通感知开发全流程(模型训练服务 + 模型部署工具 + 端到端可视化验证工具);再新增 3 个感知深度学习模型;仿真服务升级,把本地模拟器集成进 Dreamview,为 PnC 开发者提供强力调试工具。
- Apollo 9.0(开发调试体验升级):重塑 PnC 与感知的扩展开发方式,基于包管理优化组件拆分与配置;除组件扩展外新增更轻量的插件扩展方式;推出全新开发者工具 Dreamview Plus,支持多场景模式、可视化面板自定义和资源中心;激光雷达与摄像头检测模型升级并开放增量训练;新增 4D 毫米波雷达支持;适配 ARM 架构,支持在 Orin 上编译运行。
- Apollo 10.0(大规模场景化升级):8.0 引入包管理降低学习部署门槛,9.0 把包管理升级到 2.0;10.0 则面向大规模落地:优化各层各模块性能与稳定性并提供大量调优工具;通过丰富硬件生态降低硬件成本,通过升级操作系统、与其他框架互通、复用生态软件降低软件开发成本;并强化功能安全策略与功能安全框架能力。
- Apollo 11.0(高价值场景功能车规模化部署):聚焦高价值场景下功能型自动驾驶车辆的大规模部署,全面升级感知、定位、规划与开发工具链,显著降低软硬件开发门槛,帮助开发者高效构建端到端自动驾驶操作系统,详情见官方 RELEASE 说明。
系统架构
官方给出三张架构总览图:
- 硬件 / 车辆总览:展示 Apollo 开发车的硬件组成;
- 硬件连接总览:展示各传感器、计算单元之间的接线关系;
- 软件总览:展示 Apollo 软件栈从驱动、感知、定位、预测、规划到控制的分层结构。
开发者可对照官方文档中的架构图,理解每一个模块在整车系统中所处的位置。官方路线图还标明了每个版本相比上一版新增或升级的模块,阅读时可以把它当作一张能力对照表,快速判断自己关心的功能(例如 360 度感知、场景化规划、数据流水线服务)是从哪一个版本开始引入的。
安装步骤
官方给出两类安装指引:
完成后,恭喜你:你已经在没有真实硬件的情况下成功构建出 Apollo 环境。如果你确实有车辆和某一版本对应的硬件套件,请再选择与你的配置最匹配的快速上手指南。
快速上手(Quick Starts)
按版本不同,官方提供了对应的快速上手文档:Apollo 10.0 快速开始、Apollo 9.0 快速开始、Apollo 8.0、6.0、5.5、5.0、3.5、3.0、2.5、2.0、1.5、1.0 各版快速开始文档均收录在仓库 docs/02_Quick Start/ 目录下。
官方文档目录
Apollo 仓库的 docs/ 目录按主题组织了完整文档:安装说明、快速开始、包管理、CyberRT、定位、感知、预测、规划、决策、控制、硬件集成与标定、地图采集、Apollo 工具、其他,以及专门的 FAQ 常见问题。
常见问题(FAQ)
- 问:我能不能跳过 1.0 直接装最新版本? 答:官方不建议。低阶版本用来逐模块验证硬件与功能,确认无误后再升级,这是出于安全考虑。
- 问:升级到新版后 Bazel 构建报错怎么办? 答:按 2024 年 11 月升级说明,先升级 NVIDIA 驱动,再执行
rm -rf /apollo/.cache/{bazel,build,repos}清理旧构建缓存,最后用./docker/scripts/dev_start.sh重启开发容器。 - 问:没有真车可以玩 Apollo 吗? 答:可以。官方明确表示你可以先在无硬件条件下构建出 Apollo 环境,再通过仿真与各版快速开始文档学习。
- 问:支持 AMD 显卡吗? 答:支持。除 NVIDIA Turing GPU 外,官方也认可 AMD GFX9 / RDNA / CDNA 架构 GPU,并给出了 ROCm v5.1 的安装要求。
- 问:开发容器怎么启动? 答:在 Apollo 仓库根目录执行
./docker/scripts/dev_start.sh即可拉起开发容器;升级依赖后也必须先执行一次清理命令再重启容器。 - 问:Apollo 用什么协议开源? 答:Apache-2.0,允许商业使用与二次开发,具体见仓库中的 LICENSE 文件。
- 问:想做二次开发从哪里入手? 答:建议按官方文档目录顺序,先读
01_Installation Instructions完成环境安装,再读02_Quick Start对应版本的快速上手,最后根据自己关心的方向深入04_CyberRT通信、06_Perception感知或08_Planning规划等模块文档。 - 问:平台对车辆硬件有什么硬性要求? 答:车辆必须是线控底盘,即制动、转向、油门、换挡都能通过电信号控制;Apollo 官方的测试车型是林肯 MKZ,其他车型需要自行完成硬件集成与标定,文档集中在
11_Hardware Integration and Calibration目录。
反馈与联系
欢迎在 GitHub Issues 提交问题与缺陷报告。商业合作请访问 apollo.auto 或邮件联系 apollopartner@baidu.com。此外,官方还活跃于 Twitter、YouTube 和 Medium 博客。
免责声明:Apollo 开源平台仅提供模型、算法与流程的源代码,商业化、产品化部署时需结合网络安全防御策略一并实施,具体以 Apollo 官方网站的免责声明 为准。