Sinusoidal path and toilet bowl issues with EKF3 and visual odometry

We are developing an outdoor visual odometry-based solution to enable non-GPS navigation, and we are observing some strange fly patterns from the drone:
When trying to hover in loiter (or auto with WP), the quad almost immediately begin a toilet bowl pattern.
When flying a mission, instead of straight line the quad fly in a sinusoidal path.

When comparing logs, it seems the coordinates sent through “vision_position_estimate” are much closer to on-board GPS (used only as a reference to check and validate our vision solution) than the fused position, we can’t figure why the vision has so little impact in the EKF output and how to prevent this behavior…

The strangest thing is that at 50m above ground the quad behave much better and can efficiently complete a mission (although still not straight line but far from what we experience at higher altitude) and hover in place way better.

Link to a flight log:

Here an example of the position on the X axis, the EKF output (PSCN) in this direction behave strangely:

@Amichai Nice catch, I confirmed having experimented some of these patterns during indoor flying with various VO- ViO

I guess @tridge will request you activate the logging for ekf as well
LOG_REPLAY=1 and LOG_DISARMED=1

I know @david_sastre experimented that as well, so we may be interested to help by getting additional data and tests on this issue.

But update to ArduCopter 4.3.7 or 4.4.0-beta2 first.

1 Like