void alt_filter_periodic(void) { // estimation at each step kalmanEstimation(&alt_filter,0.); // update on new data float ga = (float)gps.hmsl / 1000.; if (baro_ets_altitude != last_baro_alt) { kalmanCorrectionAltimetre(&alt_filter, baro_ets_altitude); last_baro_alt = baro_ets_altitude; } if (ga != last_gps_alt && GpsFixValid()) { kalmanCorrectionGPS(&alt_filter, ga); last_gps_alt = ga; } RunOnceEvery(6,DOWNLINK_SEND_VFF(DefaultChannel, &baro_ets_altitude, &(alt_filter.X[0]), &(alt_filter.X[1]), &(alt_filter.X[2]), &(alt_filter.P[0][0]), &(alt_filter.P[1][1]), &(alt_filter.P[2][2]))); }
static void send_vff(void) { DOWNLINK_SEND_VFF(DefaultChannel, DefaultDevice, &vff_z_meas, &vff_z, &vff_zdot, &vff_bias, &vff_P[0][0], &vff_P[1][1], &vff_P[2][2]); }