feat: qualify complete RELLIS ground dataset
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
"""Train-calibrated, algorithm-scoped RELLIS OS1 Patchwork++ profile."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import math
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Final
|
||||
|
||||
RELLIS_PATCHWORK_PROFILE_SCHEMA: Final = "missioncore.rellis-patchwork-profile/v1"
|
||||
RELLIS_URDF_URL: Final = (
|
||||
"https://raw.githubusercontent.com/unmannedlab/RELLIS-3D/"
|
||||
"c17a118fcaed1559f03cc32cc3a91dedc557f8b8/"
|
||||
"catkin_ws/src/platform_description/urdf/warthog.urdf.xacro"
|
||||
)
|
||||
RELLIS_URDF_SHA256: Final = (
|
||||
"bcb66a05b8818f06479bb4a17ce93e9d66cb8fdaab726c437596807288116ac3"
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class RellisPatchworkProfile:
|
||||
"""Frozen provider profile derived without looking at validation labels."""
|
||||
|
||||
patchwork_sensor_height_proxy_m: float
|
||||
calibration_identity_sha256: str
|
||||
calibration_frame_count: int
|
||||
calibration_median_absolute_deviation_m: float
|
||||
patchwork_minimum_range_m: float = 2.7
|
||||
patchwork_maximum_range_m: float = 80.0
|
||||
profile_id: str = "rellis-warthog-os1-patchwork/v1"
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
values = (
|
||||
self.patchwork_sensor_height_proxy_m,
|
||||
self.calibration_median_absolute_deviation_m,
|
||||
self.patchwork_minimum_range_m,
|
||||
self.patchwork_maximum_range_m,
|
||||
)
|
||||
if (
|
||||
not self.profile_id
|
||||
or not all(math.isfinite(value) for value in values)
|
||||
or not 0.5 <= self.patchwork_sensor_height_proxy_m <= 3.0
|
||||
or not 5 <= self.calibration_frame_count <= 256
|
||||
or self.calibration_median_absolute_deviation_m < 0
|
||||
or not 0 < self.patchwork_minimum_range_m < self.patchwork_maximum_range_m
|
||||
or len(self.calibration_identity_sha256) != 64
|
||||
or any(
|
||||
character not in "0123456789abcdef"
|
||||
for character in self.calibration_identity_sha256
|
||||
)
|
||||
):
|
||||
raise ValueError("RELLIS Patchwork++ profile is invalid")
|
||||
|
||||
def to_dict(self) -> dict[str, Any]:
|
||||
return {
|
||||
"schema_version": RELLIS_PATCHWORK_PROFILE_SCHEMA,
|
||||
"profile_id": self.profile_id,
|
||||
"source_id": "rellis-3d/v1.1",
|
||||
"representation": "native-scan",
|
||||
"sensor_frame": {
|
||||
"frame_id": "sensor/lidar/os1",
|
||||
"handedness": "right",
|
||||
"x": "forward",
|
||||
"y": "left",
|
||||
"z": "up",
|
||||
"one_revolution": True,
|
||||
},
|
||||
"height": {
|
||||
"sensor_above_ground_m": self.patchwork_sensor_height_proxy_m,
|
||||
"evidence": "train-split-ground-label-calibration",
|
||||
"calibration_frame_count": self.calibration_frame_count,
|
||||
"median_absolute_deviation_m": (
|
||||
self.calibration_median_absolute_deviation_m
|
||||
),
|
||||
"calibration_identity_sha256": self.calibration_identity_sha256,
|
||||
"validation_labels_used": False,
|
||||
},
|
||||
"patchworkpp": {
|
||||
"provider_id": "patchworkpp/v1.4.1",
|
||||
"minimum_range_m": self.patchwork_minimum_range_m,
|
||||
"maximum_range_m": self.patchwork_maximum_range_m,
|
||||
"enable_rnr": True,
|
||||
"enable_rvpf": True,
|
||||
"enable_tgr": True,
|
||||
},
|
||||
"evidence": {
|
||||
"vehicle_urdf": {
|
||||
"url": RELLIS_URDF_URL,
|
||||
"sha256": RELLIS_URDF_SHA256,
|
||||
"use": "topology-cross-check-only",
|
||||
"exact_physical_height_claimed": False,
|
||||
}
|
||||
},
|
||||
"scope": {
|
||||
"patchworkpp_eligible": True,
|
||||
"normalized_scan_produced": False,
|
||||
"complete_vehicle_transform_known": False,
|
||||
"deskew_claimed": False,
|
||||
},
|
||||
"authority": {
|
||||
"qualification_only": True,
|
||||
"navigation_or_safety_accepted": False,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user