Skip to the content.

docker的小乌龟操作一、实验背景与目的 本次实验在Docker 容器化环境中部署 ROS2,并运行经典的turtlesim仿真节点,验证 Docker 容器中 ROS2 开发环境的可用性,掌握 Docker 容器中图形界面应用的运行方法,理解容器化技术在 ROS 开发中的优势。 二、实验环境与过程

  1. 实验环境 宿主系统:Windows 11 容器环境:Docker Desktop,基于 Ubuntu 的 ROS2 镜像(含桌面环境与图形支持) ROS 版本:ROS 2 Humble 核心工具:Docker、turtlesim仿真器、turtle_teleop_key键盘控制节点
  2. 实验步骤 部署 Docker ROS2 镜像:拉取并启动支持图形界面的 ROS2 Docker 容器,配置 X11 转发或 VNC / 浏览器访问,使容器内的图形应用可在宿主系统显示。 启动 TurtleSim 仿真节点:在容器终端执行命令: bash 运行 ros2 run turtlesim turtlesim_node 成功启动后,弹出蓝色仿真窗口,海龟出现在初始位置。 启动键盘控制节点:新开容器终端,执行命令: bash 运行 ros2 run turtlesim turtle_teleop_key 通过方向键控制海龟的移动与转向,验证 ROS2 话题通信与运动控制功能。 三、实验现象与原理分析
  3. 核心现象 图形界面正常显示:Docker 容器内的turtlesim窗口成功在宿主系统显示,说明容器的图形环境配置生效,ROS2 的 GUI 应用可正常运行。 键盘控制功能正常:在turtle_teleop_key终端中按下方向键,海龟可实现前进、后退、左转、右转,ROS2 话题通信(/turtle1/cmd_vel)在容器内正常工作。 容器日志输出正常:终端输出[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[…]日志,说明仿真节点成功初始化并响应控制指令。
  4. 原理分析 Docker 容器化 ROS 开发的优势: 环境隔离:ROS2 及其依赖库被完整打包在容器中,不会影响宿主系统的环境配置,避免版本冲突。 可移植性:配置好的 ROS2 容器可在任意支持 Docker 的系统中快速部署,无需重复配置开发环境。 图形界面支持:通过 X11 转发或浏览器访问(如实验中的127.0.0.1:16080),容器内的 GUI 应用可在宿主系统正常显示,解决了传统服务器环境下 ROS 图形工具无法使用的问题。 ROS2 节点通信机制:turtle_teleop_key节点作为发布者,将键盘指令转换为geometry_msgs/Twist消息发布到/turtle1/cmd_vel话题;turtlesim_node作为订阅者接收消息并控制海龟运动,该机制在容器内与原生系统中表现一致。 四、实验结论 Docker 容器可有效搭建 ROS2 开发环境,实现图形界面应用的正常运行,为 ROS 开发提供了便捷、可移植的环境方案。 容器化环境下 ROS2 的话题通信、节点运行机制与原生系统完全一致,可满足从仿真到算法开发的全流程需求。 通过浏览器访问容器桌面(如127.0.0.1:16080)的方式,简化了 Docker ROS2 图形界面的配置流程,降低了环境搭建的门槛。 五、实验心得(补充版) 容器化技术对 ROS 开发的革新:之前搭建 ROS 环境时,常因依赖版本、系统配置问题耗费大量时间,而 Docker 容器化技术完美解决了这些痛点。一个配置好的 ROS2 镜像,就能在任意电脑上快速部署相同的开发环境,大大提升了开发效率。 图形界面配置的关键难点:实验中容器图形界面的配置是核心难点,通过浏览器访问容器桌面的方式,比传统的 X11 转发更稳定、更便捷,让我意识到 Docker 容器在 ROS 开发中的易用性正在不断提升。 ROS2 在容器中的兼容性验证:本次实验验证了 ROS2 节点在容器中的兼容性,无论是turtlesim仿真节点,还是键盘控制节点,都能正常运行,说明容器化环境完全可以满足 ROS 开发的需求。 后续拓展方向:可将更复杂的 ROS2 项目(如 RViz 可视化、四足机器人仿真)部署到 Docker 容器中,验证容器化环境对复杂 ROS 项目的支持能力;也可将容器镜像打包分享,实现团队开发环境的统一配置。