EKF velocity variance error while using VIO

Hi everyone,

I’m currently working on a Vision-Inertial Odometry (VIO) setup and facing an EKF velocity variance error that I’m unable to resolve.

Hardware setup:

  • Flight controller: Pixhawk 2.4.8

  • Companion computer: Raspberry Pi 5

  • Camera: Raspberry Pi Camera Module 3

  • Connection: Pi ↔ Pixhawk via UART (TELEM port)

Software / setup details:

  • VIO running on Raspberry Pi 5 (providing vision position + velocity)

  • Vision data sent to Pixhawk via MAVLink

  • EKF configured to use vision position and velocity

  • GPS disabled (indoor testing)

  • During operation, EKF throws velocity variance errors, and sometimes EKF fails or triggers failsafe

Observed behavior:

  • VIO estimates (position & velocity) look stable on the companion computer

  • Drone sometimes arms and takes off

  • After switching modes (e.g., Stabilize → PosHold/Loiter), thrust drops or EKF fails

  • Issue is inconsistent (works ~1/10 times)

What I’ve checked so far:

  • EKF parameters set as per documentation (EK3_SRC1_POSXY / VELXY / POSZ)

  • Vision data rate is stable

  • No obvious timestamp issues on the Pi side

  • Default failsafe parameters (no major changes)

Questions:

  1. What typically causes EKF velocity variance when using VIO?

  2. Are there recommended EKF or VIO noise parameters for vision-only navigation?

  3. Any known timing, scaling, or frame-alignment issues with Raspberry Pi 5 + Pi Cam 3?

  4. Is Pixhawk 2.4.8 limiting EKF performance for VIO use cases?

Any guidance, parameter suggestions, or logs you’d like me to share would be really appreciated.

Thanks in advance!