ros的一个python程序向多个节点发送消息
时间: 2024-10-20 18:07:06 浏览: 60
在ROS (Robot Operating System) 中,Python 是非常常用的一种语言,用于编写节点(Node) 来处理各种任务并与其他节点交互。如果你想从一个Python程序向多个ROS节点发送消息,通常你会这样做:
1. **创建发布者(Publisher)**: 首先,你需要在一个节点上创建一个发布者,它是一个特定话题(Topic)的消息提供者。例如,你可以使用`rospy.Publisher()`函数来创建一个发布者。
```python
import rospy
from std_msgs.msg import String
def send_message():
pub = rospy.Publisher('my_topic', String, queue_size=10)
rate = rospy.Rate(10) # 控制消息发布的频率
while not rospy.is_shutdown():
message = "Hello from Publisher"
pub.publish(message)
rate.sleep()
```
这里假设你想在一个名为'my_topic'的话题上发布字符串消息。
2. **订阅者(Subscribers)**: 每个接收消息的节点需要有一个订阅者,它们会监听你发布的消息。其他节点通过调用`rospy.Subscriber()`函数来订阅主题。
```python
import rospy
from std_msgs.msg import String
def receive_message():
rospy.init_node('subscriber_node')
sub = rospy.Subscriber('my_topic', String, callback_function)
rospy.spin()
def callback_function(msg):
print("Received message: ", msg.data)
```
在上述代码中,`callback_function`会在接收到消息时被调用,并打印出接收到的内容。
为了实际将消息发送到多个节点,你可以运行多个订阅这个主题的节点实例,每个节点有自己的`receive_message`函数。
阅读全文