Waypoint navigation suddenly stopped

Hello everyone,

A friend and I are trying to automate a 16’ catamaran with two thrusters, implementing ArduRover 3.0 Beta version . We’re using SKID_STEERING_OUT = 1, and were able to tune the control parameters achieving an acceptable performance, and then run a number of successful waypoint autonomous missions in AUTO mode. We’ve also performed successful autonomous waypoint missions controlling the vehicle with an Odroid-XU4 single board companion computer and the Dronekit-Python libraries. However, we had an interesting problem in the last mission (which had 6 waypoints): whenever the vehicle reached waypoint 3, the vehicle completely stopped, and the orange straight line, which depicts the heading to the next waypoint in Mission Planner, went random. The only way the mission was able to succeed was by relocating waypoints 3 and 4 in a way that smooths out the trajectory.

Something we’ve notice was that even though the vehicle was set to a CRUISE_SPEED of 1 m/s, most of the time the vehicle was traveling at a speed around 1.9 m/s, which was not good for transitioning from waypoint 3 to 4, since they were a little bit close from each other, and were located in a way that would trace a sharp turn (but not impossible at all. The vehicle should be able to handle this, specially after allowing turn on the spot with the PIVOT_TURN_ANGLE set to 30 deg).

I have also noticed this behavior sometimes, when running simulations with the Dronkit-SITL program, in similar conditions (that is, high speed / sharp turns).

Could anyone please shed some light on this issue? Why this happens? Is it an Ardupilot bug? Is it some sort of failsafe?

Below are the links for the sequence of images describing the problem:

Also the .bin datalog file, which unfortunately has all the testing we’ve made on that day, but you can check the one before the last mission which is in guided mode:

And finally the .tlog file to recreate the problem:

and the waypoints file:


I’ve replicated (sort of) the problem using dronekit-sitl Rover-2.50. It turns out I had a custom goto() function which made the vehicle to look for the following waypoint once the distance to the current waypoint was less than 3 % of the original distance to that point. So, I decided to change this to an absolute value, that is, to make the vehicle to look for the following waypoint once it is at a distance of 3 meters from the current waypoint. This solved the problem in the simulation, and will hopefully solve the problem in the actual mission. However, this does not answer the original question, regarding why the vehicle completely stops at extreme conditions (high speed, sharp turn, small waypoint radius). Could be some sort of failsafe to avoid oscillation in the response of the vehicle?