Struct PntosStandardFusionStrategy

Struct Documentation

struct PntosStandardFusionStrategy

Assumes the system is described by discrete-time matrices and noise inputs are zero-mean white Gaussian.

UNSTABLE: This feature is unstable and is not yet considered part of the stable pntOS API. Usage of this feature is highly discouraged in non-experimental code, and its definition may change at any time.

Public Members

PntosCommonFusionStrategy common
size_t (*get_num_states)(struct PntosStandardFusionStrategy *self)

Return the total number of states added to this filter.

size_t (*add_states)(struct PntosStandardFusionStrategy *self, PntosMatrix *initial_estimate, PntosMatrix *initial_covariance, PntosMatrix *cross_covariance)

Increase number of filter states and set the estimate, covariance, and cross-covariance (optional). Returns index of the first added state. If cross_covariance is NULL, cross covariance between the existing states and the added states will be set to zeroes.

void (*remove_states)(struct PntosStandardFusionStrategy *self, size_t first_index, size_t count)

Decrease the number of states by count, starting at first_index. first_index plus count cannot be greater than or equal to the value returned by get_num_states.

PntosMatrix *(*get_estimate)(struct PntosStandardFusionStrategy *self)

Get the current state estimate. Returns NULL if no states have been added to this fusion strategy. Guaranteed to not be NULL if get_num_states returns a value other than 0.

void (*set_estimate_slice)(struct PntosStandardFusionStrategy *self, PntosMatrix *new_estimate, size_t first_index)

Set a slice of the state vector. first_index plus the number of rows in new_estimate must be less than or equal to the value returned by get_num_states. The number of columns in new_estimate must be equal to 1.

PntosMatrix *(*get_covariance)(struct PntosStandardFusionStrategy *self)

Get the current state covariance. Returns NULL if no states have been added to this fusion strategy. Guaranteed to not be NULL if get_num_states returns a value other than 0.

void (*set_covariance_block)(struct PntosStandardFusionStrategy *self, PntosMatrix *new_covariance, size_t first_row, size_t first_col)

Set a slice of the state covariance by first row and column. first_row plus the number of rows in new_covariance must be less than or equal to the value returned by get_num_states. first_col plus the number of columns in new_covariance must be less than or equal to the value returned by get_num_states.

void (*set_covariance_slice)(struct PntosStandardFusionStrategy *self, PntosMatrix *new_covariance, size_t first_state)

Set a slice of the state covariance along the diagonal. first_state plus the number of rows in new_covariance must be less than or equal to the value returned by get_num_states. first_state plus the number of columns in new_covariance must be less than or equal to the value returned by get_num_states.

void (*propagate)(struct PntosStandardFusionStrategy *self, PntosStandardDynamicsModel *dynamics_model)

Propagates the state estimate and covariance forward one time epoch using the given dynamics model. get_num_states must return a value greater than zero before this method can be called. Also, the H matrix in dynamics_model must have a number of columns equal to the value returned by get_num_states.

void (*update)(struct PntosStandardFusionStrategy *self, PntosStandardMeasurementModel *measurement_model)

Updates the state estimate and covariance at the current time using the given measurement model. get_num_states must return a value greater than zero before this method can be called. Also, the Phi matrix in measurement_model must have a number of columns equal to the value returned by get_num_states.

struct PntosStandardFusionStrategy *(*clone)(struct PntosStandardFusionStrategy *self)

Produce a deep-copy this fusion strategy instance.