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 避障的奥秘!


相关推荐
杰瑞学AI11 小时前
一个回答需要10分钟:飞书问答机器人踩坑实录——纯Agent自由检索,差点让我们的机器人“难产”
人工智能·机器人·prompt·transformer·飞书·ai-native
dok1211 小时前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (9)manual_cdev
linux·运维·驱动开发
志栋智能11 小时前
超自动化安全中的自适应防护与自愈能力
网络·安全·自动化
IT小盘11 小时前
16-Prompt版本管理-从手工修改到可追踪配置系统
开发语言·人工智能·python·prompt
卷无止境11 小时前
Python进程池那些事儿:从原理到实战
后端·python
满怀冰雪11 小时前
15-Paddle 高层 API 入门:paddle.Model 的训练与评估流程
人工智能·python·深度学习·机器学习·paddle
johnny23311 小时前
Python生态调试库:IceCream、birdseye、peek、qj、crab_dbg、spewer
python
czhaii11 小时前
汇川注塑机伺服驱动器故障维修排除方法
运维·服务器
Cx330❀11 小时前
【Linux网络】深入 HTTP 协议(五):从 Cookie/Session 原理到 C++ 源码实战
linux·运维·服务器·开发语言·网络·c++·http
鸿芯微控科技11 小时前
MFC气体转换系数怎么用?标定气体、换算方向与Python批量计算
c++·python·mfc