Program Listing for File initialization.h
↰ Return to documentation for file (api/include/pntos/plugins/initialization.h)
#pragma once
#include <pntos/plugins/common.h>
#include <pntos/stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
PNTOS_ASSUME_NONNULL_BEGIN
typedef enum PntosInitializationType {
PNTOS_INERTIAL_INITIALIZATION_STRATEGY,
PNTOS_EWC_INITIALIZATION_STRATEGY
} PntosInitializationType;
typedef enum PntosInitializationStatus {
PNTOS_WAITING,
PNTOS_INITIALIZING_COARSE,
PNTOS_INITIALIZING_FINE,
PNTOS_INITIALIZED_GOOD,
PNTOS_INITIALIZATION_FAILED
} PntosInitializationStatus;
typedef enum PntosInitializationMotionNeeded {
PNTOS_NO_MOTION,
PNTOS_MOTION_NEEDED,
PNTOS_ANY_MOTION
} PntosInitializationMotionNeeded;
typedef struct PntosCommonInitializationStrategy {
PntosManagedMemory* memory;
PntosInitializationType type;
PntosInitializationMotionNeeded (*request_motion_needed)(
struct PntosCommonInitializationStrategy* self);
PntosInitializationStatus (*request_current_status)(
struct PntosCommonInitializationStrategy* self);
void (*process_pntos_message)(struct PntosCommonInitializationStrategy* self,
PntosMessage* message);
} PntosCommonInitializationStrategy;
typedef struct PntosInitialInertialSolution {
PntosManagedMemory* memory;
PntosMessage* PNTOS_NULLABLE solution;
PntosStandardInertialErrors* PNTOS_NULLABLE inertial_errors;
PntosMatrix* PNTOS_NULLABLE inertial_error_covariance;
PntosInitializationStatus status;
} PntosInitialInertialSolution;
typedef struct PntosInertialInitializationStrategy {
PntosCommonInitializationStrategy common;
PntosInitialInertialSolution* (*request_solution)(
struct PntosInertialInitializationStrategy* self);
} PntosInertialInitializationStrategy;
typedef struct PntosInitialEstimateWithCovariance {
PntosManagedMemory* memory;
AspnTypeTimestamp time;
PntosEstimateWithCovariance* PNTOS_NULLABLE estimate_with_covariance;
PntosInitializationStatus status;
} PntosInitialEstimateWithCovariance;
typedef struct PntosEwcInitializationStrategy {
PntosCommonInitializationStrategy common;
PntosInitialEstimateWithCovariance* PNTOS_NULLABLE (*request_solution)(
struct PntosEwcInitializationStrategy* self);
} PntosEwcInitializationStrategy;
typedef struct PntosInitializationPlugin {
PntosCommonPlugin common;
bool (*is_initialization_type_supported)(struct PntosInitializationPlugin* self,
PntosInitializationType type);
PntosCommonInitializationStrategy* PNTOS_NULLABLE (*new_initialization_strategy)(
struct PntosInitializationPlugin* self,
PntosInitializationType type,
char* PNTOS_NULLABLE config_group);
} PntosInitializationPlugin;
#ifdef __cplusplus
}
#endif
PNTOS_ASSUME_NONNULL_END