Синхронизация тем в ROS с использованием временных меток

#python #camera #synchronization #ros #lidar

#питон #камера #синхронизация #розенкранц #лидар

Вопрос:

У меня есть 2 пакета с данными, один с данными камеры, другой с данными лидара, и я хочу синхронизировать темы, перечисленные ниже, чтобы получить что-то вроде набора данных китти.

Темы Типы Количество сообщений Частота
/os_cloud_node/точки sensor_msgs/PointCloud2 3111 20.115842
/cam/realsense_d435_1/цвет/изображение sensor_msgs/Изображение 1488 12.216965

Я попытался синхронизировать данные с помощью частоты (сценарии ниже). Я знаю, что мое упрощение сильно искажает результат этих операций, и мои данные очень быстро расходятся.

Как я должен сделать это правильно, используя метки времени? Я действительно не знаю, как их сравнивать, когда они появляются с разной частотой и в очень малых количествах.

camera_loader.py

 import rosbag from helper import convert2image  bag = rosbag.Bag('data/cam2.bag') print("# File content:") print(bag.get_type_and_topic_info())  messages = bag.read_messages(topics=["/cam/realsense_d435_1/color/image_raw"])  name=0  for msg in messages:  tittle="raw_images/" f"{name:06d}"  ".png"  name=name 1  print(tittle)  i =convert2image(msg.message)  i.save(tittle)  

lidar_loader.py

 import rosbag import open3d as o3d from helper import convert2pointcloud  bag = rosbag.Bag('data/lidar2.bag')  print("# File content:") print(bag.get_type_and_topic_info()) messages = bag.read_messages(topics=["/os_cloud_node/points"])  name=0 counter=0  for msg in messages:  if counter % 2 == 0:  tittle = "lidar_points/" f"{name:06d}" ".pcd"  print(tittle)  name = name 1  pcd = convert2pointcloud(msg)  o3d.io.write_point_cloud(tittle, pcd, write_ascii=False, compressed=False, print_progress=False)  counter=counter 1