ros2编程控制turtlesim中的小海龟走一个正方形
时间: 2025-06-23 22:25:18 AIGC 浏览: 27
### 使用ROS2编程控制Turtlesim模拟器中的海龟图形走一个正方形
要在ROS2环境中让Turtlesim模拟器内的海龟沿正方形路径移动,可以通过编写Python脚本来实现这一目标。此过程涉及创建并发布消息到`/turtle1/cmd_vel`话题来指挥海龟的速度和方向。
下面是一个简单的Python程序示例,用于指导Turtlesim绘制正方形:
```python
import rclpy
from geometry_msgs.msg import Twist
from math import radians, pi
def move_square(node):
vel_pub = node.create_publisher(Twist, '/turtle1/cmd_vel', 10)
twist_msg = Twist()
rate = node.create_rate(1)
side_length = 2.0
angle_turn = radians(90)
angular_speed = radians(45)
linear_duration = int(side_length / 1.0)
angular_duration = int(angle_turn / (angular_speed))
for i in range(4):
# Move forward
twist_msg.linear.x = 1.0
twist_msg.angular.z = 0.0
start_time = node.get_clock().now()
while (node.get_clock().now() - start_time).nanoseconds * 1e-9 < linear_duration:
vel_pub.publish(twist_msg)
rate.sleep()
# Turn 90 degrees
twist_msg.linear.x = 0.0
twist_msg.angular.z = angular_speed
turn_start_time = node.get_clock().now()
while (node.get_clock().now() - turn_start_time).nanoseconds * 1e-9 < angular_duration:
vel_pub.publish(twist_msg)
rate.sleep()
def main(args=None):
rclpy.init(args=args)
node = rclpy.create_node('move_in_square')
try:
move_square(node)
finally:
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
这段代码定义了一个名为`move_square`的功能函数,在该函数内部,先设置线速度使海龟前进一段距离,之后再调整角速度使其旋转特定角度完成转弯动作;重复四次形成封闭的正方形轨迹[^1]。
阅读全文
相关推荐


















