Вместо использования TimeSynchronizer
я использовал ApproximateTimeSynchronizer
, и это сработало.Итак, я изменил код на -
class sync_listener:
def __init__(self):
self.image_sub = message_filters.Subscriber('camera/rgb/image_color', Image)
self.info_sub = message_filters.Subscriber('camera/projector/camera_info', CameraInfo)
self.ts = message_filters.ApproximateTimeSynchronizer([self.image_sub, self.info_sub], 1, 1) # Changed code
self.ts.registerCallback(self.callback)
def callback(self, image, camera_info):
print("done")
def main(args):
ls = sync_listener()
rospy.init_node('sample_message_filters', anonymous=True)
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
if __name__ == '__main__':
main(sys.argv)
Прежде чем найти это решение, я просто использовал глобальные переменные для доступа к сообщению первой темы, назначив сообщение глобальной переменной в обратном вызове и использовал его дляобратный вызов второго, и вот как я смог работать с обоими.Это не чисто, но экономит часы разочарования.