opengnc.sensors package
Submodules
opengnc.sensors.altimeter module
Radar / altimeter sensor model.
- class opengnc.sensors.altimeter.Altimeter(noise_std: float = 1.0, bias: float = 0.0, name: str = 'Altimeter')[source]
Bases:
SensorRadar / altimeter sensor model.
- frame: str | None = 'local_vertical'
- measure(true_altitude: float | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'altitude'
- units: str | tuple[str, ...] = 'm'
opengnc.sensors.camera module
Simple pinhole camera model.
- class opengnc.sensors.camera.Camera(focal_length: float = 1.0, resolution: tuple[int, int] = (1024, 1024), sensor_size: tuple[float, float] = (1.0, 1.0), noise_std: float = 0.0, name: str = 'Camera')[source]
Bases:
SensorSimple pinhole camera model.
- frame: str | None = 'image_plane'
- measure(true_point_body: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'pixel_coordinates'
- units: str | tuple[str, ...] = 'px'
opengnc.sensors.factory module
Sensor factory helpers for configuration-driven sensor suites.
opengnc.sensors.gnss_receiver module
GNSS receiver sensor model.
- class opengnc.sensors.gnss_receiver.GNSSReceiver(pos_noise_std: float = 10.0, vel_noise_std: float = 0.1, name: str = 'GNSS', pos_bias: ndarray | None = None, vel_bias: ndarray | None = None, **kwargs: Any)[source]
Bases:
SensorGNSS receiver sensor model.
- frame: str | None = 'state_frame'
- measure(true_pos: ndarray | None = None, true_vel: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'position_velocity'
- units: str | tuple[str, ...] = ('m', 'm/s')
opengnc.sensors.gyroscope module
Gyroscope sensor model.
- class opengnc.sensors.gyroscope.Gyroscope(noise_std: float = 0.0, bias_stability: float = 0.0, initial_bias: ndarray | None = None, dt: float = 0.1, misalignment: ndarray | None = None, scale_factor: float | ndarray = 1.0, name: str = 'Gyroscope')[source]
Bases:
SensorGyroscope sensor model.
- frame: str | None = 'body'
- measure(true_omega: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'angular_rate'
- units: str | tuple[str, ...] = 'rad/s'
opengnc.sensors.horizon_sensor module
Earth / horizon sensor model.
- class opengnc.sensors.horizon_sensor.HorizonSensor(noise_std: float = 0.01, bias: ndarray | None = None, name: str = 'HorizonSensor')[source]
Bases:
SensorEarth / horizon sensor model.
- frame: str | None = 'body'
- measure(true_nadir_vec: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'nadir_vector'
- units: str | tuple[str, ...] = 'unit_vector'
opengnc.sensors.imu module
Inertial Measurement Unit (IMU) with accelerometer and gyroscope channels.
- class opengnc.sensors.imu.Accelerometer(noise_std: float = 0.0, bias: ndarray | None = None, scale_factor: float = 1.0, name: str = 'Accelerometer')[source]
Bases:
SensorAccelerometer sensor model.
- frame: str | None = 'body'
- measure(true_accel: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'specific_force'
- units: str | tuple[str, ...] = 'm/s^2'
- class opengnc.sensors.imu.IMU(gyro_params: dict | None = None, accel_params: dict | None = None, name: str = 'IMU')[source]
Bases:
SensorIMU combining gyroscope and accelerometer channels.
- frame: str | None = 'body'
- measure(true_omega: ndarray | None = None, true_accel: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'imu'
- units: str | tuple[str, ...] = ('rad/s', 'm/s^2')
opengnc.sensors.lidar module
Lidar sensor model.
- class opengnc.sensors.lidar.Lidar(range_noise_std: float = 0.01, los_noise_std: float = 0.001, name: str = 'Lidar')[source]
Bases:
SensorLidar sensor model.
- frame: str | None = 'body'
- measure(true_relative_pos: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'range_los'
- units: str | tuple[str, ...] = ('m', 'unit_vector')
opengnc.sensors.magnetometer module
Magnetometer sensor model.
- class opengnc.sensors.magnetometer.Magnetometer(noise_std: float = 0.0, bias: ndarray | None = None, misalignment: ndarray | None = None, scale_factor: float | ndarray = 1.0, name: str = 'Magnetometer')[source]
Bases:
SensorMagnetometer sensor model.
- frame: str | None = 'body'
- measure(true_mag_vec_body: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'magnetic_field'
- units: str | tuple[str, ...] = 'T'
opengnc.sensors.sensor module
Abstract sensor interfaces and standardized measurement containers.
- class opengnc.sensors.sensor.Sensor(name: str = 'Sensor')[source]
Bases:
ABCAbstract base class for all sensors.
- apply_calibration(value: ndarray | float, misalignment: ndarray | None = None, scale_factor: ndarray | float = 1.0, bias: ndarray | float | None = None) ndarray | float[source]
- apply_fogm_noise(current_val: ndarray | float, sigma: float, tau: float, dt: float) ndarray | float[source]
- build_measurement(raw_value: Any, *, covariance: ndarray | None = None, metadata: dict[str, Any] | None = None, frame: str | None = None) SensorMeasurement[source]
Build a standardized measurement packet from a raw value.
- fault_state: str | None
- frame: str | None = None
- abstractmethod measure(*args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- noise_model() SensorNoiseModel[source]
- noise_model_name = 'gaussian'
- quantity = 'measurement'
- stuck_value: ndarray | float | None
- units: str | tuple[str, ...] = ''
- class opengnc.sensors.sensor.SensorMeasurement(sensor_name: str, quantity: str, value: ~numpy.ndarray, units: str | tuple[str, ...], frame: str | None, covariance: ~numpy.ndarray, noise_model: ~opengnc.sensors.sensor.SensorNoiseModel, metadata: dict[str, ~typing.Any] = <factory>)[source]
Bases:
objectStandardized measurement packet emitted by all sensors.
- covariance: ndarray
- frame: str | None
- metadata: dict[str, Any]
- noise_model: SensorNoiseModel
- quantity: str
- sensor_name: str
- units: str | tuple[str, ...]
- value: ndarray
- class opengnc.sensors.sensor.SensorNoiseModel(model: str, std_dev: ndarray, bias: ndarray | None = None, correlation_time: float | None = None, metadata: dict[str, ~typing.Any]=<factory>)[source]
Bases:
objectDescribe a sensor’s stochastic error convention.
- bias: ndarray | None = None
- correlation_time: float | None = None
- metadata: dict[str, Any]
- model: str
- std_dev: ndarray
opengnc.sensors.star_catalog module
Utility for managing and searching star catalogs.
- class opengnc.sensors.star_catalog.StarCatalog(catalog_path: str | None = None)[source]
Bases:
objectUtility for managing and searching star catalogs (e.g., Hipparcos).
- get_stars_in_fov(boresight: ndarray, fov_deg: float, min_mag: float | None = None) list[_StarEntry][source]
Filters stars within a given Field of View (FOV).
- Parameters:
boresight (np.ndarray) – Unit vector of the camera boresight in J2000.
fov_deg (float) – Full Field of View in degrees.
min_mag (float) – Minimum magnitude (brightness threshold).
- Returns:
list
- Return type:
Stars within the FOV.
opengnc.sensors.star_tracker module
Star tracker sensor model.
- class opengnc.sensors.star_tracker.StarTracker(noise_std: float = 0.0, bias: ndarray | None = None, name: str = 'StarTracker')[source]
Bases:
SensorStar tracker attitude sensor.
- frame: str | None = 'body_to_inertial'
- measure(true_quat: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'attitude_quaternion'
- units: str | tuple[str, ...] = 'quaternion'
opengnc.sensors.sun_sensor module
Sun sensor model.
- class opengnc.sensors.sun_sensor.SunSensor(noise_std: float = 0.0, bias: ndarray | None = None, misalignment: ndarray | None = None, scale_factor: float | ndarray = 1.0, name: str = 'SunSensor')[source]
Bases:
SensorSun sensor model.
- frame: str | None = 'body'
- measure(true_sun_vec_body: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'sun_vector'
- units: str | tuple[str, ...] = 'unit_vector'
opengnc.sensors.sun_sensor_array module
Coarse sun sensor array model.
- class opengnc.sensors.sun_sensor_array.CoarseSunSensorArray(boresights: list[ndarray] | None = None, i_max: float = 1.0, noise_std: float = 0.01, name: str = 'CSSArray')[source]
Bases:
SensorArray of coarse sun sensors (CSS).
- frame: str | None = 'body'
- measure(true_sun_vec: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'sun_intensity_array'
- units: str | tuple[str, ...] = 'sensor_unit'
Module contents
- class opengnc.sensors.Accelerometer(noise_std: float = 0.0, bias: ndarray | None = None, scale_factor: float = 1.0, name: str = 'Accelerometer')[source]
Bases:
SensorAccelerometer sensor model.
- frame: str | None = 'body'
- measure(true_accel: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'specific_force'
- units: str | tuple[str, ...] = 'm/s^2'
- class opengnc.sensors.Altimeter(noise_std: float = 1.0, bias: float = 0.0, name: str = 'Altimeter')[source]
Bases:
SensorRadar / altimeter sensor model.
- frame: str | None = 'local_vertical'
- measure(true_altitude: float | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'altitude'
- units: str | tuple[str, ...] = 'm'
- class opengnc.sensors.Camera(focal_length: float = 1.0, resolution: tuple[int, int] = (1024, 1024), sensor_size: tuple[float, float] = (1.0, 1.0), noise_std: float = 0.0, name: str = 'Camera')[source]
Bases:
SensorSimple pinhole camera model.
- frame: str | None = 'image_plane'
- measure(true_point_body: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'pixel_coordinates'
- units: str | tuple[str, ...] = 'px'
- class opengnc.sensors.CoarseSunSensorArray(boresights: list[ndarray] | None = None, i_max: float = 1.0, noise_std: float = 0.01, name: str = 'CSSArray')[source]
Bases:
SensorArray of coarse sun sensors (CSS).
- frame: str | None = 'body'
- measure(true_sun_vec: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'sun_intensity_array'
- units: str | tuple[str, ...] = 'sensor_unit'
- class opengnc.sensors.GNSSReceiver(pos_noise_std: float = 10.0, vel_noise_std: float = 0.1, name: str = 'GNSS', pos_bias: ndarray | None = None, vel_bias: ndarray | None = None, **kwargs: Any)[source]
Bases:
SensorGNSS receiver sensor model.
- frame: str | None = 'state_frame'
- measure(true_pos: ndarray | None = None, true_vel: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'position_velocity'
- units: str | tuple[str, ...] = ('m', 'm/s')
- class opengnc.sensors.Gyroscope(noise_std: float = 0.0, bias_stability: float = 0.0, initial_bias: ndarray | None = None, dt: float = 0.1, misalignment: ndarray | None = None, scale_factor: float | ndarray = 1.0, name: str = 'Gyroscope')[source]
Bases:
SensorGyroscope sensor model.
- frame: str | None = 'body'
- measure(true_omega: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'angular_rate'
- units: str | tuple[str, ...] = 'rad/s'
- class opengnc.sensors.HorizonSensor(noise_std: float = 0.01, bias: ndarray | None = None, name: str = 'HorizonSensor')[source]
Bases:
SensorEarth / horizon sensor model.
- frame: str | None = 'body'
- measure(true_nadir_vec: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'nadir_vector'
- units: str | tuple[str, ...] = 'unit_vector'
- class opengnc.sensors.IMU(gyro_params: dict | None = None, accel_params: dict | None = None, name: str = 'IMU')[source]
Bases:
SensorIMU combining gyroscope and accelerometer channels.
- frame: str | None = 'body'
- measure(true_omega: ndarray | None = None, true_accel: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'imu'
- units: str | tuple[str, ...] = ('rad/s', 'm/s^2')
- class opengnc.sensors.Lidar(range_noise_std: float = 0.01, los_noise_std: float = 0.001, name: str = 'Lidar')[source]
Bases:
SensorLidar sensor model.
- frame: str | None = 'body'
- measure(true_relative_pos: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'range_los'
- units: str | tuple[str, ...] = ('m', 'unit_vector')
- class opengnc.sensors.Magnetometer(noise_std: float = 0.0, bias: ndarray | None = None, misalignment: ndarray | None = None, scale_factor: float | ndarray = 1.0, name: str = 'Magnetometer')[source]
Bases:
SensorMagnetometer sensor model.
- frame: str | None = 'body'
- measure(true_mag_vec_body: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'magnetic_field'
- units: str | tuple[str, ...] = 'T'
- class opengnc.sensors.Sensor(name: str = 'Sensor')[source]
Bases:
ABCAbstract base class for all sensors.
- apply_calibration(value: ndarray | float, misalignment: ndarray | None = None, scale_factor: ndarray | float = 1.0, bias: ndarray | float | None = None) ndarray | float[source]
- apply_fogm_noise(current_val: ndarray | float, sigma: float, tau: float, dt: float) ndarray | float[source]
- build_measurement(raw_value: Any, *, covariance: ndarray | None = None, metadata: dict[str, Any] | None = None, frame: str | None = None) SensorMeasurement[source]
Build a standardized measurement packet from a raw value.
- fault_state: str | None
- frame: str | None = None
- abstractmethod measure(*args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- noise_model() SensorNoiseModel[source]
- noise_model_name = 'gaussian'
- quantity = 'measurement'
- stuck_value: ndarray | float | None
- units: str | tuple[str, ...] = ''
- class opengnc.sensors.SensorMeasurement(sensor_name: str, quantity: str, value: ~numpy.ndarray, units: str | tuple[str, ...], frame: str | None, covariance: ~numpy.ndarray, noise_model: ~opengnc.sensors.sensor.SensorNoiseModel, metadata: dict[str, ~typing.Any] = <factory>)[source]
Bases:
objectStandardized measurement packet emitted by all sensors.
- covariance: ndarray
- frame: str | None
- metadata: dict[str, Any]
- noise_model: SensorNoiseModel
- quantity: str
- sensor_name: str
- units: str | tuple[str, ...]
- value: ndarray
- class opengnc.sensors.SensorNoiseModel(model: str, std_dev: ndarray, bias: ndarray | None = None, correlation_time: float | None = None, metadata: dict[str, ~typing.Any]=<factory>)[source]
Bases:
objectDescribe a sensor’s stochastic error convention.
- bias: ndarray | None = None
- correlation_time: float | None = None
- metadata: dict[str, Any]
- model: str
- std_dev: ndarray
- class opengnc.sensors.StarTracker(noise_std: float = 0.0, bias: ndarray | None = None, name: str = 'StarTracker')[source]
Bases:
SensorStar tracker attitude sensor.
- frame: str | None = 'body_to_inertial'
- measure(true_quat: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'attitude_quaternion'
- units: str | tuple[str, ...] = 'quaternion'
- class opengnc.sensors.SunSensor(noise_std: float = 0.0, bias: ndarray | None = None, misalignment: ndarray | None = None, scale_factor: float | ndarray = 1.0, name: str = 'SunSensor')[source]
Bases:
SensorSun sensor model.
- frame: str | None = 'body'
- measure(true_sun_vec_body: ndarray | None = None, *args: Any, **kwargs: Any) SensorMeasurement[source]
Generate a standardized measurement packet.
- quantity = 'sun_vector'
- units: str | tuple[str, ...] = 'unit_vector'