def test_loading_image_lidar(data_loader: ArgoverseTrackingLoader) -> None: camera = CAMERA_LIST[0] log = "1" image_1 = data_loader.get_image_at_timestamp(0, camera, log) image_2 = data_loader.get_image_list_sync(camera, log, load=True)[0] image_3 = data_loader.get_image(0, camera, log) image_4 = data_loader.get_image_sync(0, camera, log) assert np.array_equal(image_1, image_2) and np.array_equal( image_1, image_3) and np.array_equal(image_1, image_4) lidar_0 = data_loader.get_lidar(0, log) lidar_gt = np.array([ [0.0, 0.0, 5.0], [1.0, 0.0, 5.0], [2.0, 0.0, 5.0], [3.0, 0.0, 5.0], [4.0, 0.0, 5.0], [5.0, 0.0, 5.0], [6.0, 0.0, 5.0], [7.0, 0.0, 5.0], [8.0, 0.0, 5.0], [9.0, 0.0, 5.0], ]) assert np.array_equal(lidar_0, lidar_gt)
def extract_datapoints(root_dir, test_set=False): argoverse_loader = ArgoverseTrackingLoader(root_dir=root_dir) data = [] for log_id in argoverse_loader.log_list: # print(f"Processing log: {os.path.join(root_dir, log_id)}", end="\r") argoverse_data = argoverse_loader.get(log_id=log_id) # calibL = argoverse_data.get_calibration(camera=camL, log_id=log_id) # calibR = argoverse_data.get_calibration(camera=camR, log_id=log_id) calibs = {} for cam in STEREO_CAMERA_LIST + RING_CAMERA_LIST: calibs[cam] = argoverse_data.get_calibration(camera=cam, log_id=log_id) count = 0 for lidar_timestamp in argoverse_data.lidar_timestamp_list: data_point = dict() data_point["log_id"] = log_id data_point["frame_id"] = count count += 1 for cam in STEREO_CAMERA_LIST + RING_CAMERA_LIST: cam_timestamp = argoverse_loader.sync.get_closest_cam_channel_timestamp( lidar_timestamp=lidar_timestamp, camera_name=cam, log_id=log_id) if cam_timestamp is not None: data_point[cam] = argoverse_loader.get_image_at_timestamp( timestamp=cam_timestamp, camera=cam, log_id=log_id, load=False) else: data_point[cam] = None data_point["timestamp"] = lidar_timestamp data_point["lidar"] = argoverse_loader.timestamp_lidar_dict[ lidar_timestamp] data_point["calibs"] = calibs d = argoverse_data.get_pose( argoverse_data.get_idx_from_timestamp( lidar_timestamp)).translation r = Rotation.from_dcm( argoverse_data.get_pose( argoverse_data.get_idx_from_timestamp( lidar_timestamp)).rotation) data_point["pose"] = (d, r.as_euler('xyz')) if not test_set: data_point["labels"] = argoverse_loader.get_label_object( idx=argoverse_loader.lidar_timestamp_list.index( lidar_timestamp), log_id=log_id) data.append(data_point) return data