In ROS abonnieren Sie häufig mehrere Themen. Notieren Sie sich daher, wie dies zu diesem Zeitpunkt geschehen soll.
Die folgenden Artikel waren sehr hilfreich. Nachrichten synchron von mehreren Themen auf ROS empfangen
Verwenden Sie `` `message_filters```, um mehrere Nachrichten zu abonnieren. Wenn Sie beispielsweise den Listener von ROS-Tutorials erweitern,
#/usr/bin/env python
import message_filters
import rospy
from std_msgs.msg import Int32
# Define callback
def callback(msg1, msg2):
print(msg1.data)
print(msg2.data)
# Initialize Subscriber node
rospy.init_node('listener')
# Define Subscriber
sub1 = message_filters.Subscriber('listener1', Int32)
sub2 = message_filters.Subscriber('listener2', Int32)
queue_size = 10
fps = 100.
delay = 1 / fps * 0.5
mf = message_filters.ApproximateTimeSynchronizer([sub1, sub2], queue_size, delay)
mf.registerCallback(callback)
rospy.spin()
Mehrere Abonnenten werden mit message_filters.ApproximateTimeSynchronizer ()
synchronisiert.
Beachten Sie im Fall von Python2, dass es als "Verzögerung = 0" berechnet wird, es sei denn, es wird in einen Float-Typ wie "fps = 100" umgewandelt!