共计 2393 个字符,预计需要花费 6 分钟才能阅读完成。
Apollo 平台概览
Apollo 是百度开源的自动驾驶平台,采用模块化架构设计,覆盖感知、预测、规划、控制全流程。其核心优势在于开源社区支持和完善的仿真工具链,适合快速验证算法。平台基于 ROS/CYBER RT 实现高实时性通信,并提供 Docker 化开发环境降低配置复杂度。

环境准备(避坑指南)
- 硬件要求 :
- 推荐 Ubuntu 18.04/20.04 系统
- 至少 4 核 CPU/16GB 内存 /50GB 空闲磁盘
-
NVIDIA 显卡(CUDA 11.1+)
-
Docker 安装关键步骤 :
# 卸载旧版本(重要!)sudo apt-get remove docker docker-engine docker.io containerd runc # 安装工具包 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release # 添加 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置稳定版仓库 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
常见问题解决 :
- GPU 支持问题:需先安装 nvidia-container-toolkit
- 时区设置:Docker 镜像默认 UTC 时间,建议挂载 /etc/localtime
- 共享内存不足:启动时添加 –shm-size=2g 参数
代码结构解析
-
核心目录 :
modules/ ├── perception # 激光雷达 / 摄像头数据处理 ├── prediction # 障碍物运动轨迹预测 ├── planning # 路径规划算法 └── control # 车辆控制指令生成 -
数据流示意图 (PlantUML):
@startuml component "传感器" as sensor component "感知模块" as perception component "预测模块" as prediction component "规划模块" as planning component "控制模块" as control sensor -> perception : 原始数据 perception -> prediction : 障碍物信息 prediction -> planning : 运动预测 planning -> control : 轨迹指令 @enduml
第一个感知模块实战
-
创建 Python 检测器 (继承基类):
from modules.perception.proto.perception_obstacle_pb2 import PerceptionObstacles from modules.perception.base_obstacle_detector import BaseObstacleDetector class SimpleDetector(BaseObstacleDetector): def __init__(self, name='simple_detector'): super().__init__(name=name) def Process(self, sensor_data): obstacles = PerceptionObstacles() # 示例:添加虚拟障碍物 obs = obstacles.perception_obstacle.add() obs.id = 1 obs.position.x = 10.0 obs.position.y = 2.0 obs.type = PerceptionObstacles.VEHICLE return obstacles -
消息发布配置 (DAG 文件):
module_config { name: "simple_detector" type: "SimpleDetector" mode: "Async" readers: [{ channel: "/apollo/sensor/camera/front_6mm"} ] writers: [{ channel: "/apollo/perception/obstacles"} ] }
性能优化建议
- IPC 优化 :
- 使用共享内存(ShmQueue)替代 Socket 通信
- 对高频消息(如激光雷达)启用 ZeroCopy
-
设置合理的消息队列长度(建议 5 -10)
-
CYBER RT 定时器 :
auto cb = [this]() {// 处理逻辑}; timer_ = cyber::CreateTimer(100, cb, false); // 100ms 周期
安全规范
-
数据校验 :
def validate_sensor_data(data): if not data.HasField('header'): raise ValueError("Missing message header") if abs(data.yaw_rate) > 1.0: # 异常值过滤 return False return True -
失效处理 :
- 心跳检测机制(Watchdog)
- 默认安全指令发布(如紧急制动)
- 模块状态监控(/apollo/monitor)
进阶方向
- 集成新传感器(如 4D 毫米波雷达)
- 开发自定义规划算法
- 使用 Dreamview 进行可视化调试
资源推荐
- 官方文档:https://github.com/ApolloAuto/apollo
- 开发者社区:https://community.apollo.auto
- 仿真工具链:LGSVL Simulator
正文完
