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


相关推荐
独自归家的兔1 分钟前
2026年7月2日 Docker 容器化部署 PaddleOCR-VL 实战(OpenAI 协议兼容 HTTP 调用)
运维·docker·容器
m0_6174939415 分钟前
Python OpenCV 透视变换(Perspective Transform)详解与实战
开发语言·python·opencv
ZXXstarstar16 分钟前
2026年电池安全使用年限的量化决策:什么时间到期最需要替换?
linux·运维·服务器·电池
小李不困还能学18 分钟前
PyCharm下载安装与配置教程
ide·python·pycharm
博观而约取厚积而薄发28 分钟前
Pytest 从入门到精通,一篇就够(超详细实战教程)
python·测试工具·单元测试·自动化·pytest
网络小白不怕黑35 分钟前
httpd监控
linux·运维·服务器
imzed38 分钟前
使用 Playwright + Pytest 构建 Web UI 自动化测试框架
python·自动化·pytest
普通网友43 分钟前
pytest一些常见的插件
开发语言·python·pytest
2501_915716721 小时前
Nginx网关讲解_小白版
运维·nginx