共计 2052 个字符,预计需要花费 6 分钟才能阅读完成。
背景痛点:为什么环境搭建是第一个拦路虎
刚接触 Apollo 仿真赛时,我最头疼的就是环境配置。不同版本的 ROS(Robot Operating System)之间兼容性差异大,比如 Apollo 7.0 要求 ROS Melodic(对应 Ubuntu 18.04),而新版本可能依赖 Noetic(Ubuntu 20.04)。更麻烦的是 GPU 驱动和 CUDA 版本——我曾经因为 NVIDIA 驱动版本低导致 Docker 容器无法调用显卡,调试了整整两天。

- 典型问题场景:
- 在 Ubuntu 20.04 上强行安装 ROS Melodic 导致包依赖冲突
- 本地 CUDA 11.7 与 Apollo 镜像要求的 CUDA 11.1 不兼容
- Docker 容器内无法访问宿主机 GPU(报错
Could not initialize OpenGL)
工具链对比:三大仿真平台怎么选
1. Apollo 官方仿真器
- 特点:与 Apollo 代码深度集成,提供完整感知 - 决策 - 控制闭环验证
- 优点 :场景文件格式统一,支持
Dreamview可视化调试 - 缺点:对硬件要求高(建议至少 RTX 3060 显卡)
2. LGSVL(LG 模拟器)
- 特点:基于 Unity 引擎,支持激光雷达点云仿真
- 优点:提供预构建的 Apollo 5.0/6.0 兼容场景
- 缺点:Python API 响应延迟较明显(实测约 200ms)
3. CARLA
- 特点:学术研究首选,支持天气动态变化
- 优点:社区生态丰富,有大量开源 agent 示例
- 缺点 :与 Apollo 的接口需要自行适配(需修改
bridge模块)
新手建议:首次参赛优先使用 Apollo 官方仿真器,避免兼容性问题
分步实施:从零搭建开发环境
Ubuntu 基础环境(以 18.04 为例)
# 关键软件包(注意版本锁定)sudo apt-get install -y \
ros-melodic-desktop-full=1.4.1-0* \
nvidia-driver-470 \
cuda-11-1 \
docker-ce=5:19.03.15~3-0~ubuntu-bionic
Docker 快速部署方案
# 拉取预装 Apollo 的镜像(大小约 4.7GB)docker pull apolloauto/apollo:dev-x86_64-18.04-20230315_1400
# 启动容器并挂载 GPU
sudo docker run -it \
--runtime=nvidia \
--privileged \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
apolloauto/apollo:dev-x86_64-18.04-20230315_1400
避坑指南:血泪经验总结
CUDA 版本冲突检测
# 在容器内运行
nvcc --version # 应显示 11.1
nvidia-smi # 顶部 CUDA Version 应与宿主机一致
# 若不一致,需要调整 docker run 参数:--gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,graphics
ROS 通信权限问题
如果容器内无法接收 /apollo/sensor/camera/front_6mm/image 等 topic,尝试:
# 在宿主机执行
xhost +local:docker # 允许 Docker 访问 X11
# 在容器内检查
rostopic list | grep sensor # 应看到传感器话题
验证环节:快速检查环境有效性
基础诊断命令
# 启动 Dreamview 后验证模块加载
./scripts/bootstrap.sh start
# 在另一个终端查看进程
ps aux | grep monitor
Python API 示例(订阅激光雷达数据)
import rospy
from sensor_msgs.msg import PointCloud2
def callback(data):
print("收到点云数据,数量:", data.width)
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("/apollo/sensor/lidar128/compensator/PointCloud2",
PointCloud2, callback)
rospy.spin()
延伸思考:修改场景观察控制响应
尝试编辑/apollo/modules/map/data/sunnyvale_loop/base_map.xml:
1. 调整 <stop_sign> 的位置坐标
2. 在仿真器中观察车辆是否准确停车
3. 通过 rostopic echo /apollo/control 查看控制指令变化
写在最后
搭建环境的过程确实会遇到各种 ” 玄学 ” 问题,我的经验是:
1. 严格按照官方文档的版本要求
2. 所有安装步骤记录在脚本中方便重现
3. 善用 Docker 隔离开发环境
当第一次看到仿真器里的车辆按规划路径自动行驶时,之前的所有折腾都值得了。接下来可以尝试用 cyber_recorder 回放数据,或者修改 routing 模块的决策逻辑——自动驾驶的世界就在你眼前展开。
正文完
