ros发布节点信息python_编写同时具有发布者和订阅者的ros节点?

嗯,我认为这里有很多解决方案,您甚至可以使用python进程,但我建议使用使用ros Timer的ROS方法。

我在python中并没有那么高效,但这段代码可能会让您有点头晕。#!/usr/bin/env python

import rospy

from std_msgs.msg import Empty

from std_msgs.msg import String

import numpy as np

last_data = ""

started = False

pub = rospy.Publisher('/status', String, queue_size=1000)

def callback(data):

print "New message received"

global started, last_data

last_data = data

if (not started):

started = True

def timer_callback(event):

global started, pub, last_data

if (started):

pub.publish(last_data)

print "Last message published"

def listener():

rospy.init_node('control', anonymous=True)

rospy.Subscriber('control_c', String, callback)

timer = rospy.Timer(rospy.Duration(0.5), timer_callback)

rospy.spin()

timer.shutdown()

if __name__ == '__main__':

print "Running"

listener()

在这里,您的回调将更新消息,您的计时器将每0.5秒触发一次并发布最后收到的数据。

您可以通过每隔3秒在“/control\u c”上发布数据并将计时器配置为0.5秒来测试此代码。启动回音打开/状态$ rostopic echo /status

你的信息会以2赫兹的频率发布。

希望能有帮助!

你可能感兴趣的:(ros发布节点信息python)