新闻详情

新闻详情

首页 / 资讯中心 / 详情

Autoware 与 AWSIM 端到端仿真:基于 Docker Compose 的 e2e_simulator 容器化桥接指南

发布时间:2026/10/2 15:17:40来源:尧图网络
Autoware 与 AWSIM 端到端仿真:基于 Docker Compose 的 e2e_simulator 容器化桥接指南
自动驾驶【免费下载链接】autowareAutoware - the worlds leading open-source software project for autonomous driving项目地址https://gitcode.com/GitHub_Trending/au/autoware点击查看免费下载导读本文围绕 docker/examples/demos/awsim/README.md 展开讲解如何在 Docker 容器中运行 Autoware 侧程序、通过 ROS 2 图与宿主机或局域网内其他主机上运行的 AWSIM Unity 仿真器建立端到端End-to-EndE2E仿真链路。读完本文你将掌握 AWSIM 演示场景的完整前置条件、一键启动命令、docker-compose.yaml中每个关键配置项的作用以及如何修改车辆模型、传感器套件和地图路径来自定义仿真。AWSIM 演示场景是什么AWSIM 是 TIER IV 出品的 Unity 自动驾驶仿真器负责渲染高保真场景并提供传感器仿真数据本仓库的 awsim 演示则是Autoware 一侧的容器化桥接端。其核心职责是以network_mode: host方式共享宿主机网络栈使容器内 Autoware 的 DDS 流量能够直接与宿主机上的 AWSIM 通信启动autoware_launch包中的e2e_simulator.launch.xml装载车辆模型、传感器套件与地图数据完成端到端仿真链路。需要注意AWSIM 本身并不运行在这个容器里——它运行在宿主机或局域网内的其他机器上容器只是 Autoware 侧的桥接端。前置条件Prerequisites根据原文档运行该演示需要满足以下条件NVIDIA GPU 与 NVIDIA Container Toolkit仿真涉及 GPU 渲染与 CUDA 推理容器必须以 NVIDIA runtime 启动Shinjuku 地图数据解压到宿主机~/autoware_data/maps/Shinjuku-Map/map感知模型数据存放在宿主机~/autoware_data/ml_models目录下AWSIM 已在宿主机运行并且已经接入 ROS 2 图即能被 Autoware 节点发现Docker Compose v2用于按docker-compose.yaml编排容器。其中第 2、3 项的数据目录正是后续volumes:挂载的宿主来源第 4 项要求 AWSIM 端与容器端使用一致的 RMW 实现与 DDS 配置否则即使网络互通也无法互相发现。一键启动Run 命令详解xhost local:docker cd docker/examples/demos/awsim HOST_UID$(id -u) HOST_GID$(id -g) docker compose run --rm awsimxhost local:docker允许容器访问宿主机的 X11 显示服务供 RViz 等 GUI 界面使用HOST_UID$(id -u) HOST_GID$(id -g)将宿主当前用户的 UID/GID 注入容器docker-entrypoint.sh 会据此用usermod -u/groupmod -g把容器内aw用户重新映射为宿主 UID/GID避免挂载卷上的文件出现权限问题docker compose run --rm awsim前台运行awsim服务--rm保证容器退出即被删除不会堆积残留容器。几个实用细节如果宿主机 UID/GID 恰好是1000可以省略环境变量前缀因为 docker-compose.yaml 中HOST_UID/HOST_GID默认值为1000${HOST_UID:-1000}当启动的 launch 进程退出后容器并不会立刻销毁——因为command末尾执行了exec bash会先进入一个 bash shell方便你检查现场状态话题、日志、节点列表等按CtrlD退出 bash 后容器才随之退出并被--rm清理。docker-compose.yaml 逐项拆解完整文件位于 docker/examples/demos/awsim/docker-compose.yaml核心配置如下services: awsim: image: ghcr.io/autowarefoundation/autoware:universe-cuda-jazzy privileged: true runtime: nvidia network_mode: host stdin_open: true tty: true environment: - DISPLAY${DISPLAY} - NVIDIA_DRIVER_CAPABILITIESall - NVIDIA_VISIBLE_DEVICESall - HOST_UID${HOST_UID:-1000} - HOST_GID${HOST_GID:-1000} - QT_X11_NO_MITSHM1 volumes: - /tmp/.X11-unix:/tmp/.X11-unix:rw - type: bind source: ${HOME}/autoware_data/maps target: /home/aw/autoware_data/maps bind: create_host_path: false - type: bind source: ${HOME}/autoware_data/ml_models target: /home/aw/autoware_data/ml_models bind: create_host_path: false deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] command: - bash - -c - | ros2 launch autoware_launch e2e_simulator.launch.xml \ vehicle_model:sample_vehicle \ sensor_model:awsim_sensor_kit \ map_path:/home/aw/autoware_data/maps/Shinjuku-Map/map exec bash各配置项的作用如下表配置项作用与说明image: ...universe-cuda-jazzy运行时镜像包含预编译的 Autoware Universe 与 CUDA 运行时构建链路见 docker-bake.hcl 的universe-cudatarget 与 universe-cuda.Dockerfile适用于 Jazzy 发行版 GPU 环境privileged: true赋予容器宿主机级权限让入口脚本可以执行 DDS 所需的系统级网络调优见下文runtime: nvidia使用 NVIDIA Container Runtime配合NVIDIA_DRIVER_CAPABILITIESall使 CUDA/graphics/video 能力全部可用network_mode: host必需的共享宿主机网络栈使 AWSIM 的 DDS 流量能到达容器。原文档明确指出移除它会直接破坏连接stdin_open/tty保持交互式终端配合exec bash实现退出 launch 后进入 shell 检查状态DISPLAY${DISPLAY}透传宿主 DISPLAY供 RViz 等 GUI 使用HOST_UID/HOST_GID交给入口脚本做用户重映射避免挂载卷权限问题QT_X11_NO_MITSHM1禁用 Qt 的 MIT-SHM 共享内存跨容器边界不可用防止 RViz 崩溃volumes: /tmp/.X11-unix挂载 X11 socket实现 GUI 转发bind create_host_path: false关键细节若挂载源目录不存在Compose 默认会以 root 创建该目录导致aw用户无权写入置为false则改为直接报错保护数据目录不被误创建deploy.resources.reservations.devices声明 GPU 设备预留driver: nvidia、count: all、capabilities: [gpu]是 Compose 语法下请求 GPU 的推荐方式入口脚本与运行时行为容器镜像的 entrypoint 位于 docker/docker-entrypoint.sh在用户命令之前执行了如下工作用户重映射读取HOST_UID/HOST_GID并修改aw用户的 UID/GIDDDS 网络调优开启 loopback 接口的 multicastip link set lo multicast on并设置net.core.rmem_max、net.ipv4.ipfrag_time、net.ipv4.ipfrag_high_thresh等系统参数——这些操作需要--privileged或NET_ADMIN能力失败时仅打印警告而不会阻塞启动环境 sourcing依次加载/opt/ros/${ROS_DISTRO}/setup.bash且当AUTOWARE_RUNTIME1时加载/opt/autoware/setup.bash运行时镜像在 universe-cuda.Dockerfile 中通过ENV AUTOWARE_RUNTIME1设置降权执行最终通过gosu ${USERNAME} $以aw用户身份运行command中的 launch 命令。Launch 命令参考与自定义服务实际执行的启动命令为ros2 launch autoware_launch e2e_simulator.launch.xml \ vehicle_model:sample_vehicle \ sensor_model:awsim_sensor_kit \ map_path:/home/aw/autoware_data/maps/Shinjuku-Map/mapvehicle_model车辆模型默认sample_vehicle可按需替换为自己的车辆配置sensor_model传感器套件默认awsim_sensor_kit这是为 AWSIM 输出的传感器数据定制的套件map_path地图路径注意这里是指容器内路径/home/aw/autoware_data/maps/Shinjuku-Map/map它通过volumes:挂载映射到宿主机~/autoware_data/maps/Shinjuku-Map/map。自定义方式直接编辑 docker-compose.yaml 的command:块即可调整 launch 参数车辆模型、传感器套件、地图路径。若想更换 ROS 发行版可把image:标签从universe-cuda-jazzy换成其他发行版如universe-cuda-humble或指向本地构建的镜像docker run等效命令及完整参数对照表可参见 docker/README.md 的 Usage 一节。常见问题排查容器内看不到 AWSIM 节点优先检查network_mode: host是否被移除、双方 RMW 实现与 DDS 域是否一致以及宿主机 AWSIM 是否已加入 ROS 2 图挂载目录报错或无法写入确认宿主~/autoware_data/maps、~/autoware_data/ml_models已存在并保持create_host_path: false以阻止 root 误创建目录RViz 白屏或崩溃确认已执行xhost local:docker并设置QT_X11_NO_MITSHM1CUDA 相关错误确认宿主机安装了 NVIDIA Container Toolkit且容器以runtime: nvidia启动。小结AWSIM 演示为 Autoware 提供了一个即插即用的端到端仿真入口一条docker compose run命令即可把容器内的 Autoware 桥接到宿主机上的 AWSIM通过e2e_simulator.launch.xml完成车辆、传感器与地图的装载。理解network_mode: host、用户重映射与create_host_path: false这三个隐藏细节是稳定跑通该演示的关键。赞分享自动驾驶【免费下载链接】autowareAutoware - the worlds leading open-source software project for autonomous driving项目地址https://gitcode.com/GitHub_Trending/au/autoware点击查看免费下载相关推荐SQLFluff 自定义规则插件开发实战基于 sqlfluff-plugin-example 的完整指南SQLFluff 自定义规则插件开发实战基于 sqlfluff plugin example 的完整指南 SQLFluff 作为模块化的 SQL 解析、Lin自动驾驶Flower 容器化联邦学习端到端测试基于 Docker Compose 部署 SuperLink 与 SuperNode 的最小实践指南Flower 容器化联邦学习端到端测试基于 Docker Compose 部署 SuperLink 与 SuperNode 的最小实践指南 本篇技术指南以 F人工智能联邦学习机器学习深度学习Motrix 桥接端到端测试实战基于真实 motrix-cli 的 MDXP 配对与下载验收指南Motrix 桥接端到端测试实战基于真实 motrix cli 的 MDXP 配对与下载验收指南 e2e/bridge/ 是 Motrix 项目中针对 MDX桌面应用网络后端上一篇零基础快速上手RVC WebUI十分钟训练专属AI歌手的完整实战指南下一篇在 Apple Silicon 上运行 Stable DiffusionCore ML 模型转换、量化压缩与端侧推理实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

用了这套配置,Claude Code 终于不用我反复交代背景了,2026 最强 Hooks、Skills、Agents 实战 2026/10/2 20:42:55

用了这套配置,Claude Code 终于不用我反复交代背景了,2026 最强 Hooks、Skills、Agents 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
10分钟用AI做一个网站:TaoToken统一Key接入完整流程(小白也能学会) 2026/10/2 20:42:55

10分钟用AI做一个网站:TaoToken统一Key接入完整流程(小白也能学会)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenClaw 多任务处理实战:用 TaoToken 统一 Key 跑通并发任务编排 2026/10/2 20:42:55

OpenClaw 多任务处理实战:用 TaoToken 统一 Key 跑通并发任务编排

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Claude Code 接入开源模型实战:SageMaker 部署 Kimi/GLM + LiteLLM 路由降本 70% |TaoToken 统一 Key 通道 2026/10/2 20:42:35

Claude Code 接入开源模型实战:SageMaker 部署 Kimi/GLM + LiteLLM 路由降本 70% |TaoToken 统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Claude Code 工具与插件:把 MCP 配置改到 TaoToken 的完整指南 2026/10/2 20:42:35

Claude Code 工具与插件:把 MCP 配置改到 TaoToken 的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
生成式到代理式跃迁:构建保险后援数字分身|QCon上海 2026/10/2 20:42:35

生成式到代理式跃迁:构建保险后援数字分身|QCon上海

🌊 专注 AI 大模型与前沿科技深度解析,习惯从工程师视角拆解技术热点,让我们一起在技术浪潮中保持清醒与好奇 🚀生成式到代理式跃迁:构建保险后援数字分身|QCon上海 上周帮一位转行的朋友看简历&#xff0c…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉