Я установил ROS melodic
версию в Ubuntu 18.04
. Я запускаю rosbag
в фоновом режиме, чтобы издеваться над камерами в сообщениях rostopics
. Я установил имена камер в rosparams
и повторил их, чтобы зафиксировать темы каждой камеры. Я использую message_filter
ApproximateTimeSynchronizer
для получения синхронизированных по времени данных, как указано в официальной документации, http://wiki.ros.org/message_filters
Но большую часть времени функция обратного вызова для ApproximateTimeSynchronizer
не вызывается/имеет задержку. Фрагмент кода, который я использую, приведен ниже:
Что я здесь делаю неправильно?
def camera_callback(*args): pass # Other logic comes here rospy.init_node('my_listener', anonymous=True) camera_object_data = [] for camera_name in rospy.get_param('/my/cameras'): camera_object_data.append(message_filters.Subscriber( '/{}/hd/camera_info'.format(camera_name), CameraInfo)) camera_object_data.append(message_filters.Subscriber( '/{}/hd/image_color_rect'.format(camera_name), Image)) camera_object_data.append(message_filters.Subscriber( '/{}/qhd/image_depth_rect'.format(camera_name), Image)) camera_object_data.append(message_filters.Subscriber( '/{}/qhd/points'.format(camera_name), PointCloud2) topic_list = [filter_obj for filter_obj in camera_object_data] ts = message_filters.ApproximateTimeSynchronizer(topic_list, 10, 1, allow_headerless=True) ts.registerCallback(camera_callback) rospy.spin()