EKF: Enable compensation for static pressure positional error (#7264)

* msg: add reporting of multi rotor drag fusion

* ekf2: add reporting of multi rotor drag fusion

* ekf2: Add parameters required to tune multi-rotor wind estimation

* ekf2: Add correction for static pressure position error

* ekf2: Use correct air density for position error corrections

* ekf2: fix parameter documentation error

* ekf2: Add separate forward and reverse position error correction factors

* ekf2: Fix formatting and parameter descriptions

* ekf2: Improve comments
This commit is contained in:
Paul Riseborough
2017-08-01 07:29:08 +10:00
committed by GitHub
parent 02ea10ed99
commit 08059caf89
3 changed files with 188 additions and 6 deletions
+97 -1
View File
@@ -541,15 +541,17 @@ PARAM_DEFINE_INT32(EKF2_REC_RPL, 0);
* 2 : Set to true to inhibit IMU bias estimation
* 3 : Set to true to enable vision position fusion
* 4 : Set to true to enable vision yaw fusion
* 5 : Set to true to enable multi-rotor drag specific force fusion
*
* @group EKF2
* @min 0
* @max 28
* @max 63
* @bit 0 use GPS
* @bit 1 use optical flow
* @bit 2 inhibit IMU bias estimation
* @bit 3 vision position fusion
* @bit 4 vision yaw fusion
* @bit 5 multi-rotor drag fusion
*/
PARAM_DEFINE_INT32(EKF2_AID_MASK, 1);
@@ -1056,3 +1058,97 @@ PARAM_DEFINE_FLOAT(EKF2_RNG_A_HMAX, 5.0f);
* @max 5.0
*/
PARAM_DEFINE_FLOAT(EKF2_RNG_A_IGATE, 1.0f);
/**
* Specific drag force observation noise variance used by the multi-rotor specific drag force model.
* Increasing it makes the multi-rotor wind estimates adjust more slowly.
*
* @group EKF2
* @min 0.5
* @max 10.0
* @unit (m/sec**2)**2
* @decimal 2
*/
PARAM_DEFINE_FLOAT(EKF2_DRAG_NOISE, 2.5f);
/**
* X-axis ballistic coefficient used by the multi-rotor specific drag force model.
* This should be adjusted to minimise variance of the X-axis drag specific force innovation sequence.
*
* @group EKF2
* @min 1.0
* @max 100.0
* @unit kg/m**2
* @decimal 1
*/
PARAM_DEFINE_FLOAT(EKF2_BCOEF_X, 25.0f);
/**
* Y-axis ballistic coefficient used by the multi-rotor specific drag force model.
* This should be adjusted to minimise variance of the Y-axis drag specific force innovation sequence.
*
* @group EKF2
* @min 1.0
* @max 100.0
* @unit kg/m**2
* @decimal 1
*/
PARAM_DEFINE_FLOAT(EKF2_BCOEF_Y, 25.0f);
/**
* Upper limit on airspeed along individual axes used to correct baro for position error effects
*
* @group EKF2
* @min 5.0
* @max 50.0
* @unit m/s
* @decimal 1
*/
PARAM_DEFINE_FLOAT(EKF2_ASPD_MAX, 20.0f);
/**
* Static pressure position error coefficient for the positive X axis
* This is the ratio of static pressure error to dynamic pressure generated by a positive wind relative velocity along the X body axis.
* If the baro height estimate rises during forward flight, then this will be a negative number.
*
* @group EKF2
* @min -0.5
* @max 0.5
* @decimal 2
*/
PARAM_DEFINE_FLOAT(EKF2_PCOEF_XP, 0.0f);
/**
* Static pressure position error coefficient for the negative X axis.
* This is the ratio of static pressure error to dynamic pressure generated by a negative wind relative velocity along the X body axis.
* If the baro height estimate rises during backwards flight, then this will be a negative number.
*
* @group EKF2
* @min -0.5
* @max 0.5
* @decimal 2
*/
PARAM_DEFINE_FLOAT(EKF2_PCOEF_XN, 0.0f);
/**
* Pressure position error coefficient for the Y axis.
* This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the Y body axis.
* If the baro height estimate rises during sideways flight, then this will be a negative number.
*
* @group EKF2
* @min -0.5
* @max 0.5
* @decimal 2
*/
PARAM_DEFINE_FLOAT(EKF2_PCOEF_Y, 0.0f);
/**
* Static pressure position error coefficient for the Z axis.
* This is the ratio of static pressure error to dynamic pressure generated by a wind relative velocity along the Z body axis.
*
* @group EKF2
* @min -0.5
* @max 0.5
* @decimal 2
*/
PARAM_DEFINE_FLOAT(EKF2_PCOEF_Z, 0.0f);