Unreliable yaw while navigating with vision

Hi, I’m developing a vision-based navigation system for copters that can only supply position to the platform (without attitude estimation), where I’m currently depending on the drone keeping its nose to a fixed direction (fixed yaw).
When flying without GPS I’ve recently noticed significant discrepancies between the reported yaw and the true attitude of the drone as I see in the orientation of the frames from the camera.
The quad is configured to get only XY position and velocity from my system, but when it navigates using GPS there are no problems with the yaw (although for both cases the parameter EK3_SRCx_YAW = 1).
More strangely, I tried using the AHR2 estimation of the yaw since it seems more reliable than the EKF, and when I do the yaw discrepancies of the EKF3 itself are better.
I really don’t understand how I can so impact EKF3 yaw estimation when he is supposed to rely on external compass only…

Flight logs of when I used yaw from EKF3 (74.BIN) and when I used yaw from AHR2 (75.BIN):

Any help would be much appreciated!

you should start by updating to ArduCopter 4.2.0-rc3 and enabling the GSF.

How can GSF help if I’m flying without GPS ?

It should be possible to use gsf without gps.
If it is not, then it is worth a feature request. Or even better a pull request.

Gnss receivers also do not provide attitude data to the gsf. The gsf computes the attitude itself.

Anyone, any idea how the vision is impacting so much the yaw when the ek3_srcx is configured to use only magnetometer as external yaw source?