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

2024-06-23

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

这有道理吗?

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(使用前将#替换为@)

如何在rosnode中将值从一个订阅者的回调函数传递到另一个订阅者 的相关文章

  • 从 NSURL 检索文件名

    我有一个网址 http www hdwallpapers in walls honda v4 concept widescreen bike wide jpg http www hdwallpapers in walls honda v4

随机推荐