共计 1774 个字符,预计需要花费 5 分钟才能阅读完成。
背景与痛点
自动驾驶系统的部署往往面临硬件兼容性和依赖管理的双重挑战。以 Apollo 平台为例,开发者常遇到以下问题:

- 硬件兼容性 :不同型号的工控机、GPU 和传感器(如激光雷达、摄像头)需要特定驱动支持
- 依赖冲突 :ROS、CUDA 等基础组件版本不匹配导致编译失败
- 资源竞争 :多个模块同时运行时 CPU/ 内存占用过高
- 实时性要求 :CAN 总线通信延迟可能影响控制指令的时效性
环境准备
系统要求
- Ubuntu 18.04 LTS(官方推荐版本)
- 至少 16GB 内存 (建议 32GB 以上运行仿真模块)
- NVIDIA 显卡 (需支持 CUDA 10.2)
基础环境配置
# 安装 Docker CE
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 添加用户到 docker 组
sudo usermod -aG docker $USER
# 安装 NVIDIA 容器工具包
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-container-toolkit
部署流程
1. 获取 Apollo 源码
git clone https://github.com/ApolloAuto/apollo.git
cd apollo
bash docker/scripts/dev_start.sh
2. 进入开发容器
bash docker/scripts/dev_into.sh
3. 编译核心模块
# 全量编译(首次需要约 2 小时)./apollo.sh build
# 单独编译规划模块示例
./apollo.sh build planning
代码示例
传感器数据验证脚本
#!/usr/bin/env python3
import rospy
from sensor_msgs.msg import PointCloud2
def callback(data):
rospy.loginfo("Received pointcloud with %d points", data.width)
if __name__ == "__main__":
rospy.init_node('sensor_checker')
rospy.Subscriber("/apollo/sensor/velodyne64/PointCloud2", PointCloud2, callback)
rospy.spin()
性能优化
资源分配建议
- CPU 隔离 :通过 cgroups 为关键进程保留 CPU 核心
cgcreate -g cpu:/apollo echo "950000" > /sys/fs/cgroup/cpu/apollo/cpu.rt_runtime_us - 内存管理 :限制非关键模块内存使用
docker update --memory 4G --memory-swap 8G apollo_dev
避坑指南
常见问题解决方案
- GPS 信号丢失
- 检查 USB 串口权限:
sudo chmod 666 /dev/ttyACM0 -
验证驱动兼容性:
lsmod | grep ublox -
Dreamview 无法启动
- 确认端口未被占用:
netstat -tulnp | grep 8888 -
检查浏览器 WebGL 支持:
chrome://gpu/ -
CAN 通信超时
- 调整 SocketCAN 缓冲区大小:
sudo ip link set can0 txqueuelen 1000 sudo ifconfig can0 mtu 72
延伸思考
- 如何设计多传感器时间同步方案来提升融合精度?
- 在资源受限的嵌入式设备上可以如何精简 Apollo 模块?
- 自动驾驶系统的实时性指标应该如何量化评估?
通过本文的实践指南,开发者应能完成 Apollo 平台的基础部署。建议在实际车辆集成时,特别注意硬件接口的电气特性和机械兼容性,这些往往是现场调试中最耗时的环节。
正文完
