编写python发布订阅节点
时间: 2023-10-17 18:05:11 浏览: 115
[ros2学习]-Client Libraries – 写一个简单的发布和订阅(python)
在Python中,可以使用`rospy`模块为ROS创建发布者和订阅者。下面是一个简单的发布者和订阅者的例子:
发布者:
```python
import rospy
from std_msgs.msg import String
rospy.init_node('publisher_node')
pub = rospy.Publisher('topic_name', String, queue_size=10)
while not rospy.is_shutdown():
message = "Hello ROS!"
pub.publish(message)
rospy.loginfo(message)
rospy.sleep(1)
```
上面的代码创建一个名为“publisher_node”的节点,并使用`rospy.Publisher`创建一个名称为“topic_name”的主题发布者。在while循环中,发布一个“Hello ROS!”消息,并将其记录到ROS日志中,然后暂停1秒钟。
订阅者:
```python
import rospy
from std_msgs.msg import String
def callback(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
rospy.init_node('subscriber_node')
sub = rospy.Subscriber('topic_name', String, callback)
rospy.spin()
```
上面的代码创建一个名为“subscriber_node”的节点,并使用`rospy.Subscriber`创建一个名称为“topic_name”的主题订阅者。在`callback`函数中,记录接收到的消息到ROS日志中。最后,使用`rospy.spin()`保持节点运行,等待接收消息。
注意:在运行代码之前,确保ROS环境变量已设置,可以通过运行`source /opt/ros/<ros_version>/setup.bash`命令进行设置。
阅读全文