ros2 python 小乌龟矩形运动
时间: 2025-02-02 19:31:01 浏览: 22
在ROS2中,使用Python控制名为turtlesim
的小乌龟绘制矩形,你可以借助turtlesim
包提供的geometry_msgs/Twist
消息来发送移动命令。以下是关键步骤的代码示例:
```python import rclpy from rclpy.node import Node from geometry_msgs.msg import Twist # 导入控制消息
class TurtleSquareNode(Node): def init(self): super().init('turtle_square') # 初始化节点 self.publisher_ = self.create_publisher(Twist, 'turtle1/cmd_vel', 10) # 创建发布器,turtle1可能是你的小乌龟名字
def move_forward(self, distance):
msg = Twist()
msg.linear.x = distance
msg.linear.y = 0
msg.angular.z = 0
self.publisher_.publish(msg)
self.get_logger().info(f"Moving forward {distance}.")
def turn(self, angle):
msg = Twist()
msg.linear.x = 0
msg.linear.y = 0
msg.angular.z = angle
self.publisher_.publish(msg)
self.get_logger().info(f"Turning by {angle} degrees.")
def draw_rectangle(self, width, height):
for _ in range(2): # 上下两条边
self.move_forward(width)
self.turn(90) # 右转90度
for _ in range(2): # 左右两条边
self.move_forward(height)
self.turn(-90) # 左转90度
def main(args=None): rclpy.init(args=args) turtle_node = TurtleSquareNode()
try:
width = float(input("Enter the rectangle width: "))
height = float(input("Enter the rectangle height: "))
turtle_node.draw_rectangle(width, height)
except KeyboardInterrupt:
pass # 捕获Ctrl+C,确保优雅退出
turtle_node.destroy_node() # 销毁节点
rclpy.shutdown()
if name == 'main': main()
相关推荐

















