我的问题是如何将一个值从一个订阅者的回调函数传递到另一个订阅者的回调函数。
这有道理吗?
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
和类的回调函数成员,允许您访问它们。
默认情况下,回调是按顺序调用的,因此在这种情况下您无需担心竞争条件。
根据您的用例,您可以将回调与 message filters 同步如果需要的话。
关于ros - 如何在rosnode中将值从一个订阅者的回调函数传递到另一个订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58952416/