Integrate asynchronous GPS IMU fusion

This commit is contained in:
2026-07-16 23:49:43 +03:00
parent 38a96dd88f
commit 7cc3eb2a54
80 changed files with 3901 additions and 553 deletions
@@ -0,0 +1,17 @@
#ifndef GPS_FUSION_PUBLISHER_H
#define GPS_FUSION_PUBLISHER_H
#include <stdbool.h>
#include <stdint.h>
#include "gps/NavEquations.h"
#include "fusion/fusion_measurement.h"
/* Thin boundary adapter used by main. GPS and the ESKF do not call each
* other; main converts the completed WLS output to the shared measurement. */
bool gps_fusion_build_measurement(
const gps_nav_solution_t* solution,
uint64_t measurement_timestamp_ticks,
fusion_gps_measurement_t* measurement_out);
#endif
@@ -0,0 +1,27 @@
#ifndef GPS_SYSTEM_UART_H
#define GPS_SYSTEM_UART_H
#include <stdbool.h>
#include <stdint.h>
#include "fusion/navigation_fusion.h"
#include "gps/NavEquations.h"
void gps_system_uart_publish_location(
const char* source,
double latitude_deg,
double longitude_deg,
double height_m,
const gps_nav_solution_t* gps);
void gps_system_uart_publish_startup(
bool fusion_enabled,
bool fusion_initialized,
bool imu_initialized,
bool imu_running);
void gps_system_uart_publish_periodic_fusion_status(
navigation_fusion_output_t* output,
uint64_t* last_status_tick);
#endif
@@ -0,0 +1,14 @@
#ifndef IMU_FUSION_PROFILE_H
#define IMU_FUSION_PROFILE_H
#include <stdbool.h>
#include "fusion/fusion_imu_quality.h"
#include "imu/imu_sensor.h"
/* Explicit adapter from a selected sensor backend to ESKF tuning values. */
bool imu_fusion_quality_profile_for_backend(
imu_sensor_backend_t backend,
fusion_imu_quality_profile_t* profile_out);
#endif