ros 小乌龟直角矩形
时间: 2025-05-09 18:19:05 浏览: 19
### 小乌龟模拟器绘制直角矩形的功能
`turtlesim` 是 ROS 中的一个经典教程工具,用于演示基本的发布/订阅机制。通过控制 `turtlesim` 节点中的海龟移动方向和速度,可以实现各种图形的绘制功能[^1]。
以下是使用 Python 编写的代码示例,该程序可以让小乌龟在仿真环境中绘制一个直角矩形:
```python
#!/usr/bin/env python
import rospy
from geometry_msgs.msg import Twist
def draw_rectangle():
# 初始化节点
rospy.init_node('draw_rectangle', anonymous=True)
# 创建 Publisher 对象,发布到 /turtle1/cmd_vel 主题
pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)
rate = rospy.Rate(1) # 设置频率为 1 Hz
vel_msg = Twist() # 创建消息对象
sides = [2.0, 1.0, 2.0, 1.0] # 矩形边长列表 (单位: 米)
for side in sides:
if not rospy.is_shutdown():
# 前进
vel_msg.linear.x = side
vel_msg.angular.z = 0
pub.publish(vel_msg)
rospy.sleep(2) # 让机器人有时间前进
# 转弯90度
vel_msg.linear.x = 0
vel_msg.angular.z = rospy.get_param("~angular_velocity", 1.57) # 默认角度为 pi/2 radian
pub.publish(vel_msg)
rospy.sleep(1) # 给予足够的时间完成转弯动作
if __name__ == '__main__':
try:
draw_rectangle()
except rospy.ROSInterruptException:
pass
```
#### 解析
上述代码实现了以下功能:
- 使用 `rospy` 库初始化了一个名为 `draw_rectangle` 的节点。
- 发布消息至 `/turtle1/cmd_vel` 主题来控制小乌龟的速度和转向。
- 定义了矩形四条边的距离,并依次让小乌龟按照这些距离前行并转过 90° 角度[^2]。
注意,在实际运行此脚本之前,请确保已启动 `roscore` 并执行命令打开 `turtlesim_node`:
```bash
rosrun turtlesim turtlesim_node
```
随后赋予脚本可执行权限并通过如下方式运行它:
```bash
chmod +x your_script_name.py
rosrun your_package_name your_script_name.py
```
阅读全文
相关推荐


















