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

标签 ros subscriber rospy

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

这有道理吗?

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/

相关文章:

c++ - 如何在我的项目包中使用 c++ 库 gtsam?

c++ - 取消订阅主题并订阅新的运行时 (C++) (ROS)

python - 无法在 rospy 中发布订阅的主题

python - 如何在每次迭代时更新 matplotlib pyplot

android - 仅在未实现 onError 时使用 RxJava 的全局错误处理解决方案

python - rospy 中的实时 2D 激光扫描仪数据

opencv - 如何使用 CMake (ubuntu 14.04) 将 opencv 链接到 ROS indigo (catkin)

c++ - IMU 数据解读(ROS & XSens MTi)

tensorflow - RealSense ROS 上的点云和 RGB 图像对齐

javascript - 如何动态注册RPC提供者?