Paparazzi UAS
v5.14.0_stable-0-g3f680d1
Paparazzi is a free software Unmanned Aircraft System.
|
Multiplicative Extended Kalman Filter in rotation matrix formulation. More...
Go to the source code of this file.
Data Structures | |
struct | ins_mekf_wind_parameters |
Macros | |
#define | ins_mekf_wind_update_Q_gyro(_v) |
#define | ins_mekf_wind_update_Q_accel(_v) |
#define | ins_mekf_wind_update_Q_rates_bias(_v) |
#define | ins_mekf_wind_update_Q_accel_bias(_v) |
#define | ins_mekf_wind_update_Q_baro_bias(_v) |
#define | ins_mekf_wind_update_Q_wind(_v) |
#define | ins_mekf_wind_update_R_speed(_v) |
#define | ins_mekf_wind_update_R_pos(_v) |
#define | ins_mekf_wind_update_R_speed_z(_v) |
#define | ins_mekf_wind_update_R_pos_z(_v) |
#define | ins_mekf_wind_update_R_mag(_v) |
#define | ins_mekf_wind_update_R_baro(_v) |
#define | ins_mekf_wind_update_R_airspeed(_v) |
#define | ins_mekf_wind_update_R_aoa(_v) |
#define | ins_mekf_wind_update_R_aos(_v) |
Variables | |
struct ins_mekf_wind_parameters | ins_mekf_wind_params |
Multiplicative Extended Kalman Filter in rotation matrix formulation.
Estimate attitude, ground speed, position, gyro bias, accelerometer bias and wind speed.
Definition in file ins_mekf_wind.h.
struct ins_mekf_wind_parameters |
Definition at line 42 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_Q_accel | ( | _v | ) |
Definition at line 106 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_Q_accel_bias | ( | _v | ) |
Definition at line 116 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_Q_baro_bias | ( | _v | ) |
Definition at line 121 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_Q_gyro | ( | _v | ) |
Definition at line 101 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_Q_rates_bias | ( | _v | ) |
Definition at line 111 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_Q_wind | ( | _v | ) |
Definition at line 126 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_airspeed | ( | _v | ) |
Definition at line 161 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_aoa | ( | _v | ) |
Definition at line 166 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_aos | ( | _v | ) |
Definition at line 171 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_baro | ( | _v | ) |
Definition at line 156 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_mag | ( | _v | ) |
Definition at line 151 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_pos | ( | _v | ) |
Definition at line 136 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_pos_z | ( | _v | ) |
Definition at line 146 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_speed | ( | _v | ) |
Definition at line 131 of file ins_mekf_wind.h.
#define ins_mekf_wind_update_R_speed_z | ( | _v | ) |
Definition at line 141 of file ins_mekf_wind.h.
void ins_mekf_wind_align | ( | struct FloatRates * | gyro_bias, |
struct FloatQuat * | quat | ||
) |
Definition at line 487 of file ins_mekf_wind.cpp.
References mwp, FloatRates::p, FloatRates::q, FloatQuat::qi, FloatQuat::qx, FloatQuat::qy, FloatQuat::qz, and FloatRates::r.
Referenced by aligner_cb().
struct FloatVect3 ins_mekf_wind_get_accel_bias | ( | void | ) |
Definition at line 821 of file ins_mekf_wind.cpp.
References mwp, and FloatVect3::x.
Referenced by gyro_cb(), and send_inv_filter().
struct NedCoor_f ins_mekf_wind_get_accel_ned | ( | void | ) |
Definition at line 755 of file ins_mekf_wind.cpp.
References mwp, and NedCoor_f::x.
Referenced by gyro_cb(), and set_state_from_ins().
struct NedCoor_f ins_mekf_wind_get_airspeed_body | ( | void | ) |
Definition at line 804 of file ins_mekf_wind.cpp.
References mwp, and NedCoor_f::x.
float ins_mekf_wind_get_airspeed_norm | ( | void | ) |
Definition at line 816 of file ins_mekf_wind.cpp.
References mwp.
Referenced by gyro_cb(), send_inv_filter(), and send_wind().
float ins_mekf_wind_get_baro_bias | ( | void | ) |
Definition at line 841 of file ins_mekf_wind.cpp.
References mwp.
Referenced by gyro_cb().
struct FloatRates ins_mekf_wind_get_body_rates | ( | void | ) |
Definition at line 784 of file ins_mekf_wind.cpp.
References mwp, FloatRates::p, and FloatRates::r.
Referenced by gyro_cb(), and set_state_from_ins().
struct NedCoor_f ins_mekf_wind_get_pos_ned | ( | void | ) |
Getter/Setter functions.
Definition at line 721 of file ins_mekf_wind.cpp.
References mwp, p, and NedCoor_f::x.
Referenced by gyro_cb(), send_inv_filter(), and set_state_from_ins().
struct FloatQuat ins_mekf_wind_get_quat | ( | void | ) |
Definition at line 765 of file ins_mekf_wind.cpp.
References mwp, and FloatQuat::qi.
Referenced by gyro_cb(), send_euler(), send_inv_filter(), and set_state_from_ins().
struct FloatRates ins_mekf_wind_get_rates_bias | ( | void | ) |
Definition at line 831 of file ins_mekf_wind.cpp.
References mwp, and FloatRates::p.
Referenced by gyro_cb(), and send_inv_filter().
struct NedCoor_f ins_mekf_wind_get_speed_ned | ( | void | ) |
Definition at line 738 of file ins_mekf_wind.cpp.
References mwp, and NedCoor_f::x.
Referenced by gyro_cb(), send_inv_filter(), and set_state_from_ins().
struct NedCoor_f ins_mekf_wind_get_wind_ned | ( | void | ) |
Definition at line 794 of file ins_mekf_wind.cpp.
References mwp, and NedCoor_f::x.
Referenced by gyro_cb(), and send_wind().
void ins_mekf_wind_init | ( | void | ) |
Init function.
Definition at line 308 of file ins_mekf_wind.cpp.
References ins_mekf_wind_parameters::disable_wind, init_mekf_state(), INS_MEKF_WIND_DISABLE_WIND, ins_mekf_wind_params, INS_MEKF_WIND_Q_ACCEL, INS_MEKF_WIND_Q_ACCEL_BIAS, INS_MEKF_WIND_Q_BARO_BIAS, INS_MEKF_WIND_Q_GYRO, INS_MEKF_WIND_Q_RATES_BIAS, INS_MEKF_WIND_Q_WIND, INS_MEKF_WIND_R_AIRSPEED, INS_MEKF_WIND_R_AOA, INS_MEKF_WIND_R_AOS, INS_MEKF_WIND_R_BARO, INS_MEKF_WIND_R_MAG, INS_MEKF_WIND_R_POS, INS_MEKF_WIND_R_POS_Z, INS_MEKF_WIND_R_SPEED, INS_MEKF_WIND_R_SPEED_Z, InsMekfWindPrivate::mag_h, mekf_wind_private, ins_mekf_wind_parameters::Q_accel, ins_mekf_wind_parameters::Q_accel_bias, ins_mekf_wind_parameters::Q_baro_bias, ins_mekf_wind_parameters::Q_gyro, ins_mekf_wind_parameters::Q_rates_bias, ins_mekf_wind_parameters::Q_wind, ins_mekf_wind_parameters::R_airspeed, ins_mekf_wind_parameters::R_aoa, ins_mekf_wind_parameters::R_aos, ins_mekf_wind_parameters::R_baro, ins_mekf_wind_parameters::R_mag, ins_mekf_wind_parameters::R_pos, ins_mekf_wind_parameters::R_pos_z, ins_mekf_wind_parameters::R_speed, and ins_mekf_wind_parameters::R_speed_z.
Referenced by ins_mekf_wind_wrapper_init().
void ins_mekf_wind_propagate | ( | struct FloatRates * | gyro, |
struct FloatVect3 * | accel, | ||
float | dt | ||
) |
Full INS propagation.
Definition at line 350 of file ins_mekf_wind.cpp.
References A, MekfWindInputs::accel, ins_mekf_wind_parameters::disable_wind, gravity(), InsMekfWindPrivate::inputs, INS_MEKF_WIND_P0_WIND, ins_mekf_wind_params, MEKF_WIND_abx, MEKF_WIND_bb, MEKF_WIND_COV_SIZE, mekf_wind_private, MEKF_WIND_px, MEKF_WIND_qabx, MEKF_WIND_qax, MEKF_WIND_qbb, MEKF_WIND_qgp, MEKF_WIND_qrbp, MEKF_WIND_qwx, MEKF_WIND_qx, MEKF_WIND_rbp, MEKF_WIND_vx, MEKF_WIND_wx, MEKF_WIND_wy, MEKF_WIND_wz, mwp, FloatRates::p, FloatRates::q, quat_add(), quat_smul(), FloatRates::r, MekfWindInputs::rates, skew_sym(), FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by gyro_cb().
void ins_mekf_wind_propagate_ahrs | ( | struct FloatRates * | gyro, |
struct FloatVect3 * | accel, | ||
float | dt | ||
) |
AHRS-only propagation + accel correction.
Definition at line 422 of file ins_mekf_wind.cpp.
References A, MekfWindInputs::accel, gravity(), H, InsMekfWindPrivate::inputs, K, mekf_wind_private, MEKF_WIND_qgp, MEKF_WIND_qrbp, MEKF_WIND_qx, MEKF_WIND_rbp, MEKF_WIND_rmx, mwp, FloatRates::p, FloatRates::q, quat_add(), quat_smul(), FloatRates::r, MekfWindInputs::rates, skew_sym(), FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by gyro_cb().
void ins_mekf_wind_reset | ( | void | ) |
Definition at line 343 of file ins_mekf_wind.cpp.
References init_mekf_state().
void ins_mekf_wind_set_mag_h | ( | const struct FloatVect3 * | mag_h | ) |
Definition at line 335 of file ins_mekf_wind.cpp.
References InsMekfWindPrivate::mag_h, mekf_wind_private, FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by geo_mag_cb(), and ins_mekf_wind_wrapper_init().
void ins_mekf_wind_set_pos_ned | ( | struct NedCoor_f * | p | ) |
Definition at line 731 of file ins_mekf_wind.cpp.
References mwp, NedCoor_f::x, NedCoor_f::y, and NedCoor_f::z.
Referenced by gps_cb().
void ins_mekf_wind_set_quat | ( | struct FloatQuat * | quat | ) |
Definition at line 776 of file ins_mekf_wind.cpp.
References mwp, FloatQuat::qi, FloatQuat::qx, FloatQuat::qy, and FloatQuat::qz.
Referenced by body_to_imu_cb().
void ins_mekf_wind_set_speed_ned | ( | struct NedCoor_f * | s | ) |
Definition at line 748 of file ins_mekf_wind.cpp.
References mwp, NedCoor_f::x, NedCoor_f::y, and NedCoor_f::z.
Referenced by gps_cb().
void ins_mekf_wind_update_airspeed | ( | float | airspeed | ) |
Definition at line 614 of file ins_mekf_wind.cpp.
References ins_mekf_wind_parameters::disable_wind, H, ins_mekf_wind_params, K, MEKF_WIND_abx, MEKF_WIND_bb, MEKF_WIND_px, MEKF_WIND_qx, MEKF_WIND_ras, MEKF_WIND_rbp, MEKF_WIND_vx, MEKF_WIND_wx, mwp, and skew_sym().
Referenced by airspeed_cb(), and pressure_diff_cb().
void ins_mekf_wind_update_baro | ( | float | baro_alt | ) |
Definition at line 541 of file ins_mekf_wind.cpp.
References ins_mekf_wind_parameters::disable_wind, H, ins_mekf_wind_params, K, MEKF_WIND_abx, MEKF_WIND_bb, MEKF_WIND_px, MEKF_WIND_pz, MEKF_WIND_qx, MEKF_WIND_rb, MEKF_WIND_rbp, MEKF_WIND_vx, MEKF_WIND_wx, and mwp.
Referenced by baro_cb().
void ins_mekf_wind_update_incidence | ( | float | aoa, |
float | aos | ||
) |
Definition at line 652 of file ins_mekf_wind.cpp.
References B, ins_mekf_wind_parameters::disable_wind, H, ins_mekf_wind_params, K, MEKF_WIND_abx, MEKF_WIND_bb, MEKF_WIND_px, MEKF_WIND_qx, MEKF_WIND_raoa, MEKF_WIND_rbp, MEKF_WIND_vx, MEKF_WIND_wx, mwp, and skew_sym().
Referenced by incidence_cb().
void ins_mekf_wind_update_mag | ( | struct FloatVect3 * | mag, |
bool | attitude_only | ||
) |
Definition at line 501 of file ins_mekf_wind.cpp.
References ins_mekf_wind_parameters::disable_wind, H, ins_mekf_wind_params, K, MEKF_WIND_abx, MEKF_WIND_bb, MEKF_WIND_px, MEKF_WIND_qx, MEKF_WIND_rbp, MEKF_WIND_rmx, MEKF_WIND_vx, MEKF_WIND_wx, mwp, skew_sym(), FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by mag_cb().
void ins_mekf_wind_update_params | ( | void | ) |
Definition at line 846 of file ins_mekf_wind.cpp.
References ins_mekf_wind_params, mekf_wind_private, MEKF_WIND_qabx, MEKF_WIND_qaby, MEKF_WIND_qabz, MEKF_WIND_qax, MEKF_WIND_qay, MEKF_WIND_qaz, MEKF_WIND_qbb, MEKF_WIND_qgp, MEKF_WIND_qgq, MEKF_WIND_qgr, MEKF_WIND_qrbp, MEKF_WIND_qrbq, MEKF_WIND_qrbr, MEKF_WIND_qwx, MEKF_WIND_qwy, MEKF_WIND_qwz, MEKF_WIND_raoa, MEKF_WIND_raos, MEKF_WIND_ras, MEKF_WIND_rb, MEKF_WIND_rmx, MEKF_WIND_rmy, MEKF_WIND_rmz, MEKF_WIND_rpx, MEKF_WIND_rpy, MEKF_WIND_rpz, MEKF_WIND_rvx, MEKF_WIND_rvy, MEKF_WIND_rvz, InsMekfWindPrivate::Q, ins_mekf_wind_parameters::Q_accel, ins_mekf_wind_parameters::Q_accel_bias, ins_mekf_wind_parameters::Q_baro_bias, ins_mekf_wind_parameters::Q_gyro, ins_mekf_wind_parameters::Q_rates_bias, ins_mekf_wind_parameters::Q_wind, InsMekfWindPrivate::R, ins_mekf_wind_parameters::R_airspeed, ins_mekf_wind_parameters::R_aoa, ins_mekf_wind_parameters::R_aos, ins_mekf_wind_parameters::R_baro, ins_mekf_wind_parameters::R_mag, ins_mekf_wind_parameters::R_pos, ins_mekf_wind_parameters::R_pos_z, ins_mekf_wind_parameters::R_speed, and ins_mekf_wind_parameters::R_speed_z.
Referenced by init_mekf_state().
void ins_mekf_wind_update_pos_speed | ( | struct FloatVect3 * | pos, |
struct FloatVect3 * | speed | ||
) |
Definition at line 575 of file ins_mekf_wind.cpp.
References ins_mekf_wind_parameters::disable_wind, H, ins_mekf_wind_params, K, MEKF_WIND_abx, MEKF_WIND_bb, MEKF_WIND_px, MEKF_WIND_qx, MEKF_WIND_rbp, MEKF_WIND_rvx, MEKF_WIND_vx, MEKF_WIND_wx, mwp, FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by gps_cb().
struct ins_mekf_wind_parameters ins_mekf_wind_params |
Definition at line 217 of file ins_mekf_wind.cpp.
Referenced by ins_mekf_wind_init(), ins_mekf_wind_propagate(), ins_mekf_wind_update_airspeed(), ins_mekf_wind_update_baro(), ins_mekf_wind_update_incidence(), ins_mekf_wind_update_mag(), ins_mekf_wind_update_params(), and ins_mekf_wind_update_pos_speed().