Apollo自动驾驶仿真赛新手入门:软件下载与环境搭建全指南

1次阅读
没有评论

共计 2052 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

背景痛点:为什么环境搭建是第一个拦路虎

刚接触 Apollo 仿真赛时,我最头疼的就是环境配置。不同版本的 ROS(Robot Operating System)之间兼容性差异大,比如 Apollo 7.0 要求 ROS Melodic(对应 Ubuntu 18.04),而新版本可能依赖 Noetic(Ubuntu 20.04)。更麻烦的是 GPU 驱动和 CUDA 版本——我曾经因为 NVIDIA 驱动版本低导致 Docker 容器无法调用显卡,调试了整整两天。

Apollo 自动驾驶仿真赛新手入门:软件下载与环境搭建全指南

  • 典型问题场景
  • 在 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 模块的决策逻辑——自动驾驶的世界就在你眼前展开。

正文完
 0
评论(没有评论)