Skip to content

RPE Result

rpe_result

RelativeTrajectoryDeviations dataclass

RelativeTrajectoryDeviations(
    pos_dev: Dict[float, List[float]],
    rot_dev: Dict[float, List[float]],
    pair_distance: Dict[float, List[float]],
    pair_distance_unit: PairDistanceUnit = METER,
)

Container holding relative (drift) pose deviations grouped by separation.

Relative deviations quantify drift between pose pairs separated by a certain spatial distance (meters) or temporal offset (seconds). Each key in the dictionaries corresponds to a separation value (bucket) and its list contains per-pair drift samples for that bucket.

Attributes:

  • pos_dev (Dict[float, List[float]]) –

    Mapping from pair distance to a list of position drift magnitudes. Units depend on pair_distance_unit; values are normalized per 100 m (expressed as percentage) when distance-based.

  • rot_dev (Dict[float, List[float]]) –

    Mapping from pair distance to a list of orientation drift samples in radians.

  • pair_distance (Dict[float, List[float]]) –

    Raw separation measurements (meters or seconds) for each bucket, used for computing mean bucket spacing and step size.

  • pair_distance_unit (PairDistanceUnit) –

    Enumeration indicating whether bucket keys represent spatial separation (METER) or temporal separation (SECOND). Affects drift normalization and reporting units in RPEResult.

Properties

num_pairs (int): Total number of evaluated pose pairs across all buckets.

RPEResult

RPEResult(rpe_dev: RelativeTrajectoryDeviations, name: str)

This class represents a set of relative trajectory deviations

Relative trajectory deviations describe relative pose deviations between two trajectories. The deviations are calculated by comparing pairs of positions and orientations in the test and reference trajectory.

Attributes:

Source code in trajectopy\results\rpe_result.py
def __init__(
    self,
    rpe_dev: RelativeTrajectoryDeviations,
    name: str,
) -> None:
    self.name = name
    self.rpe_dev = rpe_dev

rot_rpe property

rot_rpe: float

Returns the average rotation drift in radians per 100 meters.

Returns:

  • float ( float ) –

    Average rotation drift.

property_dict property

property_dict: Dict[str, str]

Returns a dictionary containing the properties of the deviation set.

This is relevant for time based comparisons, when pose-pairs are defined by a time difference.

Returns:

  • Dict[str, str]

    Dict[str, str]: Dictionary of property names and values.

from_file classmethod

from_file(filename: str)

Reads a set of relative trajectory deviations from a file.

Source code in trajectopy\results\rpe_result.py
@classmethod
def from_file(cls, filename: str):
    """Reads a set of relative trajectory deviations from a file."""
    header_data = HeaderData.from_file(filename)
    deviation_data = pd.read_csv(filename, comment="#")

    pos_dev: Dict[float, List[float]] = {}
    rot_dev: Dict[float, List[float]] = {}
    pair_distance: Dict[float, List[float]] = {}

    last_index = 0
    for index in header_data.num_pairs:
        dev_block = deviation_data.iloc[last_index : last_index + index, :]
        pair_distances = dev_block["pair_distance"].to_numpy(dtype=float)
        pos_devs = dev_block["pos_dev"].to_numpy(dtype=float)
        rot_devs = dev_block["rot_dev"].to_numpy(dtype=float) if "rot_dev" in deviation_data.columns else []

        mean_dist = np.mean(pair_distances)
        pair_distance[mean_dist] = list(pair_distances)
        pos_dev[mean_dist] = list(pos_devs)
        rot_dev[mean_dist] = list(rot_devs)

        last_index += index

    rpe_dev = RelativeTrajectoryDeviations(
        pair_distance=pair_distance,
        pos_dev=pos_dev,
        rot_dev=rot_dev,
        pair_distance_unit=header_data.relative_dist_unit,
    )

    return cls(rpe_dev=rpe_dev, name=header_data.name)