Help with debuging Skid steer Pivot turns please

Hi team, im hoping for a few pointers, our mower is almost use usable - except for pivot running wide on some turns.

The hardwares all good, but convincing the mower to not overshoot corners, not so much.

  1. Really good repeatability - RTK YAW sorted, it repeats the same path accurately
  2. Pivot turns when implemented are perfect
  3. Despite my efforts and tuning, i cant command pivot turns - mower will offshoot and rejoin, which doesnt work when there are fences and cliffs involved…

ArduSimpleRtk2b x2 + 1 for base, Qiotek Zealot H7. Rover 4.2.3
Mower is slow 0.7m/s
Tuning for turning is ok. I havent tuned for speed.

Here is a video of when it looks good and when it offshoots.

Note - i have subsequently changed from NTRIP to local corrections, as the ntrip server used in that video was too far away (19kms) . Our local one fixed a lot of accuracy issues. Due to that the log of this, probably is showing degraded RTK issues as well as navigtion problems.

The issues seem to be the downhill turns (sloping land), and the WP_PIVOT_* params seem to have no or little effect.

Progress is a little challenging due to endless rain, so any insights appreciated.

After changing the steering/pivot parameters a bit i managed to get no pivots working, with the problem being demonstrated in the last test run - a 3 point waypoint circle (triangle!) now with all turns overunning.


with this logfile. 00000070.BIN

I went though my parameters related to turning - and compared with the default for SITL stable skid-rover and will reset mine back to more default. He’s the diffs.

I changed NAVL1_PERIOD with no effect, WP_PIVOT_ANGLE same.

Any help appreciated, and thanks in advance - Paul.

ps - Here’s a previous log - with more data, and a few previous params.
00000064.BIN

Sorry I’m a bit confused by your post, Are you just trying to get it to do pivot turns rather than normal turns?
If so there is a parameter which sets an angle threshold to chose pivots rather than standard turns, if you reduce that to like 20deg it will do pivot turns for all your corners.

Hey Scott, yes - the pivot turns are not happening when wanted/needed. WP_PIVOT_ANGLE is the minimum angle error that should trigger a pivot (rather than a regular corner/turn) - but its doesnt work - ive set it between 8 and 180 degrees.

1 Like

ok - looks like im on my own.
I have done a bunch of testing in SITL looks like the speeds are the key. Have got the skid-steer mower in SITL tuned up pretty sweetly, so now know what parameters to sort. Its been raining for weeks here - so no outside testing. Need a boat !

with equilateral triangle, the SITL pivot turn behaviour changes nicely when pivot_turn_angle is below 115 or over 125 as each corner is 120degrees. Working per parameter description - once the speeds are sorted. Adding a pause on pivot helped a lot.

1 Like

ok - got them sorted on the flat land. PIVOT_WP_RATE from 10 → 90 for some reason got things working better.

But - i think this is the real cause, the slope of the land has been overiding the full reverse thrust on the inside track while turning down hill.


The slope is really mild, only a few degrees.
I will try out slowing down more before any turns. Any help appreciated, the mower seems keen drive off every slope/cliff going.
The mower is 250KG and does 0.5m/s - so has a bit of momentum to overcome.

Q: ardurover - pivot turns, but only from stopped, else just stop inside wheel ??

I switched the mower back to the original RC receiver - 2 channel skid steer, ie no ardupilot just transmitter – receiver – [speed controller – motor] x2

The mix on the transmitter has the following behaviour

  • If stopped, and turn commanded, reverse inside track for pivot turn
  • If moving, and turn commanded, stop the inside track only, for non-pivot turn

Which is impressive mixing on a very cheap chinese RC Transmitter
Im guessing and will investigate that the OEM’s tuned it to solve this problem.
My way forward is changing the black box chinese speed controllers, or tune ardurover to behave the same way. ie Pivot turn only from stopped - Possible ?

Hey Paul - Just reading this thread and seeing your tracks I have a few suggestions you might consider:

ATC_STOP_SPEED = 0.1 (at least)
Should ensure that the track speed controllers are not getting any forward commands during pivot turns.

ATC_ STR_ACC_MAX = >60 (OR 0)
Makes the steering rate the controlling parameter

ATC_STR_RAT_MAX = 0 deg/sec
Makes the ATC_TURN_MAX_G the controlling factor

ATC_STR_RAT_MAX = 0.1
Should be hard to achieve with your tracked vehicle

WP_PIVOT_ANGLE = 40 degs
Works well for me. Just a guess on your…

WP_PIVOT_RATE = 25 deg/sec
Makes a nice smooth turn for me without overshooting.

WP_PIVOT_DELAY = 0.5
This slight delay lets my mower fully stop/stabilize before a slow accelerating starts.

Hope something in here helps. I know how frustrating it can be after getting two mowers up and running. I have a similar, but smaller, tracked Chinese mower that I am thinking about automating. Likely the same cheap 7 channel radio and ESCs you have. FYI - I added a servo for the throttle to make it a bit safer/useful. Should add a kill also. It’s on the “List” this fall. Good luck!

1 Like

Thanks Steve - will step through my settings, and your suggestions. Suspect we’re close. My values in bold below - this is a great help, Problems seem mechanical (mass overcoming motor - on slope) but im hoping that better tuning will work around this.

ATC_STOP_SPEED = 0.1 (at least) : 0.1
Should ensure that the track speed controllers are not getting any forward commands during pivot turns.

ATC_ STR_ACC_MAX = >60 (OR 0) 180
Makes the steering rate the controlling parameter

ATC_STR_RAT_MAX = 0 deg/sec 360
Makes the ATC_TURN_MAX_G the controlling factor

ATC_STR_RAT_MAX = 0.1 0.1
Should be hard to achieve with your tracked vehicle

WP_PIVOT_ANGLE = 40 degs 45
Works well for me. Just a guess on your…

WP_PIVOT_RATE = 25 deg/sec 90 - had it lower but no pivots (!)
Makes a nice smooth turn for me without overshooting.

WP_PIVOT_DELAY = 0.5 now 0 but was 2 these occur after the pivot
This slight delay lets my mower fully stop/stabilize before a slow accelerating starts.

Biggest difference in params looks to be ATC_STR_ACC_MAX and RAT_MAX which seem way high. I’ll address that . Thanks again.

1 Like

Follow up post - Pivot turns are now spot on :slight_smile:

We replaced the cheap generic chinese speed controllers with VESC’s and the pivot turns became accurate and consistent. Seems the hardware was not doing what the flight controller was demanding - very difficult to tune inconsistent hardware !

The new controllers solved this problem, and also an occasional (<1% of the time) motor stall - which may have been another sign of the controllers falling over.

1 Like