如何将值从一个订阅者的回调函数传递给rosnode中的另一个

时间:2019-11-20 10:43:00

标签: ros subscriber rospy

我的问题是如何将一个订阅者的回调函数中的值传递给另一个订阅者。

这有意义吗?

ComboBox

2 个答案:

答案 0 :(得分:1)

您可以像将变量x传递给任何其他函数一样,通过将x设置为全局变量,或者将x和回调函数“传递”到两个回调中类的函数成员,使您可以访问它们。

默认情况下,回调是按顺序调用的,因此在这种情况下,您不必担心竞争情况。

根据您的用例,如果需要,您可以将回调与message filters同步。

答案 1 :(得分:1)

我会稍微更改代码,我认为您编写代码的方式是,全局变量未正确设置。

不同之处在于,您不必在变量定义中使用 global 指令,而是必须在回调中使用

import rospy
from sensor_msgs.msg import LaserScan, Int32
from xxx2.msg import xxyy2

x = None      

def callback2(data):
    global x
    x = data[0]

def callback(data):
    global x
    if x > data.ranges[0]:
        print("nice")


rospy.Subscriber("/scan", LaserScan, callback)
rospy.Subscriber("topic", xxyy2, callback2)    
rospy.spin()

致谢

相关问题