ros一个节点向多个节点发布消息python代码示例
时间: 2024-10-20 18:07:37 浏览: 36
在Robot Operating System (ROS)中,一个节点可以向多个其他节点发送消息。这里是一个简单的Python代码示例,展示了如何在一个ROS节点中使用`rospy.Publisher`来创建并发布数据到多个主题(topics)。假设我们有一个名为`message`的数据类型,如`std_msgs/String`,并且我们有两个接收者节点,分别订阅名为`topic1`和`topic2`的主题。
```python
import rospy
from std_msgs.msg import String
# 初始化节点
def setup_node():
rospy.init_node('publisher_example', anonymous=True)
# 创建Publisher实例,每个主题一个
def create_publishers():
publisher_topic1 = rospy.Publisher('topic1', String, queue_size=10)
publisher_topic2 = rospy.Publisher('topic2', String, queue_size=10)
# 发布消息函数
def publish_message(message):
publisher_topic1.publish(message)
publisher_topic2.publish(message)
if __name__ == '__main__':
try:
# 设置节点
setup_node()
# 创建Publisher实例
create_publishers()
rate = rospy.Rate(10) # 每秒发送10次消息
while not rospy.is_shutdown():
message_content = "This is a test message."
publish_message(message_content)
rate.sleep()
except rospy.ROSInterruptException:
print("Node terminated.")
```
在这个例子中,`publish_message`函数会同时将消息`message_content`发布到`topic1`和`topic2`。每个节点运行时需要连接到相同的ROS网络,并且目标接收者节点也需要订阅相应的主题才能接收到消息。
阅读全文