void WEAK ins_reset_local_origin(void) { #if USE_GPS struct UtmCoor_f utm = utm_float_from_gps(&gps, 0); // ground_alt utm.alt = gps.hmsl / 1000.0f; // reset state UTM ref stateSetLocalUtmOrigin_f(&utm); #endif }
void ins_xsens_update_gps(struct GpsState *gps_s) { struct UtmCoor_f utm = utm_float_from_gps(gps_s, nav_utm_zone0); utm.alt = gps_s->hmsl / 1000.; // set position stateSetPositionUtm_f(&utm); struct NedCoor_f ned_vel = { gps_s->ned_vel.x / 100., gps_s->ned_vel.y / 100., gps_s->ned_vel.z / 100. }; // set velocity stateSetSpeedNed_f(&ned_vel); }
static void gps_cb(uint8_t sender_id __attribute__((unused)), uint32_t stamp __attribute__((unused)), struct GpsState *gps_s) { struct UtmCoor_f utm = utm_float_from_gps(gps_s, nav_utm_zone0); // set position stateSetPositionUtm_f(&utm); struct NedCoor_f ned_vel = { gps_s->ned_vel.x / 100., gps_s->ned_vel.y / 100., gps_s->ned_vel.z / 100. }; // set velocity stateSetSpeedNed_f(&ned_vel); }