Skip to content

Synthetic airspeed is fused for copters when dead-reckoning using wind estimates #33451

Description

@pavloblindnology

Bug Report

Synthetic airspeed is fused for copters when dead-reckoning using wind estimates, which leads to very fast explode of EKF3 in moderate wind conitions.

Issue details

AP 4.6 introduced new feature to use last estimated airspeed when dead-reckoning for planes.
This feature also takes action with copters, here

if (lastAspdEstIsValid && imuDataDelayed.time_ms - prevTasStep_ms > 200) {
.
This synthetic airspeed is then fused here

This results in EKF3 attitude exploding after ~25sec of dead-reckoning using drag forces with moderate wind.
In 4.5.7 copter would steadily drift with attitude gradually increasing till reaching max roll of 30deg in ~2min, but EKF3 would never explode.
Changed parameters:

  • EK3_DRAG_BCOEF_X/Y = 9.5
  • EK3_DRAG_MCOEF = 0.082
  • FS_DR_ENABLE = 0
  • FS_DR_TIMEOUT = 300
  • SIM_WIND_DIR = 0
  • SIM_WIND_SPD = 5

To reproduce, take off to 50m altitude, turn GPS off with long 218 65 2 and wait.

The issue is fixed by extending condition

if (lastAspdEstIsValid && imuDataDelayed.time_ms - prevTasStep_ms > 200) {

to

if (lastAspdEstIsValid && imuDataDelayed.time_ms - prevTasStep_ms > 200 && assume_zero_sideslip()) {

Version
4.6.3

Platform
[ ] All
[ ] AntennaTracker
[*] Copter
[ ] Plane
[ ] Rover
[ ] Submarine

Airframe type
Copter

Hardware type
SITL

Logs
BIN log

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions