共计 1424 个字符,预计需要花费 4 分钟才能阅读完成。
背景介绍
自动驾驶系统的部署与传统软件有显著差异,主要体现在:

- 实时性要求:感知 - 决策 - 控制的闭环延迟需控制在 100ms 内
- 硬件异构性:需同时处理 GPU 计算(深度学习推理)和传感器数据(激光雷达 / 摄像头)
- 安全冗余:关键模块需要 fail-safe 机制和降级策略
环境准备
硬件基础配置
- 计算单元:NVIDIA Xavier/T4 以上(至少 15TOPS 算力)
- 传感器接口:
- 激光雷达:RoboSense/ 禾赛 16 线以上
- 摄像头:200 万像素 @30fps
- GNSS/IMU:NovAtel PwrPak7
软件依赖清单
- Ubuntu 18.04/20.04 LTS
- Docker 19.03+
- NVIDIA Container Toolkit
- Apollo 内核(5.0+ 版本推荐)
部署方案对比
源码编译 vs 容器化
- 源码部署:
- 优势:可深度定制模块
-
劣势:依赖环境复杂(需手动安装 ROS/Boost 等)
-
容器部署:
- 优势:环境隔离,一键启动
- 劣势:镜像体积较大(约 15GB)
单机 vs 分布式
- 单机模式:
- 适用场景:开发调试
-
资源需求:32GB 内存 + 8 核 CPU
-
分布式部署:
- 感知 / 规划 / 控制分离部署
- 需配置 DDS 通信(如 Cyber RT)
实战示例
Docker-compose 配置
version: '3'
services:
dreamview:
image: apolloauto/apollo:dev-x86_64-5.0
devices:
- /dev/nvidia0:/dev/nvidia0
volumes:
- ./data:/apollo/data
network_mode: host
感知模块调优
# 调整目标检测模型 batch_size
cyber_launch start modules/perception/production/launch/perception.launch \
--param=/apollo/modules/perception/production/conf/perception_camera.conf \
--batch_size=4
性能优化
资源监控方案
- 使用
nvtop监控 GPU 利用率 htop观察 CPU 负载- Apollo 自带的
cyber_monitor查看消息延迟
延迟优化技巧
- 启用 CUDA Graph(减少 kernel 启动开销)
- 调整 ROS 的 QoS 策略(可靠传输→尽力传输)
- 硬件时间同步(PTP 协议精度需 <1μs)
避坑指南
常见编译错误
-
Eigen3 版本冲突:
sudo apt remove libeigen3-dev git clone https://gitlab.com/libeigen/eigen.git -
CUDA 兼容问题:
检查/usr/local/cuda/version.txt与驱动版本匹配
硬件兼容性
- 激光雷达数据丢包:检查
ifconfig查看网络带宽 - IMU 数据漂移:配置
/apollo/modules/calibration/params/imu_params.yaml
安全考量
数据加密
// cyber/proto/transport_conf.proto
channel_conf {
encrypt_mode: AES256_GCM
key_size: 32
}
权限管理
- 使用
sudoers限制 docker 命令权限 - Apollo 模块间通信启用 SELinux
思考延伸
在边缘计算场景下,如何平衡:
– 本地计算的实时性
– 云端协同的模型更新频率
– 网络带宽的限制条件?
(测试数据:T4 显卡在 batch_size= 4 时,YOLOv5 检测延迟为 23ms±2ms)
正文完
