第 0 章 环境准备学习目标在 Windows 上安装 Docker Desktop并确认它能正常运行安装 VcXsrvX 服务器让容器里的图形程序显示到 Windows 桌面拉取 ROS 2 Jazzy 官方镜像并启动一个持久化容器在容器里跑通第一个图形程序turtlesim整体思路ROS 2 官方推荐的操作系统是 Ubuntu。在 Windows 上体验 ROS 2 最省心的方式是用 Docker 跑一个装有 ROS 2 Jazzy 的 Ubuntu 24.04 容器把宿主机当成“遥控器”┌─────────────────────────────────────────────┐ │ Windows 主机 │ │ Docker Desktop ──→ ROS2 容器Ubuntu 24.04│ │ VcXsrvX 服务器←── 图形窗口turtlesim 等│ └─────────────────────────────────────────────┘容器的图形界面通过 X11 协议转发到 VcXsrv 显示代码文件通过卷挂载与宿主机共享。1. 安装 Docker Desktop从官网下载 Docker Desktophttps://www.docker.com/products/docker-desktop/双击安装保持默认选项Docker Desktop 会要求启用WSL2这是 Windows 上推荐的运行后端。安装完成后重启电脑启动 Docker Desktop等待状态栏显示为绿色Engine running。打开 PowerShell 验证docker--version docker info如果docker命令找不到重启一次电脑或重新登录 Windows 即可。提示如果安装时没有启用 WSL2可以在 Docker Desktop 的 Settings → General 中勾选 “Use the WSL 2 based engine” 并 Apply Restart。2. 安装 VcXsrvX 服务器ROS 2 容器里的 turtlesim、RViz、Gazebo 都是图形程序。Windows 本身不提供 X11 显示服务所以需要一个 X 服务器把窗口“翻译”出来。VcXsrv 是最常用的免费选择。下载并安装 VcXsrvhttps://sourceforge.net/projects/vcxsrv/从开始菜单启动XLaunch按下面的配置一路 NextDisplay settingsMultiple windowsDisplay number 保持0Client startupStart no clientExtra settings勾选 Disable access control关键否则容器连不上点击 Finish首次启动时如果 Windows 防火墙弹出提示允许“专用网络”Private networks访问。之后任务栏会出现一个 X 图标说明 X 服务器已就绪。建议把它设为开机自启每次学习前先启动它。替代方案如果你更熟悉其他 X 服务器如 Xming原理相同后面章节的DISPLAY配置不变。3. 拉取 ROS 2 Jazzy 镜像在 PowerShell 中执行首次下载约 2–3 GB请耐心等待docker pull osrf/ros:jazzy-desktop-fullosrf/ros是 Open Robotics 官方镜像仓库jazzy-desktop-full这个标签包含 ROS 2 完整桌面版RViz、turtlesim、仿真工具等适合学习和开发。4. 启动容器在 PowerShell 中执行下面的命令注意是一条命令\只是换行符docker run-it--name ros2_learning -e DISPLAYhost.docker.internal:0.0 -e LIBGL_ALWAYS_SOFTWARE1 -v D:/project/codex/ros2_ws:/root/ros2_ws osrf/ros:jazzy-desktop-full bash命令参数说明参数作用-it以交互方式运行进入容器终端--name ros2_learning给容器起名字方便以后复用不加--rm这样容器里装的软件不会丢失-e DISPLAYhost.docker.internal:0.0告诉容器把图形窗口发给 Windows 上的 X 服务器端口 6000即 Display 0-e LIBGL_ALWAYS_SOFTWARE1使用软件渲染 OpenGL解决虚拟机/容器里图形黑屏问题-v D:/project/codex/ros2_ws:/root/ros2_ws把宿主机的ros2_ws目录挂载到容器内/root/ros2_ws两边文件实时同步执行成功后命令行提示符会变成类似rootxxxx:/#说明你已经进入容器。以后如何再次进入容器容器停止后输入exit或重启电脑不需要重新docker run直接用dockerstartros2_learning然后打开一个新的交互式终端docker exec-it ros2_learning bash注意通过docker exec进入的终端不会自动加载 ROS 2 环境每次先执行source /opt/ros/jazzy/setup.bash交互式docker run进入的终端通常已经自动配置好但执行一次也无妨。5. 验证环境在容器内依次执行echo$ROS_DISTROros2--helppython3--version如果echo $ROS_DISTRO输出jazzy说明 ROS 2 环境正常。再验证图形界面先安装 turtlesim桌面版镜像通常已包含未包含时此命令不会报错sudoaptupdatesudoaptinstall-yros-jazzy-turtlesim启动小乌龟ros2 run turtlesim turtlesim_node如果桌面上弹出一个蓝色窗口、中间有一只小乌龟恭喜你的环境就绪了按CtrlC关掉它。如果窗口没弹出或报 “cannot open display”先看本章“常见问题”。6.可选VS Code Dev Containers在容器里直接用 vim/nano 编辑代码不太方便。推荐安装 VS Code 的Dev Containers扩展把 VS Code 直接“开”进容器里写代码。安装 VS Codehttps://code.visualstudio.com/安装扩展Dev Containersms-vscode-remote.remote-containers。在项目目录创建.devcontainer/devcontainer.json内容如下然后按F1→ “Dev Containers: Reopen in Container”。{name:ros2_jazzy,image:osrf/ros:jazzy-desktop-full,runArgs:[-e,DISPLAYhost.docker.internal:0.0,-e,LIBGL_ALWAYS_SOFTWARE1],workspaceFolder:/root/ros2_ws,mounts:[sourceD:/project/codex/ros2_ws,target/root/ros2_ws,typebind],customizations:{vscode:{extensions:[ms-python.python]}}}不想用 VS Code 的话直接在宿主机用任意编辑器编辑挂载目录里的文件容器内同样能读到。常见问题现象原因与解决办法cannot open display: host.docker.internal:0.0VcXsrv 没启动或没勾选 “Disable access control”重新用 XLaunch 启动并勾选该项窗口出现但全黑 / 崩溃显卡驱动与容器不兼容确认启动容器时带上了LIBGL_ALWAYS_SOFTWARE1docker: command not foundDocker Desktop 未启动或未安装启动后重开终端docker pull很慢或超时网络原因可给 Docker 配置国内镜像加速器Settings → Docker Engine或在网络环境较好的时间重试图形窗口一闪而过X 服务器防火墙拦截在 Windows 防火墙中允许 VcXsrv 通过“专用网络”重新进入容器后命令找不到了先执行source /opt/ros/jazzy/setup.bash练习题关闭容器后重新启动它确认 turtlesim 依然能打开验证容器持久化。在宿主机D:\project\codex\ros2_ws里新建一个hello.txt在容器内执行cat /root/ros2_ws/hello.txt验证卷挂载生效。说出docker run与docker exec的区别。
郑州网站建设
网页设计
企业官网