Autoware开发环境搭建实操指南:一份Ansible脚本完成依赖安装与容器启动

发布时间:2026/9/14 19:31:37
Autoware开发环境搭建实操指南:一份Ansible脚本完成依赖安装与容器启动 Autoware开发环境搭建实操指南一份Ansible脚本完成依赖安装与容器启动【免费下载链接】autowareAutoware - the worlds leading open-source software project for autonomous driving项目地址: https://gitcode.com/GitHub_Trending/au/autoware完成本文操作后机器上会得到一套可验证的 Autoware 开发环境宿主机装好对应发行版的 ROS 2 依赖链Docker 能启动包含完整源码与构建产物的容器ROS 2 软件栈能通过ros2 doctor自检。它适用于感知节点开发、多传感器数据调试等场景前提是系统为 Ubuntu 22.04 或 24.04并已安装 Docker 与 Compose v2。原理速览整条链路是「仓库 → 镜像 → 容器 → 进程话题」四层搭建工作就是把这四层逐层对齐。ansible/ 下的 playbook 与 roles 负责在宿主机或镜像层安装 ROS 2 基础、RMW 实现、构建工具和 CUDA/TensorRT 依赖repositories/autoware.repos 锁定 31 个仓库的具体版本号用vcs import一次拉入src/按 core、universe、launcher、sensor_component 四层组织docker/的 base → core-devel → universe-devel 多级镜像把源码构建进/opt/autoware安装空间容器入口脚本再 source ROS 环境、打开环回组播并切换到aw用户。此后传感器与节点的数据在容器内经 CycloneDDS 发布订阅RViz2 是统一的观察窗口。 动手前检查环境翻车通常集中在系统版本不对、数据目录缺失、GPU 未透传三处开工前逐项过一遍下表。检查项要求确认方法系统版本Ubuntu 22.04 或 24.04lsb_release -rsDocker引擎与 Compose v2 可用docker compose versionGPU可选已装 nvidia-container-toolkitnvidia-smiX11可选DISPLAY 可用RViz2 需要echo $DISPLAY非空数据目录~/autoware_data下已有 maps、ml_modelsls ~/autoware_data磁盘源码加构建产物需数十 GB 余量df -h .核心配置搭建拆成四个模块每个模块都有可验证的成功状态前一个不通过不要进下一个。安装 Ansible collection 并拉取锁定版本源码playbook 中引用的角色都带autoware.dev_env.*命名空间所以 collection 必须先装到本地源码则不是单一仓库而是 31 个带版本号的仓库。执行git clone https://gitcode.com/GitHub_Trending/au/autoware cd autoware ansible-galaxy collection install -f -r ansible-galaxy-requirements.yaml vcs import src repositories/autoware.repos成功的样子ls src出现 core、universe、launcher、sensor_component 四个目录且本机 ansible collections 目录中能看到autoware.dev_env。用 install_dev_env 一键安装宿主依赖ansible/playbooks/install_dev_env.yaml 是面向宿主机的入口pre_task 会先校验系统版本22.04 映射 humble24.04 映射 jazzy不满足直接报错退出。执行ansible-playbook -i localhost ansible/playbooks/install_dev_env.yaml成功的样子开头打印Ubuntu 22.04 - ROS humble或 jazzy随后按 ros2 → ros2_dev_tools → rmw_implementation → build_tools → agnocast → dev_tools → qt5ct_setup 的顺序跑完最后接 acados、cuda 等 universe 角色全部无失败项。只补装某一部分时可用--tags ros2按角色过滤。构建或拉取开发镜像Compose 示例默认引用官方ghcr.io/autowarefoundation/autoware镜像dev-cpu 与 dev-dri 用universe-devel-jazzydev-nvidia 用universe-devel-cuda-jazzy直接拉取即可要改动源码版本才需要本地构建。构建时执行docker buildx bake -f docker/docker-bake.hcl universe-devel需要 CUDA 时把目标换成universe-devel-cuda默认发行版是 jazzy用ROS_DISTROhumble切换。成功的样子docker images出现含universe-devel的镜像且容器内安装空间位于/opt/autoware。启动容器并通过 ros2 doctor 自检这一步是 Autoware 开发环境的最终验收。入口脚本会自动把容器内aw用户重映射到宿主 UID/GID、开启环回组播避免挂载卷权限问题与 DDS 发现失败。执行xhost local:docker HOST_UID$(id -u) HOST_GID$(id -g) \ docker compose -f docker/examples/basic/dev-cpu.compose.yaml run --rm autoware进入容器后devel 镜像不会自动 source 安装空间先补上环境再做自检source /opt/autoware/setup.bash ros2 doctor成功的样子ros2 doctor显示 RMW 为 CycloneDDS 且无错误项需要同一容器内开多个终端时改用up -d加docker compose exec autoware /docker-entrypoint.sh bash。✅ 验证与排错整条链路是否跑通看三个判据宿主发行版在支持范围内、容器内ros2 doctor全绿、glxinfo -B | grep -E OpenGL (vendor|renderer)输出真实 GPU 而非 llvmpipe。三者都满足后再谈话题层调试。compose 启动即报bind source path does not exist现象启动几秒内直接退出与镜像本身无关。 排查入口ls ~/autoware_data确认 maps、ml_models 是否存在——Compose 不会自动创建缺失的 bind 源目录。 处理先跑install_image_deps.yaml的 artifacts 角色或手动建目录再启动。glxinfo 输出 llvmpipe现象RViz2 点云显示明显卡顿说明走了软件渲染。 排查入口当前用的是 dev-cpu 的 compose它强制 llvmpipe。 处理NVIDIA 主机改用docker/examples/basic/dev-nvidia.compose.yaml并确认 container toolkit 已配置。跨机器发现不了其他节点话题现象容器内ros2 topic list只有自己启动的节点。 排查入口默认 CycloneDDS 配置只绑定 lo 环回接口见 docker/files/cyclonedds.xml天然只覆盖单机。 处理把自定义 cyclonedds.xml 挂载到容器内/home/aw/cyclonedds.xml覆盖默认配置。进阶方向用 USE_LOCKFILE 让构建可复现默认构建基于浮动的ros:distro-ros-base标签与最新 apt 源同一命令不同天执行结果可能不同。bake 命令前加USE_LOCKFILEtrue后构建会做三件事基础镜像固定到docker/docker-bake.hcl的BASE_IMAGE_DIGESTS摘要、apt 包固定到ansible/vars/locked-versions-distro-arch.yaml记录的版本、ROS 指向同日期快照源收尾的 verify 阶段发现任何包漂移就判构建失败。目前仅 humble 与 jazzy 具备完整 lockfileCUDA 目标继承同一冻结闭包NVIDIA 部分按nvidia_pins逐包固定。这个机制适合多人协作或需要审计构建结果的场合。到这里环境层的搭建结束在「容器能起、ros2 doctor 通过」这个可复述的状态后续传感器话题在 ROS 2 图内流转RViz2 成为统一观察窗口。镜像标签表、锁文件格式与各 compose 参数说明见 docker/README.md。【免费下载链接】autowareAutoware - the worlds leading open-source software project for autonomous driving项目地址: https://gitcode.com/GitHub_Trending/au/autoware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考