共计 2048 个字符,预计需要花费 6 分钟才能阅读完成。
1. Apollo 框架概述
Apollo 是百度开源的自动驾驶开发框架,自 2017 年发布以来已成为全球最活跃的自动驾驶开源项目之一。它的架构设计遵循了模块化和高内聚的原则,主要特点包括:

- 分层架构:分为硬件层、核心软件层和云端服务层
- 模块化设计:各功能模块(如感知、预测)可独立开发和测试
- 多语言支持:核心模块使用 C ++,工具链支持 Python
- 仿真支持:内置高精地图和仿真环境
2. 环境搭建
2.1 系统要求
推荐使用 Ubuntu 18.04/20.04 LTS 版本,最低硬件配置:
- CPU:4 核以上
- 内存:8GB 以上
- 磁盘:50GB 可用空间
2.2 安装步骤
-
安装 Docker CE
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io -
安装 NVIDIA 容器工具(GPU 版需要)
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 update && sudo apt-get install -y nvidia-docker2 -
获取 Apollo 源码
git clone https://github.com/ApolloAuto/apollo.git cd apollo -
启动开发容器
bash docker/scripts/dev_start.sh
3. 核心模块解析
Apollo 采用典型的分层架构,主要模块包括:
- 感知模块:处理传感器数据(激光雷达、摄像头等)
- 预测模块:预测周围物体的运动轨迹
- 规划模块:生成安全舒适的行驶路径
- 控制模块:将路径转化为车辆控制指令
各模块通过 Cyber RT(Apollo 自研的通信框架)进行数据交互,典型数据流:
感知 → 预测 → 规划 → 控制
4. 实战示例:红绿灯检测 Demo
4.1 启动 Dreamview
bash scripts/bootstrap.sh
4.2 运行 Python 示例
创建modules/traffic_light/demo.py:
# 导入 Apollo Python API
from cyber.python.cyber_py3 import cyber
from modules.perception.proto.traffic_light_detection_pb2 import TrafficLightDetection
def callback(data):
print(f"检测到交通灯状态: {data.traffic_light[0].color}")
if __name__ == '__main__':
cyber.init()
node = cyber.Node("traffic_light_listener")
node.create_reader("/apollo/perception/traffic_light",
TrafficLightDetection, callback)
cyber.spin()
4.3 配置文件
在 modules/traffic_light/conf/traffic_light.conf 中添加:
camera_name: front_6mm
traffic_light_model_path: ./data/models/traffic_light
5. 常见问题
5.1 Docker 权限问题
错误现象:Got permission denied while trying to connect to the Docker daemon
解决方案:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
5.2 NVIDIA 驱动不兼容
错误现象:could not select device driver...
解决方案:
sudo apt-get install nvidia-driver-470
5.3 端口冲突
错误现象:Dreamview 无法启动
解决方案:
lsof -i :8888
kill -9 < 占用进程的 PID>
6. 进阶学习
推荐学习路径:
- 官方文档:https://github.com/ApolloAuto/apollo
- 在线课程:Udacity 自动驾驶工程师纳米学位
- 实践项目:从 Apollo 的
modules/demo开始修改 - 社区参与:GitHub Issue 讨论和贡献代码
结语
通过本文的实践,你应该已经完成了 Apollo 开发环境的搭建,并理解了基本架构。建议下一步尝试修改 Demo 代码,比如改变车辆的速度参数或规划路径。自动驾驶开发需要持续的实践,遇到问题时多查阅官方文档和社区讨论。
正文完
