1. 项目概述
在自动驾驶技术快速发展的今天,Apollo开源平台已成为开发者学习和实践自动驾驶系统的重要工具。但对于刚接触这个领域的新手来说,直接在物理机上部署Apollo环境往往面临诸多挑战:硬件兼容性问题、系统依赖冲突、环境配置复杂等。而使用VMware虚拟机部署Apollo,则提供了一个相对隔离、可快速重置的沙盒环境,特别适合初学者进行实验和学习。
我在过去两年中帮助过数十位开发者完成Apollo环境搭建,发现90%的初期问题都源于环境配置不当。本文将分享一套经过实战检验的VMware虚拟机部署方案,涵盖从基础环境准备到数据包播放的全流程,特别针对新手容易踩坑的环节给出详细解决方案。
2. 环境准备与虚拟机配置
2.1 硬件与软件基础要求
Apollo平台对计算资源有较高需求,建议宿主机满足以下最低配置:
- CPU:Intel i7 4核以上(需支持VT-x虚拟化技术)
- 内存:16GB以上(分配给虚拟机至少8GB)
- 存储:SSD硬盘,剩余空间100GB以上
- 显卡:NVIDIA显卡(可选,如需GPU加速)
软件准备清单:
- VMware Workstation Pro 16+(或VMware Player免费版)
- Ubuntu 18.04 LTS镜像(官方推荐版本)
- Apollo 6.0源码包
注意:虽然Apollo最新版支持Ubuntu 20.04,但18.04的兼容性更成熟,社区支持更完善,特别适合新手选择。
2.2 虚拟机创建关键参数
- 新建虚拟机时选择"自定义(高级)"配置
- 硬件兼容性选择Workstation 16.x
- 操作系统选择Linux > Ubuntu 64位
- 处理器设置:
- 核心数:至少2个(建议4个)
- 勾选"虚拟化Intel VT-x/EPT"
- 内存分配:至少8GB(推荐12GB)
- 网络连接:NAT模式(默认)
- 磁盘配置:
- 创建新虚拟磁盘
- SCSI控制器类型
- 磁盘大小至少80GB
- 拆分成多个文件(便于迁移)
2.3 系统安装注意事项
安装Ubuntu时需特别注意:
- 分区方案:建议手动分区
- /boot:1GB
- swap:内存大小的1.5倍
- /:剩余全部空间
- 用户名避免使用中文和特殊字符
- 安装时勾选"安装OpenSSH server"方便远程操作
- 完成安装后立即执行系统更新:
bash复制sudo apt update && sudo apt upgrade -y
3. Apollo平台部署实战
3.1 基础环境配置
安装必要的依赖工具链:
bash复制sudo apt install -y git curl zip unzip build-essential cmake \
libboost-all-dev libprotobuf-dev protobuf-compiler \
libeigen3-dev libpoco-dev python-dev python-pip
配置Git全局设置:
bash复制git config --global user.name "YourName"
git config --global user.email "your@email.com"
git config --global core.editor vim
安装Docker引擎(Apollo依赖的核心组件):
bash复制curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
提示:执行完usermod命令后需要注销重新登录才能生效
3.2 Apollo源码编译
获取Apollo源码(以6.0版本为例):
bash复制git clone https://github.com/ApolloAuto/apollo.git
cd apollo
git checkout v6.0.0
启动Apollo开发容器:
bash复制bash docker/scripts/dev_start.sh
进入容器环境:
bash复制bash docker/scripts/dev_into.sh
在容器内执行编译:
bash复制./apollo.sh build
编译过程常见问题处理:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 内存不足导致编译中断 | 虚拟机内存分配不足 | 增加swap空间或调整编译参数 |
| protobuf版本冲突 | 系统已安装不同版本 | 在容器内使用指定版本 |
| 第三方依赖下载失败 | 网络连接问题 | 配置国内镜像源 |
3.3 硬件加速配置(可选)
如需启用GPU加速,需额外配置:
- 安装VMware Tools并启用3D加速
- 在虚拟机设置中勾选"加速3D图形"
- 安装NVIDIA驱动(需先安装kernel headers):
bash复制sudo apt install linux-headers-$(uname -r) sudo apt install nvidia-driver-450 - 验证驱动安装:
bash复制
nvidia-smi
4. 数据包播放与系统验证
4.1 获取演示数据包
Apollo官方提供了多个测试数据集:
bash复制# 下载示例数据包
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record
# 更全面的测试数据
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/sunnyvale_loop.tar.gz
tar zxvf sunnyvale_loop.tar.gz
4.2 播放数据包
启动Dreamview可视化界面:
bash复制bash scripts/bootstrap.sh
在新终端播放数据包:
bash复制cyber_recorder play -f demo_3.5.record --loop
访问Dreamview界面(默认地址:http://localhost:8888)即可看到车辆传感器数据和规划轨迹。
4.3 常见播放问题排查
-
时间同步问题:
bash复制# 在容器内执行时间同步 sudo apt install chrony sudo chronyd -q -
数据包版本不兼容:
- 确认Apollo版本与数据包版本匹配
- 使用
cyber_recorder info检查数据包信息
-
播放卡顿:
- 降低播放速度:
cyber_recorder play -f demo_3.5.record -r 0.5 - 关闭不必要的可视化选项
- 降低播放速度:
5. 避坑指南与优化建议
5.1 资源优化配置
-
调整虚拟机CPU核心分配:
- 4核物理CPU可分配2-3核给虚拟机
- 在VMware设置中启用"虚拟化CPU性能计数器"
-
内存管理技巧:
- 关闭不必要的系统服务
- 调整swappiness参数:
bash复制echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
-
磁盘性能优化:
- 定期执行磁盘整理
- 启用TRIM支持:
bash复制sudo fstrim -av
5.2 开发环境维护
-
创建定期快照:
- 在关键步骤完成后创建虚拟机快照
- 建议保留3-5个版本快照
-
容器数据持久化:
bash复制# 将重要数据挂载到宿主机目录 docker run -v /host/path:/container/path ... -
日常维护命令:
bash复制# 清理Docker无用资源 docker system prune -f # 查看容器资源占用 docker stats
5.3 进阶学习路径
-
修改规划算法:
- 路径:
modules/planning/ - 建议先从conf文件调整参数开始
- 路径:
-
添加新传感器:
- 参考
modules/drivers/下的现有驱动 - 需要修改proto协议定义
- 参考
-
自定义地图制作:
- 使用OpenDRIVE标准
- Apollo提供mapgen工具辅助转换
这套VMware部署方案经过多个实际项目验证,特别适合以下场景:
- 高校自动驾驶课程实验环境
- 个人开发者学习Apollo架构
- 算法工程师快速验证新idea
- 中小团队低成本搭建开发环境
在实际使用中,建议先完整走通本文流程,建立基础认知后再深入特定模块。遇到问题时,可以查看/apollo/data/log下的日志文件,大多数错误都有明确提示。Apollo社区也非常活跃,大部分常见问题都能在GitHub Issues找到解决方案。