Week14 实验报告 —— ROS2 Web远程控制小海龟系统 一、实验名称
ROS2 Web远程控制与自动巡航系统设计
二、实验目的
本周课程主要学习ROS2与Web前端技术结合的方法,通过构建网页控制界面,实现浏览器对Turtlesim仿真环境中的海龟进行远程操控。
通过本实验达到以下目标:
理解ROS2节点通信机制 学习WebSocket实时通信技术 掌握ROS2 Topic消息发布与订阅 学习前后端交互流程 实现远程控制机器人运动 实现自动巡航与状态监测功能 三、实验环境 软件环境 Ubuntu 24.04 ROS2 Rolling Python 3.12 HTML5 CSS3 JavaScript WebSocket ROS2功能包 turtlesim geometry_msgs rclpy std_msgs 四、实验原理
- 系统架构
整个系统采用前后端分离结构。
浏览器控制页面 │ │ WebSocket ▼ Python Web服务器 │ │ ROS2 Topic ▼ Turtlesim节点
网页负责发送控制指令。
Python后端接收指令后转换为ROS2消息。
ROS2节点再向Turtlesim发布速度控制信息。
最终控制海龟完成移动。
- 运动控制原理
海龟运动通过发布Twist消息实现。
geometry_msgs/msg/Twist
包含:
linear.x angular.z
其中:
linear.x 控制前进速度 angular.z 控制转向速度
通过不同参数组合实现:
前进 后退 左转 右转 停止
等功能。
- 自动巡航模式
为了提高系统智能化程度,本实验增加了自动模式。
自动模式启动后:
前进 ↓ 检测边界 ↓ 转向 ↓ 继续前进
循环执行。
使海龟能够在仿真环境中持续运动。
五、实验过程 步骤一:启动ROS2环境
打开终端:
source /opt/ros/rolling/setup.bash
启动Turtlesim:
ros2 run turtlesim turtlesim_node
成功打开仿真窗口。
步骤二:编写控制节点
创建ROS2控制节点。
功能包括:
发布速度指令 接收网页控制命令 实现自动巡航逻辑
测试结果:
ros2 topic echo /turtle1/cmd_vel
能够正常收到控制数据。
步骤三:搭建Web控制页面
设计网页控制器。
实现功能:
上下左右控制按钮 停止按钮 自动模式切换 状态显示区域 地图预览窗口
界面采用深色主题设计。
提高了可视化效果。
步骤四:实现WebSocket通信
建立浏览器与ROS2之间的数据通道。
连接成功后:
网页发送指令 → WebSocket → Python服务 → ROS2节点 → Turtlesim
实现实时控制。
步骤五:自动巡航测试
启动自动模式:
自动模式运行中
系统持续发送运动指令。
海龟能够自动完成运动轨迹绘制。
实验截图显示海龟成功完成复杂图形绘制。
六、实验结果
本实验成功实现:
功能一:手动控制
支持:
前进 后退 左转 右转 停止
控制响应及时。
功能二:自动巡航
自动模式能够持续运行。
实现自主运动功能。
功能三:地图显示
网页端实时显示:
当前位置 运动状态 地图预览
提高了用户体验。
功能四:状态监控
实时显示:
x坐标 y坐标 角度 速度 运动状态
方便调试与分析。
七、实验成果展示 实验截图1
Web远程控制界面成功运行。
包含方向控制按钮和自动模式按钮。
实验截图2
自动巡航模式启动。
海龟按照预设逻辑自主运动。
实验截图3
Turtlesim成功绘制运动轨迹。
证明ROS2控制指令正常执行。
实验截图4
实时地图预览与状态数据显示正常。
完成前后端通信验证。
八、实验总结
通过本周实验,我完成了基于ROS2和Web技术的远程控制系统开发。实验过程中学习了ROS2节点通信机制、Topic消息传输方式以及WebSocket实时通信技术,并成功将网页控制界面与Turtlesim仿真平台结合,实现了远程控制和自动巡航功能。
本项目不仅加深了我对ROS2框架的理解,也让我掌握了机器人系统与Web应用结合的方法。通过自动模式和地图预览功能的实现,我进一步认识到机器人自主控制与可视化监控的重要性。这些技术在智能机器人、远程运维以及具身智能系统中具有广泛应用价值,为后续学习导航、SLAM以及机器人自主决策奠定了良好的基础。
九、完成情况 项目 完成情况 ROS2环境配置 ✅ Turtlesim运行 ✅ Web控制界面 ✅ WebSocket通信 ✅ 自动巡航功能 ✅ 状态监控显示 ✅ 地图预览功能 ✅ 实验报告编写 ✅
实验结果:成功完成 Week14 ROS2 Web远程控制系统设计与实现。