ApolloAuto/apollo
GitHub: ApolloAuto/apollo
百度开源的高性能自动驾驶平台,提供从感知、规划控制到仿真测试的完整软件架构,加速自动驾驶车辆的开发与部署。
Stars: 26741 | Forks: 9962

```
We choose to go to the moon in this decade and do the other things,
not because they are easy, but because they are hard.
-- John F. Kennedy, 1962
```
欢迎使用 Apollo 的 GitHub 页面!
[Apollo](http://apollo.auto) 是一个高性能、灵活的架构,旨在加速自动驾驶车辆的开发、测试和部署。
如需商务合作与建立伙伴关系,请访问[我们的网站](http://apollo.auto)。
## 目录
1. [简介](#introduction)
2. [前置条件](#prerequisites)
3. [各版本说明](#individual-versions)
4. [架构](#architecture)
5. [安装](#installation)
6. [快速开始](#quick-starts)
7. [文档](#documents)
## 简介
Apollo 包含了许多新的模块和功能,但在您开始试用之前,需要对其进行完美的校准和配置。请详细查看前置条件和安装步骤,以确保您已做好构建和启动 Apollo 的充分准备。您还可以查看 Apollo 的架构概述,以更好地理解 Apollo 的核心技术和平台。
## 前置条件
**[2024-11 新增]** Apollo 平台(稳定版)现已升级,包含以下较新版本的软件包和库依赖:
1. CUDA 升级至 11.8 版本,以支持 Nvidia Ada Lovelace(40x0 系列)GPU,
要求 NVIDIA 驱动版本 >= 520.61.05
2. LibTorch(仅适用于 arm64 架构,包含 CPU 和 GPU 版本)相应升级至 1.11.0 版本,对于 x86_64 架构,仍为 1.7.0 版本。
我们预计这不会中断您当前的工作,但为了让您更轻松地进行迁移,您需要:
1. 将主机上的 NVIDIA 驱动更新至 510.61.05 或更高版本。
([网页链接](https://www.nvidia.com/Download/index.aspx?lang=en-us))
2. 拉取最新代码,并在重启并登录到 Apollo 开发容器后运行以下命令:
```
# 移除之前构建的 Bazel 输出
rm -rf /apollo/.cache/{bazel,build,repos}
```
3. 重启开发容器
```
./docker/scripts/dev_start.sh
```
- 车辆必须配备线控系统,包括但不限于线控制动、线控转向、线控油门和线控换挡(Apollo 目前在林肯 MKZ 上进行测试)
- 配备至少 8 核处理器和 16GB 内存的机器
- 强烈建议使用 NVIDIA Turing GPU / AMD GFX9/RDNA/CDNA GPU
- 支持 Ubuntu 18.04、20.04、22.04
- NVIDIA 驱动版本 520.61.05 及以上([网页链接](https://www.nvidia.com/Download/index.aspx?lang=en-us))或 [ROCm v5.1](https://docs.amd.com/bundle/ROCm-Installation-Guide-v5.1/page/Prerequisite_Actions.html) 及以上。
- Docker-CE 版本 19.03 及以上([官方文档](https://docs.docker.com/engine/install/ubuntu/))
- NVIDIA Container Toolkit([官方文档](https://github.com/NVIDIA/nvidia-docker))
**请注意**,建议您按照以下顺序安装 Apollo 的各个版本:**1.0 -> 您想要测试的任何版本**。提出此建议的原因是,您需要确认各个硬件组件和模块是否正常工作,并在升级到更高、功能更强大的版本之前,通过各种版本的测试用例,以确保您自己和周围人员的安全。
## 各版本说明:
下图展示了每个 Apollo 版本的范围和功能:

[**Apollo 1.0:**](docs/11_Hardware%20Integration%20and%20Calibration/%E8%BD%A6%E8%BE%86%E9%9B%86%E6%88%90/%E7%A1%AC%E4%BB%B6%E5%AE%89%E8%A3%85hardware%20installation/apollo_1_0_hardware_system_installation_guide.md)
Apollo 1.0 也被称为自动 GPS 航点跟随,可在测试跑道或停车场等封闭场地中运行。此安装步骤对于确保 Apollo 与您的车辆完美配合至关重要。下图列出了 Apollo 1.0 中的各种模块。

[**Apollo 1.5:**](docs/11_Hardware%20Integration%20and%20Calibration/%E8%BD%A6%E8%BE%86%E9%9B%86%E6%88%90/%E7%A1%AC%E4%BB%B6%E5%AE%89%E8%A3%85hardware%20installation/apollo_1_5_hardware_system_installation_guide.md)
Apollo 1.5 旨在实现固定车道巡航。通过增加 LiDAR,搭载此版本的车辆现在能更好地感知周围环境,并能更准确地定位当前位置和规划轨迹,从而在车道上实现更安全的操控。请注意,以黄色突出显示的模块是 1.5 版本的新增或升级模块。

[**Apollo 2.0:**](docs/11_Hardware%20Integration%20and%20Calibration/%E8%BD%A6%E8%BE%86%E9%9B%86%E6%88%90/%E7%A1%AC%E4%BB%B6%E5%AE%89%E8%A3%85hardware%20installation/apollo_2_0_hardware_system_installation_guide_v1.md#key-hardware-components)
Apollo 2.0 支持车辆在简单的城市道路上自动驾驶。车辆能够安全地在道路上巡航、避开障碍物、在交通灯前停车,并在需要时变道以到达目的地。请注意,以红色突出显示的模块是 2.0 版本的新增或升级模块。

[**Apollo 2.5:**](docs/11_Hardware%20Integration%20and%20Calibration/%E8%BD%A6%E8%BE%86%E9%9B%86%E6%88%90/%E7%A1%AC%E4%BB%B6%E5%AE%89%E8%A3%85hardware%20installation/apollo_2_5_hardware_system_installation_guide_v1.md)
Apollo 2.5 允许车辆利用摄像头进行障碍物检测,在地理围栏限定的高速公路上自动驾驶。车辆能够保持车道控制、巡航,并与前车避免碰撞。
```
Please note, if you need to test Apollo 2.5; for safety purposes, please seek the help of the
Apollo Engineering team. Your safety is our #1 priority,
and we want to ensure Apollo 2.5 was integrated correctly with your vehicle before you hit the road.
```

[**Apollo 3.0:**](docs/02_Quick%20Start/apollo_3_0_quick_start.md)
Apollo 3.0 的主要重点是为开发者提供一个在封闭场地低速环境中进行构建的平台。车辆能够保持车道控制、巡航,并与前车避免碰撞。

[**Apollo 3.5:**](docs/02_Quick%20Start/apollo_3_5_quick_start.md)
Apollo 3.5 能够应对复杂的驾驶场景,例如住宅区和市中心区域。车辆现在拥有 360 度的视野,并结合升级后的感知算法来处理城市道路不断变化的状况,使车辆更加安全和具有感知能力。基于场景的规划可以应对复杂的场景,包括在住宅区常见的无保护转弯和狭窄街道,以及带有停车标志的道路。

[**Apollo 5.0:**](docs/02_Quick%20Start/apollo_3_5_quick_start.md)
Apollo 5.0 旨在支持地理围栏限定自动驾驶的量产。
车辆现在拥有 360 度的视野,并结合升级后的感知深度学习模型来处理复杂道路场景不断变化的状况,使车辆更加安全和具有感知能力。基于场景的规划已得到增强,以支持靠边停车和通过无标志十字路口等额外场景。

[**Apollo 5.5:**](docs/02_Quick%20Start/apollo_5_5_quick_start.md)
Apollo 5.5 通过引入路缘到路缘的驾驶支持,增强了先前 Apollo 版本在复杂城市道路上的自动驾驶能力。有了这项新功能,Apollo 距离完全自主的城市道路驾驶又近了一大步。车辆拥有完整的 360 度视野,并结合升级后的感知深度学习模型和全新的预测模型,以应对复杂道路和交叉路口场景不断变化的状况,使车辆更加安全和具有感知能力。

[**Apollo 6.0:**](docs/02_Quick%20Start/apollo_6_0_quick_start.md)
Apollo 6.0 引入了新的深度学习模型,以增强某些 Apollo 模块的功能。此版本与新增的数据 pipeline 服务无缝协作,以更好地为 Apollo 开发者服务。Apollo 6.0 也是第一个集成了某些特定功能的版本,展示了我们在无人驾驶技术方面不断探索和实验的成果。

**Apollo 7.0:**
Apollo 7.0 引入了 3 个全新的深度学习模型,以增强 Apollo 感知和预测模块的功能。此版本引入了 Apollo Studio,它与 Data Pipeline 相结合,提供了一个一站式在线开发平台,以更好地为 Apollo 开发者服务。Apollo 7.0 还在先前仿真服务的基础上,发布了 PnC 强化学习模型训练和仿真评估服务。

[**Apollo 8.0:**](docs/02_Quick%20Start/apollo_8_0_quick_start.md)
Apollo 8.0 旨在为自动驾驶开发者提供一个可扩展的软件框架和完整的开发生命周期。Apollo 8.0 引入了易于复用的“Package”来组织软件模块。Apollo 8.0 通过结合模型训练服务、模型部署工具和端到端可视化验证工具,整合了感知开发的整个过程。并且 Apollo 8.0 在感知模块中还引入了另外 3 个新的深度学习模型。仿真服务通过在 Dreamview 中集成本地模拟器进行了升级,为 PnC 开发者提供了强大的调试工具。

[**Apollo 9.0:**](https://apollo.baidu.com/docs/apollo/9.0/md_docs_2_xE5_xAE_x89_xE8_xA3_x85_xE6_x8C_x87_xE5_x8D_x97_2_xE5_x8C_x85_xE7_xAE_xA1_xE7_x90_x86_410bb1324792103828eeacd86377c551.html)
Apollo 开源平台 9.0 进一步聚焦于提升开发和调试体验,致力于为自动驾驶开发者提供统一的开发工具平台以及易于扩展的 PnC 和感知软件框架接口。新版本重塑了基于包管理的 PnC 和感知扩展开发方法。它根据业务逻辑优化了组件拆分和配置管理,简化了调用过程。除了组件扩展方法外,还增加了更轻量级的插件扩展方法,简化了扩展流程。新版本引入了 Dreamview Plus,这是一款全新的开发者工具,它引入了便于多场景使用的模式、可自定义可视化面板布局以及提供更丰富开发资源的资源中心。此外,新版本升级了 LiDAR 和 Camera 检测模型以获得更好的效果,并开放了增量训练方法以便于扩展。同时,增加了对 4D 毫米波雷达的支持。最后,新版本适配了 ARM 架构,支持在 Orin 上编译和运行,为开发者提供了更多的设备选择。

[**Apollo 10.0:**](https://apollo.baidu.com/docs/apollo/latest/md_docs_2_xE5_x8F_x91_xE7_x89_x88_xE8_xAF_xB4_xE6_x98_x8E_2_xE6_x96_xB0_xE7_x89_x88_xE8_xAF_xB4_xE6_x98_x8E.html)
在 Apollo 8.0 中,引入了为用户学习场景量身定制的包管理概念,使用户能够更便捷高效地部署和使用 Apollo。在 Apollo 9.0 中,包管理工具更新至 2.0 版本,使用户能够更轻松地进行二次开发,并基于 Apollo 轻松构建自己的自动驾驶应用。在 Apollo 10.0 中,我们意识到自动驾驶不能仅仅停留在本地验证阶段。相反,它需要进行全面升级,并大规模应用于实际场景。在性能方面,优化了各个层级和模块的性能与稳定性,并提供了丰富的工具以提高优化效率。在成本方面,通过丰富硬件生态系统为用户提供了更多选择,从而降低了硬件成本。此外,通过升级操作系统、建立与其他框架的通信以及复用生态软件能力,降低了软件开发成本。在安全性方面,强化了功能安全策略和功能安全框架能力。

[**Apollo 11.0:**]()
Apollo 8.0 针对用户学习场景引入了包管理的概念,使用户能够更轻松快捷地部署和使用 Apollo。在 Apollo 9.0 中,我们进一步改进了包管理(升级至 2.0 版本),使用户能够更轻松地在 Apollo 之上进行开发并构建自己的自动驾驶应用。Apollo 10.0 专注于面向大规模场景应用的全面升级。在性能方面,它优化了各个层级和模块的性能与稳定性,并提供了丰富的工具以提高优化效率。Apollo 11.0 专注于在高价值场景中大规模部署**功能型自动驾驶车辆**,全面升级了感知、定位、规划和开发工具链,大幅降低了硬件和软件开发门槛,助力开发者高效构建端到端的自动驾驶操作系统。详情请参阅[发布说明](./RELEASE.md)。

## 架构
- **硬件/车辆概述**

- **硬件连接概述**

- **软件概述**

## 安装
- [硬件安装指南](docs/11_Hardware%20Integration%20and%20Calibration/%E8%BD%A6%E8%BE%86%E9%9B%86%E6%88%90/%E7%A1%AC%E4%BB%B6%E5%AE%89%E8%A3%85hardware%20installation/apollo_3_5_hardware_system_installation_guide.md)
- [软件安装指南](https://apollo.baidu.com/docs/apollo/9.0/md_docs_2_xE5_xAE_x89_xE8_xA3_x85_xE6_x8C_x87_xE5_x8D_x97_2_xE5_x8C_x85_xE7_xAE_xA1_xE7_x90_x86_410bb1324792103828eeacd86377c551.html) - **此步骤为必选项**
恭喜!您已经成功构建了不含硬件的 Apollo。如果您确实拥有针对特定版本的车辆和硬件配置,请选择与您的配置最相关的快速开始指南:
## 快速开始:
- [Apollo 10.0 快速开始指南](https://apollo.baidu.com/docs/apollo/10.x/md_docs_2_xE5_xAE_x89_xE8_xA3_x85_xE6_x8C_x87_xE5_x8D_x97_2_xE5_xAE_x89_xE8_xA3_x85_xE6_x8C_x87_xE5_x8D_x97.html)
- [Apollo 9.0 快速开始指南](https://apollo.baidu.com/docs/apollo/9.x/md_docs_2_xE5_xAE_x89_xE8_xA3_x85_xE6_x8C_x87_xE5_x8D_x97_2_xE5_x8C_x85_xE7_xAE_xA1_xE7_x90_x86_410bb1324792103828eeacd86377c551.html)
- [Apollo 8.0 快速开始指南](docs/02_Quick%20Start/apollo_8_0_quick_start.md)
- [Apollo 6.0 快速开始指南](docs/02_Quick%20Start/apollo_6_0_quick_start.md)
- [Apollo 5.5 快速开始指南](docs/02_Quick%20Start/apollo_5_5_quick_start.md)
- [Apollo 5.0 快速开始指南](docs/02_Quick%20Start/apollo_5_0_quick_start.md)
- [Apollo 3.5 快速开始指南](docs/02_Quick%20Start/apollo_3_5_quick_start.md)
- [Apollo 3.0 快速开始指南](docs/02_Quick%20Start/apollo_3_0_quick_start.md)
[Apollo 2.5 快速开始指南](docs/02_Quick%20Start/apollo_2_5_quick_start.md)
- [Apollo 2.0 快速开始指南](docs/02_Quick%20Start/apollo_2_0_quick_start.md)
- [Apollo 1.5 快速开始指南](docs/02_Quick%20Start/apollo_1_5_quick_start.md)
- [Apollo 1.0 快速开始指南](docs/02_Quick%20Start/apollo_1_0_quick_start.md)
## 文档
- [安装说明](docs/01_Installation%20Instructions/)
- [快速开始](docs/02_Quick%20Start/)
- [包管理](docs/03_Package%20Management/)
- [CyberRT](docs/04_CyberRT/)
- [定位](docs/05_Localization/)
- [感知](docs/06_Perception/)
- [预测](docs/07_Prediction/)
- [规划](docs/08_Planning/)
- [决策器](docs/09_Decider/)
- [控制](docs/10_Control/)
- [硬件集成与校准](docs/11_Hardware%20Integration%20and%20Calibration/)
- [地图采集](docs/12_Map%20acquisition/)
- [Apollo 工具](docs/13_Apollo%20Tool/)
- [其他](docs/14_Others/)
- [常见问题](docs/15_FAQS/README.md)
## 提问
欢迎您将问题和错误报告提交为 [GitHub Issues](https://github.com/ApolloAuto/apollo/issues)。
## 版权与许可
Apollo 基于 [Apache-2.0 许可证](https://github.com/ApolloAuto/apollo/blob/master/LICENSE) 提供。
## 免责声明
Apollo 开源平台仅提供模型、算法和流程的源代码,这些代码将在商业化部署和产品化的过程中与网络安全防御策略相集成。
有关 Apollo 的免责声明,请参阅 [Apollo 官方网站](https://developer.apollo.auto/docs/disclaimer.html)。
## 与我们联系
- [对我们的 GitHub 页面有建议?](https://github.com/ApolloAuto/apollo/issues)
- [Twitter](https://twitter.com/apolloplatform)
- [YouTube](https://www.youtube.com/channel/UC8wR_NX_NShUTSSqIaEUY9Q)
- [博客](https://www.medium.com/apollo-auto)
- [简讯](http://eepurl.com/c-mLSz)
- 对我们的交钥匙解决方案感兴趣或有意与我们合作,请发送邮件至:apollopartner@baidu.com
标签:C++, Vectored Exception Handling, 人工智能, 数据擦除, 机器人, 机器人操作系统, 用户模式Hook绕过, 自动驾驶, 自动驾驶平台, 请求拦截, 逆向工具