我的问题是如何将值从一个订阅者的回调函数传递到另一个订阅者的回调函数。
这有道理吗?
import rospy
from sensor_msgs.msg import LaserScan, Int32
from xxx2.msg import xxyy2
global x
x = None
def callback2(data):
x=data[0]
def callback(data):
if x > data.ranges[0]:
print("nice")
rospy.Subscriber("/scan", LaserScan, callback)
rospy.Subscriber("topic", xxyy2, callback2)
rospy.spin()
您可以“传递”变量x
到两个回调,因为您可以将其传递给任何其他函数,方法是x
以您所做的方式或通过使x
以及允许您访问它们的类的回调函数成员。
默认情况下,回调是按顺序调用的,因此在这种情况下您无需担心竞争条件。
根据您的用例,您可以将回调与消息过滤器 http://wiki.ros.org/message_filters如果需要的话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)