Source code for opengnc.sensors.altimeter

"""Radar / altimeter sensor model."""

from __future__ import annotations

from typing import Any

import numpy as np

from opengnc.sensors.sensor import Sensor, SensorMeasurement


[docs] class Altimeter(Sensor): """Radar / altimeter sensor model.""" quantity = "altitude" units = "m" frame = "local_vertical" def __init__(self, noise_std: float = 1.0, bias: float = 0.0, name: str = "Altimeter") -> None: super().__init__(name) self.noise_std = noise_std self.bias = bias
[docs] def measure(self, true_altitude: float | None = None, *args: Any, **kwargs: Any) -> SensorMeasurement: if true_altitude is None: if not args: raise ValueError("true_altitude is required.") true_altitude = float(args[0]) measured_alt = float(max(0.0, true_altitude + self.bias + np.random.normal(0, self.noise_std))) return self.build_measurement(measured_alt)