ros2 小海龟
时间: 2025-03-14 08:02:16 AIGC 浏览: 63
### ROS2 中 Turtlesim 使用教程
Turtlesim 是 ROS 中的一个经典教学工具,它提供了一个简单的图形界面和一组 API 来控制虚拟的小海龟移动。以下是基于站内引用的内容以及补充的知识点编写的 ROS2 下 Turtlesim 的使用教程。
#### 创建并配置工作空间
为了运行 Turtlesim 教程中的节点和服务,首先需要创建一个新的 ROS2 工作空间,并构建一个包 `learning_tf2_cpp` 作为基础环境[^1]:
```bash
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
colcon create-package learning_tf2_cpp --build-type ament_cmake
```
此包依赖于多个核心组件,包括但不限于 `geometry_msgs`, `rclcpp`, `tf2`, `tf2_ros` 和 `turtlesim`。这些依赖项可以通过以下方式安装:
```bash
sudo apt-get install ros-humble-turtlesim ros-humble-rclcpp ros-humble-geometry-msgs ros-humble-tf2 ros-humble-tf2-ros
```
完成上述操作后,可以继续执行下一步骤。
---
#### 启动 Turtlesim 节点
启动 Turtlesim 模拟器的方法如下所示[^3]:
```bash
ros2 run turtlesim turtlesim_node
```
这将在屏幕上显示一个小海龟的初始状态,默认情况下位于坐标 `(5.54, 5.54)` 处。
---
#### 控制小海龟运动
要实现对小海龟的实时键盘控制,可以在另一个终端中运行以下命令[^2]:
```bash
ros2 run turtlesim turtle_teleop_key
```
此时,用户可通过方向键(上、下、左、右)来操控小海龟的方向和速度。
---
#### 动态生成新的小海龟实例
如果希望动态生成额外的小海龟实例,则需编写自定义逻辑以调用 `/spawn` 服务接口[^4]。下面是一个完整的 Python 实现示例代码片段:
```python
import rclpy
from rclpy.node import Node
from turtlesim.srv import Spawn
class TurtleSpawner(Node):
def __init__(self):
super().__init__('turtle_spawner')
self.client = self.create_client(Spawn, '/spawn')
def spawn_turtle(self):
while not self.client.wait_for_service(timeout_sec=1.0):
self.get_logger().info('等待 /spawn 服务...')
request = Spawn.Request()
request.name = 'turtle3'
request.x = 4.0
request.y = 2.0
request.theta = 0.0
future = self.client.call_async(request)
future.add_done_callback(self.callback)
def callback(self, future):
try:
response = future.result()
self.get_logger().info(f'成功生成 {response.name}')
except Exception as e:
self.get_logger().error(f'Service call failed: {e}')
def main(args=None):
rclpy.init(args=args)
node = TurtleSpawner()
node.spawn_turtle()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
以上脚本会尝试连接到 `/spawn` 服务端口,并请求在指定位置 (x=4.0, y=2.0) 初始化一只名为 `turtle3` 的新海龟对象。
---
#### 总结
通过本文档介绍的方式,读者能够掌握如何设置开发环境、启动基本功能模块以及扩展高级特性等内容。更多细节可查阅官方文档或其他社区资源进一步学习。
阅读全文
相关推荐



















