I have some issues tuning my Rover, using 3.2.0 firmware.
In auto mode the (skidsteer) rover the desired PID values are very nervous. this is strange since I have a negative cross track error of about a 1.5 meters negative. I would expect that my rover would turn into one direction, in order to eliminate the cross track error.
thanks, setting PIVOT_TURN_ANGLE to 0 solved the strange PID behaviour. Navigation (based on GPS RTK) is way more stable now.
Navigation still is a bit inaccurate, the rover is not able to make sharp turns or quickly react on cross track error. Also, when hitting a waypoint, the rover isn’t making a sharp turn in order to get the right orientation moving to the next waypoint.
After doing some logfile investigation (thanks for the tip), I noticed the navigation controller is not using the available servo output bandwidth. When there is not a big difference between right and left servo the rover is not able to make sharp turns.
Looks like the vehicle is running an old version of Rover. It’s 3.2.0-dev (from November last year). Could you upgrade to Rover-3.2.1? We’ve made quite a few significant change after that, in particular there’s some important logging informationt that’s missing from this older version.
I did the update to 3.2.1. That made a difference. Now the servo’s are
hitting 1500 (Idle?) as a minimum. With 1500 as a minimum I still have
quite some (constant) oscillation when moving from waypoint to waypoint.
Attached the 3.2.1 logfile.
I think I answered this question on another thread but in any case, we’ve replaced the steering and speed controllers in 3.2 so the STEER2SRV_P parameter is now ATC_STR_RAT_P. Here is the new steering tuning guide for 3.2.
Looking at the log, the ATC_STR_RAT_FF (the most important steering tuning parameter) and the ATC_STR_RAT_P parameter are far far too high so we get large overshoots when we compare the desired turn rate (STER.DesTurnRate) vs the actual turn rate (STER.TurnRate).
The speed controller tuning is also incredibly far off: Here is a graph of the desired speed (the red line at 5m/s) vs the actual (the green line down at about 0.3m/s).
The speed tuning wiki guide talks about how to set the CRUISE_SPEED and CRUISE_THROTTLE parameters but initially setting them to the values below will probably help a bit:
thanks for your input. We changed the settings you mentioned regarding
steering and speed.
Still the Rover is having a oscillating cross track error. Is seems like
the navigation controller is reacting very slow.
Speed is very slow (0.2m/s), so there should be time enough to converge the
cross track error to zero.
Cross track error compared to steering output:
Any idea how this oscillating can be eleminated and the cross track error
can be reduced to a minimum?
Please find the logfile attached.
It looks like the oscillation is coming from the steering controller’s I term so it may help to disable the I term by setting ATC_STR_RAT_IMAX to 0.
The contribution from the P term is also quite large so it might be good to reduce ATC_STR_RAT_P to a much lower number (0.05 or maybe even 0) and then increase the ATC_STR_RAT_FF if necessary.
ATC_STR_RAT_P and ATC_STR_RAT_I both set to zero. Only ATC_STR_RAT_FF is
set.
Still having cross track oscillations of +10cm:
This graph is shown that the steering/navigation controller is responding
fast enough when the cross track error gets close to 0, causing overshoot
and oscillation.
Please find the logfile attached.
Are you aware of Ardupilot Rover applications able to fully benefit GPS RTK
accuracy during navigation? Not sure if we can get it any better than
this?