Skip to content

External navigation measurement noise is overwritten by GPS reported accuracy in EKF #24020

Open
@pavloblindnology

Description

  1. If external navigation is used for position and/or speed together with GPS, then external navigation measurement errors are overwritten by GPS reported errors. Is it ok? AFAIU, the external navigation if-s should come 1st.

    if (gpsSpdAccuracy > 0.0f) {

    if (gpsPosAccuracy > 0.0f) {

  2. Also, when compiting GPS velocity variances used for data checks, vertical velocity is treated identically to horizontal velocity. I.e., _gpsHorizVelNoise & gpsNEVelVarAccScale are used instead of _gpsVertVelNoise & gpsDVelVarAccScale for vertical velocity, as it's done for variances used for fusion. Also, description mentions only horizontal velocity.

    obs_data_chk = sq(constrain_ftype(frontend->_gpsHorizVelNoise, 0.05f, 5.0f)) + sq(frontend->gpsNEVelVarAccScale * accNavMag);

    Mentioned this here: e80fb8b#commitcomment-117061127

  3. CalculateVelInnovationsAndVariances also doesn't use _gpsVertVelNoise & gpsDVelVarAccScale for vertical velocity

    CalculateVelInnovationsAndVariances(gpsDataDelayed.vel, frontend->_gpsHorizVelNoise, frontend->gpsNEVelVarAccScale, gpsVelInnov, gpsVelVarInnov);

  4. If there are ext.nav. messages to fuse but they are not configured to be used as velocity source, variances for ext.nav. are still used, though GPS velocities are actually fused

    } else if (extNavVelToFuse) {

The issues concern both EKF2 & 3.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions