38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
#ifndef FUSION_GPS_ADAPTER_H
|
|
#define FUSION_GPS_ADAPTER_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "fusion_measurement.h"
|
|
|
|
typedef struct {
|
|
double minimum_horizontal_std_m;
|
|
double minimum_vertical_std_m;
|
|
double maximum_position_std_m;
|
|
} fusion_gps_adapter_config_t;
|
|
|
|
typedef struct {
|
|
double origin_latitude_deg;
|
|
double origin_longitude_deg;
|
|
double origin_height_m;
|
|
double origin_ecef_m[3];
|
|
double ecef_to_enu[3][3];
|
|
fusion_gps_adapter_config_t config;
|
|
bool origin_valid;
|
|
} fusion_gps_adapter_t;
|
|
|
|
void fusion_gps_adapter_default_config(fusion_gps_adapter_config_t* config);
|
|
bool fusion_gps_adapter_init(fusion_gps_adapter_t* adapter,
|
|
const fusion_gps_adapter_config_t* config);
|
|
bool fusion_gps_adapter_convert(fusion_gps_adapter_t* adapter,
|
|
const fusion_gps_measurement_t* gps,
|
|
fusion_position_measurement_t* position_out);
|
|
bool fusion_gps_adapter_local_to_geodetic(
|
|
const fusion_gps_adapter_t* adapter,
|
|
const double position_enu_m[3],
|
|
double* latitude_deg_out,
|
|
double* longitude_deg_out,
|
|
double* height_m_out);
|
|
|
|
#endif
|