Beispiel #1
0
    def test_set_extrinsics(self):
        lidar_1 = Lidar("test")
        lidar_1.set_extrinsics()
        assert lidar_1.extrinsics == Transform3D()

        lidar_2 = Lidar("test")
        lidar_2.set_extrinsics(_TRANSLATION, _ROTATION)
        assert lidar_2.extrinsics == Transform3D(_TRANSLATION, _ROTATION)
    def test_import_cloud_files_to_fusiondataset(self, accesskey, url, config_name):
        gas_client = GAS(access_key=accesskey, url=url)
        try:
            cloud_client = gas_client.get_cloud_client(config_name)
        except ResourceNotExistError:
            pytest.skip(f"skip this case because there's no {config_name} config")

        auth_data = cloud_client.list_auth_data("tests")[:5]
        dataset_name = get_dataset_name()
        dataset_client = gas_client.create_dataset(dataset_name, True, config_name=config_name)

        dataset = FusionDataset(name=dataset_name)
        segment = dataset.create_segment("Segment1")
        lidar = Lidar("LIDAR")
        segment.sensors.add(lidar)

        for data in auth_data:
            data.label.classification = Classification("cat", attributes={"color": "red"})
            frame = Frame()
            frame["LIDAR"] = data
            segment.append(frame)

        dataset_client = gas_client.upload_dataset(dataset, jobs=5)
        dataset_client.commit("import data")

        segment1 = FusionSegment("Segment1", client=dataset_client)
        assert len(segment1) == len(segment)
        assert segment1[0]["LIDAR"].path == segment[0]["LIDAR"].path.split("/")[-1]
        assert segment1[0]["LIDAR"].label.classification.category == "cat"
        assert segment1[0]["LIDAR"].label.classification.attributes["color"] == "red"
        assert len(auth_data) == len(segment)

        gas_client.delete_dataset(dataset_name)
Beispiel #3
0
 def test_loads(self):
     sensors = Sensors.loads(_SENSORS_DATA)
     assert sensors[_LIDAR_DATA["name"]] == Lidar.loads(_LIDAR_DATA)
     assert sensors[_RADAR_DATA["name"]] == Radar.loads(_RADAR_DATA)
     assert sensors[_CAMERA_DATA["name"]] == Camera.loads(_CAMERA_DATA)
     assert sensors[_FISHEYE_CAMERA_DATA["name"]] == FisheyeCamera.loads(
         _FISHEYE_CAMERA_DATA)
Beispiel #4
0
    def test_dumps(self):
        sensors = Sensors()
        sensors.add(Lidar.loads(_LIDAR_DATA))
        sensors.add(Radar.loads(_RADAR_DATA))
        sensors.add(Camera.loads(_CAMERA_DATA))
        sensors.add(FisheyeCamera.loads(_FISHEYE_CAMERA_DATA))

        assert sensors.dumps() == _SENSORS_DATA
Beispiel #5
0
def _load_sensors(calib_path: str) -> Sensors:
    try:
        import yaml  # pylint: disable=import-outside-toplevel
    except ModuleNotFoundError as error:
        raise ModuleImportError(module_name=error.name,
                                package_name="pyyaml") from error

    sensors = Sensors()

    lidar = Lidar("LIDAR")
    lidar.set_extrinsics()
    sensors.add(lidar)

    with open(os.path.join(calib_path, "extrinsics.yaml"),
              "r",
              encoding="utf-8") as fp:
        extrinsics = yaml.load(fp, Loader=yaml.FullLoader)

    for camera_calibration_file in glob(os.path.join(calib_path,
                                                     "[0-9]*.yaml")):
        with open(camera_calibration_file, "r", encoding="utf-8") as fp:
            camera_calibration = yaml.load(fp, Loader=yaml.FullLoader)

        # camera_calibration_file looks like:
        # /path-to-CADC/2018_03_06/calib/00.yaml
        camera_name = f"CAM{os.path.splitext(os.path.basename(camera_calibration_file))[0]}"
        camera = Camera(camera_name)
        camera.description = camera_calibration["camera_name"]

        camera.set_extrinsics(matrix=extrinsics[f"T_LIDAR_{camera_name}"])

        camera_matrix = camera_calibration["camera_matrix"]["data"]
        camera.set_camera_matrix(
            matrix=[camera_matrix[:3], camera_matrix[3:6], camera_matrix[6:9]])

        distortion = camera_calibration["distortion_coefficients"]["data"]
        camera.set_distortion_coefficients(
            **dict(zip(("k1", "k2", "p1", "p2", "k3"), distortion)))

        sensors.add(camera)
    return sensors
Beispiel #6
0
 def test_dumps(self):
     lidar = Lidar("Lidar1")
     lidar.set_extrinsics(_TRANSLATION, _ROTATION)
     contents = lidar.dumps()
     assert contents == _LIDAR_DATA
Beispiel #7
0
 def test_set_rotation(self):
     lidar = Lidar("test")
     lidar.set_rotation(1, 2, 3, 4)
     assert lidar.extrinsics.rotation == _ROTATION
Beispiel #8
0
 def test_set_translation(self):
     lidar = Lidar("test")
     lidar.set_translation(x=1, y=2, z=3)
     assert lidar.extrinsics.translation == _TRANSLATION
Beispiel #9
0
 def test_init(self):
     lidar = Lidar("Lidar1")
     assert lidar.name == "Lidar1"