🐢 ROS2 Docker 小乌龟实验报告
📅 日期
2026-05-06
🧪 实验目的
- 学习使用 Docker 运行 ROS2 环境
- 掌握 turtlesim 小乌龟基本操作
- 理解 ROS2 中 Topic 通信机制
- 使用命令控制机器人运动
🖥️ 实验环境
- 操作系统:Windows 10
- 工具:Docker Desktop + WSL2
- 镜像:ghcr.io/tiryoh/ros2-desktop-vnc:humble
- ROS版本:ROS2 Humble
🚀 实验步骤
1️⃣ 启动 Docker 容器
在 Windows PowerShell 中输入:
docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m -v ${PWD}:/home/ws ghcr.io/tiryoh/ros2-desktop-vnc:humble
启动后,在浏览器访问:
http://127.0.0.1:6080/
进入 Ubuntu 桌面环境。
2️⃣ 打开终端
在网页桌面中打开 Terminal(终端),进入工作目录:
cd /home/ws
3️⃣ 启动小乌龟节点(turtlesim)
ros2 run turtlesim turtlesim_node
运行后会弹出一个窗口,显示蓝色背景的小乌龟。
📷 turtlesim 运行界面

4️⃣ 启动键盘控制节点
新开一个终端,输入:
ros2 run turtlesim turtle_teleop_key
📷 键盘控制界面

5️⃣ 控制小乌龟运动
点击控制终端窗口,使用键盘操作:
- ↑ 前进
- ↓ 后退
- ← 左转
- → 右转
小乌龟会根据按键进行移动。
📷 小乌龟运动轨迹

6️⃣ 查看 ROS2 通信机制
查看当前节点
ros2 node list
输出示例:
/turtlesim
/teleop_turtle
查看话题(Topic)
ros2 topic list
输出示例:
/turtle1/cmd_vel
/turtle1/pose
查看话题数据
ros2 topic echo /turtle1/pose
可以实时看到小乌龟的位置和姿态信息。
🧠 实验原理
ROS2 使用“节点(Node)+ 话题(Topic)”进行通信:
turtlesim_node:发布乌龟的位置(Publisher)turtle_teleop_key:发布控制指令(Publisher)- 系统通过 Topic 实现数据传输
核心机制:
Publish → Topic → Subscribe
🎯 实验结果
- 成功启动 ROS2 Docker 环境
- 成功运行 turtlesim 小乌龟模拟器
- 实现键盘控制乌龟运动
- 成功查看 ROS2 节点和话题
- 理解 ROS2 基本通信机制
❗ 遇到的问题与解决方法
问题 1:无法连接 Docker
原因:Docker 未启动
解决:
启动 Docker Desktop
问题 2:无法访问网页
原因:端口未映射
解决:
-p 6080:80
问题 3:路径错误(C:\ 无法访问)
原因:Linux 与 Windows 路径不同
解决:
cd /home/ws
问题 4:命令找不到
解决:
source /opt/ros/humble/setup.bash
🧾 实验总结
通过本次实验,我掌握了在 Docker 环境下运行 ROS2 的基本方法,并成功使用 turtlesim 小乌龟进行控制实验。理解了 ROS2 中节点与话题的通信机制,以及如何通过命令行进行系统交互。这为后续学习机器人开发和 ROS2 编程打下了基础。