[PYTHON] [Memo] Abonnieren Sie Nachrichten aus mehreren Themen mit ROS

Einführung

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

Methode

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!

Recommended Posts

[Memo] Abonnieren Sie Nachrichten aus mehreren Themen mit ROS
Mit FastAPI können nicht mehrere Bilder aus dem Formular hochgeladen werden
Entfernen Sie Überschriften aus CSV-Dateien mit mehreren Formaten mit Python