[PYTHON] [Mémo] Abonnez-vous aux messages de plusieurs sujets avec ROS

introduction

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

Méthode

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 ''.!

Recommended Posts

[Mémo] Abonnez-vous aux messages de plusieurs sujets avec ROS
Impossible de télécharger plusieurs images à partir du formulaire avec FastAPI
Supprimer les en-têtes de fichiers CSV à plusieurs formats avec python