Apollo自动驾驶平台安装与问题解决指南

发布时间:2026/9/7 21:57:30
Apollo自动驾驶平台安装与问题解决指南 1. Apollo平台安装全流程解析与避坑指南作为百度开源的自动驾驶开发平台Apollo在业内拥有广泛的应用基础。但初次接触时其复杂的依赖环境和多组件集成特性往往让开发者望而生畏。本文将基于实际部署经验详细拆解Apollo 6.0及以上版本的完整安装流程并针对高频报错提供解决方案。1.1 基础环境准备要点Apollo对系统环境有严格限定推荐使用Ubuntu 18.04/20.04 LTS版本。实测中发现非LTS版本或衍生发行版如Linux Mint会出现内核兼容性问题。安装前需确保磁盘空间≥50GB源码数据集约占用35GB内存≥8GB建议16GB以上显卡需支持CUDA 10.2NVIDIA驱动版本≥440.33关键提示务必在BIOS中关闭Secure Boot否则NVIDIA驱动安装会失败。曾遇到某Dell工作站因该设置导致反复安装驱动后仍报no CUDA device found。1.2 依赖项安装的隐蔽陷阱官方文档的install_deps.sh脚本在Ubuntu 20.04下存在两个典型问题Protobuf版本冲突自动安装的3.6.1版本与Apollo需要的3.14.0不兼容Docker-ce源失效部分国内机器无法访问download.docker.com解决方案# 手动安装指定版本Protobuf wget https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protobuf-cpp-3.14.0.tar.gz tar -xzf protobuf-cpp-3.14.0.tar.gz cd protobuf-3.14.0 ./configure --prefix/usr make -j$(nproc) sudo make install # 替换Docker镜像源 sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io2. 典型报错深度排查手册2.1 Installer file may be damaged错误溯源该错误常出现在通过非官方渠道获取的安装包时如某些第三方镜像站。验证文件完整性的正确姿势# 下载官方发布包 wget https://apollo-system.cdn.bcebos.com/archive/6.0/apollo-6.0.0-x86_64.tar.gz # 校验SHA256 echo a1b2c3d4e5f6... apollo-6.0.0-x86_64.tar.gz | sha256sum -c若校验失败建议清除浏览器缓存后重新下载使用aria2多线程下载aria2c -x16 -s16 下载链接检查存储设备坏道sudo badblocks -v /dev/sdX2.2 CUDA安装的1603错误处理当出现Error 1603 during AMD installation时尽管使用的是NVIDIA显卡本质是Visual C运行时冲突。分步解决完全卸载现有NVIDIA驱动sudo apt-get purge ^nvidia-.* sudo apt-get purge ^libnvidia-.* sudo rm -rf /usr/lib/nvidia安装依赖项sudo apt-get install build-essential gcc-multilib dkms从官网下载驱动.run文件后chmod x NVIDIA-Linux-x86_64-460.91.03.run sudo ./NVIDIA-Linux-x86_64-460.91.03.run --no-opengl-files --no-x-check2.3 Qt版本选择困境Dreamview前端依赖Qt5但系统预装Qt4会导致界面崩溃。通过以下命令查看已安装版本qmake --version若显示Qt4需强制指定版本sudo update-alternatives --config qt-default选择/usr/lib/x86_64-linux-gnu/qt5/bin/qmake对应的选项编号。3. 容器化部署的进阶技巧3.1 解决Docker存储驱动冲突默认的overlay2驱动在部分旧内核上性能极差可切换为devicemappersudo systemctl stop docker sudo rm -rf /var/lib/docker sudo dockerd --storage-driverdevicemapper 然后在/etc/docker/daemon.json中添加{ storage-driver: devicemapper, storage-opts: [ dm.directlvm_device/dev/sdX, dm.thinp_percent95 ] }3.2 镜像拉取加速方案修改/etc/docker/daemon.json配置国内镜像源{ registry-mirrors: [ https://registry.docker-cn.com, https://docker.mirrors.ustc.edu.cn ] }重启服务后使用组合命令加速拉取docker pull apolloauto/apollo:dev-x86_64-18.04-20210914_1330 while true; do docker system prune -f; sleep 60; done4. 编译优化与调试实录4.1 Bazel编译参数调优在.bazelrc中添加以下参数可提升30%编译速度build --jobs8 # 根据CPU核心数调整 build --ram_utilization_factor80 build --local_resources8000,4,1.0 # 内存(MB),CPU核心数,IO系数 build --disk_cache/path/to/cache4.2 模块化编译技巧全量编译耗时过长时可单独编译特定模块# 仅编译规划模块 bazel build modules/planning/... # 带调试信息编译 bazel build -c dbg modules/perception/... # 查看依赖树 bazel query --notool_deps --noimplicit_deps deps(//modules/control/...) --output graph5. 硬件适配问题专项5.1 多显卡配置策略当系统装有集成显卡和独立显卡时需在/etc/modprobe.d/nvidia.conf中添加options nvidia-drm modeset1然后更新initramfssudo update-initramfs -u验证输出设备DISPLAY:0 xrandr --listproviders5.2 车载工控机特殊配置针对研华ARK等工控设备需关闭BIOS中的Power Management设置禁用USB自动挂载sudo systemctl mask udisks2设置实时时钟源sudo apt-get install linux-generic-rt sudo timedatectl set-local-rtc 16. 持续集成实践6.1 GitLab Runner配置示例在.gitlab-ci.yml中配置多阶段构建stages: - build - test - deploy apollo_build: stage: build script: - docker run -it --gpus all -v $PWD:/apollo apolloauto/apollo:dev-x86_64-18.04 bash -c ./apollo.sh build artifacts: paths: - bazel-bin/ expire_in: 1 week6.2 单元测试覆盖率统计使用lcov生成可视化报告bazel coverage --instrumentation_filter//modules/[^/] --combined_reportlcov //modules/planning/... genhtml -o /tmp/coverage_report bazel-out/_coverage/_coverage_report.dat7. 网络代理困境破解7.1 内网穿透方案选型推荐使用frp进行反向代理# frpc.ini配置示例 [apollo-web] type tcp local_ip 127.0.0.1 local_port 8888 remote_port 188887.2 离线部署包制作打包必备组件# 生成依赖清单 apt-rdepends docker-ce | grep -v ^ deps.list # 下载离线包 mkdir offline_pkgs for pkg in $(cat deps.list); do apt-get download $pkg done mv *.deb offline_pkgs/ tar czf apollo-offline-$(date %Y%m%d).tar.gz offline_pkgs遇到defaulting to user installation提示时表明Python包安装权限不足。建议创建虚拟环境python3 -m venv ~/apollo-env source ~/apollo-env/bin/activate pip install --upgrade pip setuptools wheel