Dans ROS, vous vous abonnez souvent à plusieurs sujets, alors notez comment le faire à ce moment-là.
Les articles suivants ont été très utiles. Recevoir des messages de manière synchrone de plusieurs sujets sur ROS
Utilisez `` message_filters '' pour vous abonner à plusieurs messages. Par exemple, si vous étendez l'écouteur des didacticiels ROS,
#/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()
Plusieurs abonnés sont synchronisés avec `` message_filters.ApproximateTimeSynchronizer () ''.
Dans le cas de python2, notez qu'il sera calculé comme delay = 0
à moins qu'il ne soit transformé en un type float comme `` fps = 100 ''.!