Files
gps/soc/software/gps_system/header/fusion/fusion_gps_adapter.h
T

45 lines
1.4 KiB
C

#ifndef FUSION_GPS_ADAPTER_H
#define FUSION_GPS_ADAPTER_H
#include <stdbool.h>
#include "fusion/fusion_measurement.h"
typedef struct {
double minimum_horizontal_std_m;
double minimum_vertical_std_m;
double maximum_position_std_m;
double minimum_horizontal_velocity_std_mps;
double minimum_vertical_velocity_std_mps;
double maximum_velocity_std_mps;
} 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_convert_navigation(
fusion_gps_adapter_t* adapter,
const fusion_gps_measurement_t* gps,
fusion_navigation_measurement_t* navigation_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