1. CentroidingIdeal#

class CentroidingIdeal(name: str, camera: Camera, sigma: ArrayWUnits = None, state_definition: list = None, sequence_definition: list = None)#

Bases: Measurement

Models the optical ideal centroiding measurement model.

This model assumes a centroiding measurements simulated via a line-of-sight unitary vector towards the target body and using a Pinhole camera model.

Parameters:
  • name (str) – name of the measurement model

  • camera (Camera) – camera object from scarabaeus

  • sigma (float, optional) – Measurement standard deviation for both xy directions in image plane. Optional, defaults to None.

  • state_definition (list, optional) – StateVector definition list. Optional, defaults to None.

  • sequence_definition (list, optional) – sequence definition list. Optional, defaults to None.

:raises RuntimeError(`'multiple units are extracted from the measurements.'): | Raised when the units extracted from the measurements are not consistent with each other. :raises RuntimeError(``’Please provide an EpochArray or provide start and end Epochs.’``:py:class:`): | Raised when the time on which to generate measurements is not an EpochArray object or is not passed as a begin and end pair.

See also

scarabaeus.Measurement

parent class of each specific measurement model.

References

“A Tutorial on Horizon-Based Optical Navigation and Attitude Determination with Space Imaging Systems”, John A. Christian, IEEE-Access, Vol. 9, 19819-19853, 2021.

Attributes

camera

The camera object taking measurements.

instrument

The instrument.

name

The name of the Centroiding model.

sequence_definition

The sequence definition

sigma

The standard deviation of the measurements.

state_definition

The state vector definition.

Methods

compute_h_tilde_pos(relative_state, ...)

Generate the portion in the h_tilde matrix relative to the partial of the ideal centroiding measurement model with respect to the position components.

compute_h_tilde_vel()

Generates the portion in the h_tilde matrix relative to the partial of the ideal centroiding measurement model with respect to the velocity components.

compute_partials(target, epoch_array[, frame])

Stacks together measurement partials for an epoch array at different epochs.

computed_measurements(target[, epoch_array, ...])

Computes the optical navigation measurement for a given target at a specific epoch.

determine_in_fov(target, epoch, sample, line)

Checks whether the generated measurement is in the camera field of view.

generate_measurement_dataset(dataset_name, ...)

Generates a MeasurementDataSet object that can be used by filters downstream.

observed_measurements(file_name[, ...])

Reads measurements from a .json file.

partials(target, epoch[, frame])

Groups together the different components of measurement partials in the global H-tilde.

residuals(observed_meas, computed_meas)

Generates the measurement model's residuals given observed and computed ArrayWFrames.

write_observed_measurements(target[, ...])

Generates synthetic measurements and write them as a .json file.

compute_h_tilde_pos(relative_state: ArrayWUnits, R_inertial_to_cam: ArrayWUnits) list#

Generate the portion in the h_tilde matrix relative to the partial of the ideal centroiding measurement model with respect to the position components.

Parameters:
  • relative_state (ArrayWUnits) – The relative state between self and target.

  • R_inertial_to_cam (ArrayWUnits) – The rotation matrix between inertial to camera frame.

Returns:

partials – The 3x3 partial derivatives of the measurement model by the position components.

Return type:

numpy.ndarray

References

“Statistical Orbit Determination”, B. D. Tapley, B. E. Schutz, and G. H. Born, 2004 (pg. 161, eq. 4.2.6)

compute_h_tilde_vel() ndarray#

Generates the portion in the h_tilde matrix relative to the partial of the ideal centroiding measurement model with respect to the velocity components.

Returns:

partials – The 3x1 partial derivatives of the measurement model by the velocity components.

Return type:

numpy.ndarray

References

“Statistical Orbit Determination”, B. D. Tapley, B. E. Schutz, and G. H. Born, 2004 (pg. 161, eq. 4.2.6)

compute_partials(target: ~scarabaeus.spacecraft.Spacecraft.Spacecraft, epoch_array: ~scarabaeus.timeAndFrame.EpochArray.EpochArray, frame: ~scarabaeus.timeAndFrame.Frame.Frame = J2000 (0 - SOLAR SYSTEM BARYCENTER)) list#

Stacks together measurement partials for an epoch array at different epochs.

Parameters:
  • target (Spacecraft) – The target spacecraft.

  • epoch_array (EpochArray) – The epochs.

  • frame (Frame, optional) – The reference frame. Defaults to a J2000 Frame object.

Returns:

partials – A list with all the partials evaluated at different epochs in the epoch_array.

Return type:

list

computed_measurements(target: ~scarabaeus.body.Body.Body, epoch_array: ~scarabaeus.timeAndFrame.EpochArray.EpochArray = None, epoch_start: ~scarabaeus.timeAndFrame.EpochArray.EpochArray = None, epoch_end: ~scarabaeus.timeAndFrame.EpochArray.EpochArray = None, tstep: float = 1, frame: ~scarabaeus.timeAndFrame.Frame.Frame = J2000 (0 - SOLAR SYSTEM BARYCENTER), noisy: bool = False, prior_range_bias=None) ArrayWFrame#

Computes the optical navigation measurement for a given target at a specific epoch.

Parameters:
  • target (Body)

  • epoch_array (EpochArray, optional) – DESC. Defaults to None.

  • epoch_start (EpochArray, optional) – DESC. Defaults to None.

  • epoch_end (EpochArray, optional) – DESC. Defaults to None.

  • tstep (float, optional) – DESC. Defaults to 1.

  • frame (Frame, optional) – DESC. Defaults to J2000 Frame object.

  • noisy (bool, optional) – DESC. Defaults to False.

  • prior_range_bias (???, optional) – DESC. Defaults to None.

Returns:

comp_meas – The computed measurement as an array with units of inverse radians.

Return type:

ArrayWUnits

determine_in_fov(target, epoch, sample: float, line: float) bool#

Checks whether the generated measurement is in the camera field of view. We check the direction of the z-component of the delta vector between observer and target in the camera frame. We then check the line and sample measurements against the max possible line and sample determined by the FOV.

Parameters:
  • sample (float) – The x position of the target in camera frame under gnomonic projection.

  • line (float) – The x position of target in camera frame under gnomonic projection.

  • z_camera (float) – The z-component of the delta vector between observer and target in the camera frame.

Returns:

in_fov_flag – Flag indicating whether the target is in the camera field of view or not. True when the target is in the field of view, False when it isn’t.

Return type:

bool

generate_measurement_dataset(dataset_name: str, measurement_type: str, target: ~scarabaeus.body.Body.Body, observed_meas: ~scarabaeus.timeAndFrame.ArrayWFrame.ArrayWFrame = None, frame: ~scarabaeus.timeAndFrame.Frame.Frame = J2000 (0 - SOLAR SYSTEM BARYCENTER), noisy: bool = False, prior_range_bias=None) list[MeasurementDataSet]#

Generates a MeasurementDataSet object that can be used by filters downstream.

Parameters:
  • dataset_name (str) – The name of the MeasurementDataSet.

  • target (Spacecraft) – The target spacecraft.

  • epoch_list (EpochArray, optional) – The epochs. Defaults to None.

  • epoch_start (EpochArray, optional) – The starting epoch. Defaults to None.

  • epoch_end (EpochArray, optional) – The end epoch. Defaults to None.

  • tstep (int, optional) – The integration timestep. Defaults to 1.

  • observed_measurements (list, optional) – The observed measurements. Defaults to None.

  • frame (Frame, optional) – The reference frame. Defaults to a J2000 Frame object.

  • noisy (bool, optional) – Indicates if noise is added to the measurements or not. Defaults to False.

Returns:

mds_list – A list of MeasurementDataSet objects representing the measurements with their key properties to be used by a filter.

Return type:

list[MeasurementDataSet]

Notes

The MeasurementDataSet output is generated in 6 steps:

  1. Computed measurements

  2. Partials

  3. Residuals

  4. Sigmas

  5. Pack everything in a list

  6. Pack the list in a MeasurementDataSet object

observed_measurements(file_name, meas_name: str = 'meas_ideal', units: ~scarabaeus.units.Units.Units = unitless, frame: ~scarabaeus.timeAndFrame.Frame.Frame = J2000 (0 - SOLAR SYSTEM BARYCENTER)) Tuple[EpochArray, ndarray, ArrayWFrame]#

Reads measurements from a .json file.

Parameters:
  • file_name (str) – The filename of the .json file containig the measurement information.

  • meas_name (str, optional) – The name of the measurement data to access from the dictionary. Defaults to 'meas_ideal'.

  • units (Units, optional) – Units to be used to write the output AWU. Defaults to unitless.

  • frame (Frame, optional) – Frame to be used to write the output AWF. Defaults to a J2000 Frame object.

Returns:

meas_time_et, meas_sec, meas_obs – A tuple with the following values corresponding to their respective indices:

  • [0] = meas_time_etEpochArray

    The time in ephemeris time.

  • [1] = meas_Secnumpy.ndarray

    The times in seconds.

  • [2] = meas_obsArrayWFrame

    An AWF with the quantities in AWU.

Return type:

Tuple[EpochArray, numpy.ndarray, ArrayWFrame]

Notes

The writing of the json assumes or requires units and frames.

partials(target: ~scarabaeus.spacecraft.Spacecraft.Spacecraft, epoch: ~scarabaeus.timeAndFrame.EpochArray.EpochArray, frame: ~scarabaeus.timeAndFrame.Frame.Frame = J2000 (0 - SOLAR SYSTEM BARYCENTER)) list#

Groups together the different components of measurement partials in the global H-tilde. It returns the H-tilde array for the modelled measurement.

Parameters:
Returns:

h_tilde – The H-tilde array with all measurements partials from this model by component.

Return type:

list

residuals(observed_meas: ArrayWFrame, computed_meas: ArrayWFrame) ArrayWFrame#

Generates the measurement model’s residuals given observed and computed ArrayWFrames.

Parameters:
  • observed_meas (ArrayWFrame) – The observed measurements values (O).

  • computed_meas (ArrayWFrame) – The computed measurements values (C).

Returns:

residuals – AWF with the residual O-C.

Return type:

ArrayWFrame

write_observed_measurements(target: Spacecraft, epoch_array: EpochArray = None, epoch_start: EpochArray = None, epoch_end: EpochArray = None, tstep: float = 1, frame: Frame = None, noisy: bool = False, prior_range_bias: float = None, file_name: str = 'ideal_measurement') None#

Generates synthetic measurements and write them as a .json file. The input of this method encapsulate the ones needed for the “computed_meas” method in each measurement model class.

Parameters:
  • target (Spacecraft) – The target spacecraft for which the range measurement is to be computed.

  • epoch_array (EpochArray, optional) – An array of epochs (times) at which the range measurements should be computed. If provided, overrides epoch_start, epoch_end, and tstep.

  • epoch_start (EpochArray, optional) – The starting epoch for the range measurement computations. Required if epoch_array is not provided.

  • epoch_end (EpochArray, optional) – The ending epoch for the range measurement computations. Required if epoch_array is not provided.

  • tstep (float, optional) – The time step, in seconds, between consecutive range measurements. If epoch_array is not provided. Defaults to 1 second.

  • frame (Frame , optional) – The reference frame in which the range computation is performed. Defaults to None.

  • noisy (bool , optional) – Whether to add noise to the computed range measurement. Defaults to False.

  • prior_range_bias (float, optional) – A prior bias value to add to the computed range measurements. Defaults to None.

  • file_name (str, optional) – The filename of the JSON in which the measurement is saved, Defaults to 'ideal_measurement'.

Return type:

None

property camera: Camera#

The camera object taking measurements.

property instrument: Instrument#

The instrument.

property name: str#

The name of the Centroiding model.

property sequence_definition: dict#

The sequence definition

property sigma: float#

The standard deviation of the measurements.

property state_definition: dict#

The state vector definition.