ROS 2 入门:从零实现小海龟 (Turtlesim) 的手动控制与自动化绘圆


1. 实验背景

ROS 2 (Robot Operating System 2) 是目前机器人开发的主流框架。本实验作为 ROS 2 学习的第一步,通过 turtlesim 仿真器,深入理解 ROS 2 的节点(Node)、话题(Topic)以及发布/订阅(Pub/Sub)通信机制。

2. 实验目标

  1. 启动 Turtlesim 仿真节点。
  2. 通过键盘控制节点,实现对小海龟的手动控制。
  3. 编写 Python 脚本,通过发布 Twist 消息实现小海龟的自动化圆周运动。

3. 实验步骤与效果展示

3.1 环境准备

首先确保 ROS 2 环境配置正确,启动仿真核心节点:

bash 复制代码
ros2 run turtlesim turtlesim_node

3.2 手动控制(Teleop)

开启一个新终端,运行键盘控制节点。通过键盘方向键,我们可以实时改变小海龟的速度。

bash 复制代码
ros2 run turtlesim turtle_teleop_key

在手动控制下,小海龟会在屏幕上留下运动轨迹。

3.3 自动化控制:编写 Python 绘圆脚本

📥 实验源码下载

文件名: draw_circle.py
获取方式: 点击 立即下载 按钮,或者查看资源绑定列表。
适用环境: ROS 2 Humble / Foxy / Galactic

手动控制虽然直观,但机器人开发的内核在于自动化。我们编写了一个名为 draw_circle.py 的 Python 节点,通过定时向 /turtle1/cmd_vel 话题发送恒定的线速度和角速度,使海龟画出一个完美的圆。

代码核心实现:

python 复制代码
# 核心逻辑:设置线性速度 x=2.0, 角速度 z=1.0
msg = Twist()
msg.linear.x = 2.0  
msg.angular.z = 1.0 
self.publisher_.publish(msg)

运行过程:

bash 复制代码
python3 draw_circle.py

最终效果:

可以看到在原有乱序轨迹的基础上,小海龟划出了一个规范的圆形。


4. 实验总结

通过本次实验,我掌握了以下核心知识点:

  • 节点 (Node)turtlesim_node 和控制节点是相互独立的进程。
  • 话题 (Topic) :控制指令是通过 /turtle1/cmd_vel 话题进行传递的。
  • 消息类型 (Message Type) :使用了 geometry_msgs/msg/Twist 来表达三维空间中的速度。

这种"发布/订阅"的异步通信模式是 ROS 2 系统的基石。


🚀 下一步预告

圆满完成小海龟任务后,我将挑战 目标二:三维导航(3D Navigation)。我们将告别二维平面,进入 Gazebo 仿真环境,探索激光雷达与 3D 避障的奥秘!


相关推荐
Kang.lee1 小时前
2026.5.12【芯片设计面试经验分享】上海车载芯片设计公司
经验分享·面试·职场和发展
努力的小帅1 小时前
Ubuntu 使用 avahi/mDNS 实现固定连接(VSCode Remote SSH + NoMachine)
linux·vscode·ubuntu·ssh·linux入门
艾莉丝努力练剑1 小时前
【Linux网络】Linux 网络编程:应用层自定义协议与序列化(2)序列化与反序列化
linux·运维·服务器·c++·网络协议·序列化
凯瑟琳.奥古斯特1 小时前
Django Flask FastAPI 三者对比
开发语言·python·django·flask·fastapi
godspeed_lucip1 小时前
LLM和Agent——专题2: LLM as Judge 入门(2)
人工智能·python
智者知已应修善业1 小时前
【51单片机一个按键切合初始流水灯按一下对半闪烁按一下显示时间】2023-10-16
c++·经验分享·笔记·算法·51单片机
老王谈企服1 小时前
实在Agent智能体视频生成节点实战:多模型调度、Jinja模板与动态参数,打造自动化视频生产线
人工智能·自动化·音视频
kaoa0001 小时前
Linux入门攻坚——76、虚拟化技术基础原理-1
linux·运维·服务器
yyuuuzz1 小时前
企业出海aws运维常见问题梳理
运维·服务器·网络·数据库·aws