Browse Source

ekf2: Add position observation noise parameter for flying without GPS

A larger position uncertainty is required when flying without GPS to reduce tilt attitude estimation errors caused by vehicle manoeuvring. This needs to be tuneable to allow optimisation for different use cases (e.g. outdoor vs indoor).
sbg
Paul Riseborough 9 years ago committed by tumbili
parent
commit
a37daf4cec
  1. 6
      src/modules/ekf2/ekf2_main.cpp
  2. 10
      src/modules/ekf2/ekf2_params.c

6
src/modules/ekf2/ekf2_main.cpp

@ -164,7 +164,8 @@ private: @@ -164,7 +164,8 @@ private:
control::BlockParamFloat *_gps_vel_noise;
control::BlockParamFloat *_gps_pos_noise;
control::BlockParamFloat *_baro_noise;
control::BlockParamFloat *_pos_noaid_noise;
control::BlockParamFloat *_baro_noise;
control::BlockParamFloat *_baro_innov_gate; // innovation gate for barometric height innovation test (std dev)
control::BlockParamFloat *_posNE_innov_gate; // innovation gate for GPS horizontal position innovation test (std dev)
control::BlockParamFloat *_vel_innov_gate; // innovation gate for GPS velocity innovation test (std dev)
@ -214,7 +215,8 @@ Ekf2::Ekf2(): @@ -214,7 +215,8 @@ Ekf2::Ekf2():
_wind_vel_p_noise(new control::BlockParamFloat(this, "EKF2_WIND_NOISE", false, &_params->wind_vel_p_noise)),
_gps_vel_noise(new control::BlockParamFloat(this, "EKF2_GPS_V_NOISE", false, &_params->gps_vel_noise)),
_gps_pos_noise(new control::BlockParamFloat(this, "EKF2_GPS_P_NOISE", false, &_params->gps_pos_noise)),
_baro_noise(new control::BlockParamFloat(this, "EKF2_BARO_NOISE", false, &_params->baro_noise)),
_pos_noaid_noise(new control::BlockParamFloat(this, "EKF2_NOAID_NOISE", false, &_params->pos_noaid_noise)),
_baro_noise(new control::BlockParamFloat(this, "EKF2_BARO_NOISE", false, &_params->baro_noise)),
_baro_innov_gate(new control::BlockParamFloat(this, "EKF2_BARO_GATE", false, &_params->baro_innov_gate)),
_posNE_innov_gate(new control::BlockParamFloat(this, "EKF2_GPS_P_GATE", false, &_params->posNE_innov_gate)),
_vel_innov_gate(new control::BlockParamFloat(this, "EKF2_GPS_V_GATE", false, &_params->vel_innov_gate)),

10
src/modules/ekf2/ekf2_params.c

@ -260,6 +260,16 @@ PARAM_DEFINE_FLOAT(EKF2_GPS_V_NOISE, 0.5f); @@ -260,6 +260,16 @@ PARAM_DEFINE_FLOAT(EKF2_GPS_V_NOISE, 0.5f);
*/
PARAM_DEFINE_FLOAT(EKF2_GPS_P_NOISE, 1.0f);
/**
* Measurement noise for non-aiding position hold.
*
* @group EKF2
* @min 0.5
* @max 50.0
* @unit m
*/
PARAM_DEFINE_FLOAT(EKF2_NOAID_NOISE, 10.0f);
/**
* Measurement noise for barometric altitude.
*

Loading…
Cancel
Save