EK3 Altitue estimate errors in VISO flight

Hello everyone,

I have a problem regarding altitude estimation when the drone is disarmed.
Depending on which Copter version is used, and which information the visual inertial odometry provides, the outcome is different.
If enough error accumulates while disarmed, it can cause the drone to shoot up in the sky when armed.
Here are the different scenarios :

Copter 4.3.8 included and before :
The estimation is correct at all times

Copter 4.4.0 included and after :

  • Only position information is taken from the visual odometry (All EK3_SRC1 @ 6 except EK3_SRC1_VELXY and EK3_SRC1_VELZ @ 0) :
    The estimation diverges up or down depending of the vertical position of the drone relative to its initialization point.
  • Position and velocity is taken from the visual odometry (All EK3_SRC1 @ 6)
    The estimation accumulates error in steps of roughly PZ meters, every 10 seconds, at a steady rate.

It is important to note that the data fed by the odometry is correct because both VISP_PZ (and VISV_VZ) in the logs looks good, and the very same odometry system work flawlessly in Copter 4.3.8 and previous.

This can cause unpredictable behavior when arming the drone, with already several occurrences of the drone shooting up in the air at full vertical speed because of a very rapidly growing altitude estimation error, despite the altitude estimation being reset on arming.

Here is a link to the logs.
It is me picking the drone disarmed from a table and putting it on the floor, a couple times per log. The table is roughly 78cm tall, as VISP_PZ trace indicates.

Any help would be appreciated, Thanks !