Program Listing for File fusion_strategy.h
↰ Return to documentation for file (api/include/pntos/plugins/fusion_strategy.h)
#pragma once
#include <pntos/plugins/common.h>
#include <pntos/plugins/state_modeling.h>
#ifdef __cplusplus
extern "C" {
#endif
PNTOS_ASSUME_NONNULL_BEGIN
typedef struct PntosCommonFusionStrategy {
PntosManagedMemory* memory;
PntosFusionType engine_type;
} PntosCommonFusionStrategy;
typedef struct PntosStandardFusionStrategy {
PntosCommonFusionStrategy common;
size_t (*get_num_states)(struct PntosStandardFusionStrategy* self);
size_t (*add_states)(struct PntosStandardFusionStrategy* self,
PntosMatrix* initial_estimate,
PntosMatrix* initial_covariance,
PntosMatrix* PNTOS_NULLABLE cross_covariance);
void (*remove_states)(struct PntosStandardFusionStrategy* self,
size_t first_index,
size_t count);
PntosMatrix* PNTOS_NULLABLE (*get_estimate)(struct PntosStandardFusionStrategy* self);
void (*set_estimate_slice)(struct PntosStandardFusionStrategy* self,
PntosMatrix* new_estimate,
size_t first_index);
PntosMatrix* PNTOS_NULLABLE (*get_covariance)(struct PntosStandardFusionStrategy* self);
void (*set_covariance_block)(struct PntosStandardFusionStrategy* self,
PntosMatrix* new_covariance,
size_t first_row,
size_t first_col);
void (*set_covariance_slice)(struct PntosStandardFusionStrategy* self,
PntosMatrix* new_covariance,
size_t first_state);
void (*propagate)(struct PntosStandardFusionStrategy* self,
PntosStandardDynamicsModel* dynamics_model);
void (*update)(struct PntosStandardFusionStrategy* self,
PntosStandardMeasurementModel* measurement_model);
struct PntosStandardFusionStrategy* (*clone)(struct PntosStandardFusionStrategy* self);
} PntosStandardFusionStrategy;
typedef struct PntosFusionStrategyPlugin {
PntosCommonPlugin common;
bool (*is_fusion_type_supported)(struct PntosFusionStrategyPlugin* self, PntosFusionType type);
PntosCommonFusionStrategy* PNTOS_NULLABLE (*new_fusion_strategy)(
struct PntosFusionStrategyPlugin* self, PntosFusionType type);
} PntosFusionStrategyPlugin;
PNTOS_ASSUME_NONNULL_END
#ifdef __cplusplus
}
#endif