My impression for this one is that N200 VIO has nothing to do with the crash, as it was actually not used. That thing was set up as source #3 for EKF position, but nothing was configured to switch to this source. This part of the manual:
If visual positioning is used, the EKF estimator must be switched to the corresponding
source. The specific switching method can be found at:
EKF Source Selection and Switching — Copter documentation
was apparently not implemented, as none of RC channels is configured for source switch. It does not seem to be extraordinarily reliable in your case anyway, because in your log it experienced two sharp position resets:
They are somehow correlated with attitude changes, which (odometry problems at non-trivial pitch and roll) is a common thing for various reasons (loss of distance estimate, quick change in visual features and loss of tracking, etc.).
This is why I tend to search the reasons for this crash in other places. Which seems to be at least two things: lack of tuning and being underpowered. First, you have not performed any PID tuning whatsoever, and the fact that the machine is somehow flying is solely because the default PID configuration is for an old machine of roughly this size and same battery voltage. This is your machine’s difference in desired and actual roll/pitch/yaw, and all of this is quite poor, but especially yaw.
One may or may not like the Ardupilot Methodic Configurator, but tuning the low-level subsystems is a must before attempting to use higher-level subsystems (like odometry). Your lack of tuning was an incident waiting to happen, and it finally happened, because it’s very difficult to fly reliably if your yaw is off by up to 45 degrees.
The second problem - and likely the main reason for yaw to be that poor - is that your machine is sufficiently imbalanced and underpowered at the same time:
Here, even in the calm region of the flight (02:20 to about 03:00), which is just hovering as can be judged from GPS logs, your motors rotate at way too differing speeds, and one in particular (motor 4, red plot) is running close to its maximum (1820…1830 out of 1900 for the PWM value). The second runner-up is motor 3, and the fact that both are the clockwise motors suggests that you have a yaw imbalance. Normally this happens because some motors are way off-vertical in a way which is not supposed to happen. What exactly causes this on a frame where there is only one way to mount the motors, is unclear, but the yaw imbalance is huge.
Whatever extra output is commanded atop of that, and chances are high that some motors start hitting the maximum threshold. This is exactly what is happening after 03:45 where motor 3 is pretty much permanently saturated. Perfect control of all four axes (roll, pitch, yaw, thrust) becomes impossible, yaw gives up, and with pretty much no pilot input this is a crash.