Can't find good PID settings for large Rover


From several month we try to setup the PID settings for a “large rover” but we did not succeed…
Rover goal is to move on farming field. It’s a rover with 4 motorised wheels. Two fixed in front and two mounted with a servo at the back. So direction is at the back.

Manually all is OK, we can moove and control the Rover.

But When we try to simply make a straight line in auto mode, the rover completly go far of the waypoint.

Exemple : we try to go to point “1” from point “0”.
We try several times with several PID setting, result is… :

This is the log : Download -

Do you know wich parameters we need to adjut ?

1 Like

Did you perform the basic tuning?

  1. Speed and Throttle
  2. Turn Rate
  3. Navigation

Your steering control is very badly tuned.

Look at this plot of desired vs actual steering rate in degrees/sec:

The flight controller is demanding much higher turn rates than the vehicle can physically achieve.

Your speed control is slightly off too:

As @dkemxr suggested, see Tuning Process Instructions — Rover documentation for tuning instructions.


Thanks for your help.

We have reset all parameter and do the speed tuning first.
but had an issue : When I’m in Accro mode, Throttle stick at the lowest position : rover run a bit, stop, run a bit etc. How I can resolve this issue ?
In manual mode : no issue, stick at lowest position = Rover not running.

Log file of yesterday tries : Download -
No test in Auto mode here, juste manual and Accro to try to tune the Rover.

For the speed tuning, I used the instruction, but seem that “speed” can’t achieve the “des speed”.

Example :

How I can reduce the desired speed ? As it seem that the rover is at his max speed
(We have the same issue with the turn rate…)

From the graphs, you’ll want:

For the steering, change ACRO_TURN_RATE to the maximum turn rate (in deg/sec) that the vehicle can physically achieve.

If you carefully read the official documents and carefully debug the words, it is impossible to appear such a situation, I suggest you have a good read, how to debug the throttle and speed, turn and speed, line and other content.

What “situation”? I have successfully tuned several Rovers and posted the results here many times. What are you talking about?

I’m sorry I offended you. You’re amazing!

Thanks all for your help. I made new tries, but still have some issues, but one problem at a time :smile:

My 4 motors are wheels with integrated motors.
Controler take PWM in input and a pin is used to choose between backward and forward.
(Contrôleur De Moteur Pour Vélo Électrique Ebike,24/36/48v 500w,23a,30a,Avec Fonction De Frein Et De Recul,Courant Continu - Buy 23a Controlller For Scotter,48v To 64v 1000w 60v Motor Controller Dc Motor Speed Controller Ebike Controller $17.20-$19.00,Dc Motor Speed Controller Product on

On MP, I actually choose “normal” ESC : my rc transmitter throttle are without spring return (such as to drive plane). So If stick full down = 0% motor, stock full up = 100% motor
And I’m using a switch of the transmitter to choose between backward/forward.

I can left as this, or it’s an issue and I need to use “brushed with relay” ESC type ?
(Note : To switch between backward and forward, motor need to stop, otherwise, motor don’t moove anymore)

I made new tests yesterday to tune the speed PID but had issue in Accro Mode.
On the graph the PID desired is too high. The rover can’t achieve the desired speed.

I set the CRUISE_SPEED to approx 0.7/1 m/s (I tested several values) but pid ask for approx 2 m/s

Where I can resolve this ? (like ATC_STR_RAT_MAX for the turn rate)
– EDIT – I think I found the parameter : “FS VALUE”, I will try this afternoon.

I also had another issue : even if I put the throttle stick à 0% (full down) the PID desired seem to be crazy and ask 1m/s, 2m/s etc. (I cant’ show you log as I made a mistake and had no log of this try).

Why PID desired is not 0 when my stick are 0% ?

You do not have to test values for cruise speed. Just follow the docs for learning cruise speed and it shoukd come up with a reasonable value for cruise speed and throttle percentage.
FS_Value is the Failsafe Value, it has nothing to do with speed.
Check your transmitter for any trim settings. The autopilot can not tell if the input is coming from a stick movement or the trim. Leave all trims at zero.

I previsouly used the learn function, but someone here say me to change the two speed parameters.
I made new test, using the learn function, and in acro all seem to be ok.
Trim was also the issue : set it to 0 instead of the middle, my bad…

Steering PID in acro mode seem to be ok too (I need to tune a bit more).

After the last try, I have two issues :

1 - In acro mode, sometime the rover stop to move even if my stick is at 100%.

2 - In auto mode, the rover do “circle”
I attached the log and also a capture of my screen where we can see that the “target heading” are very strange. Target heading sometine point to the opposit direction.

Vidéo : Download -
Log : Download -

Hexor, this is a very delicate subject, and one I have battled with for years. My best advice is not to take any advice from anybody that has not actually successfully set a large rover up themselves.
The reason I say this, is that the documentation available works perfectly for little RC boats and cars, but big ones … not even close.

I search a lot on the web about the target heading which is “strange”, but can’t find where I need to search to resolve this issue.

It’s a PID issue ? compass issue ?

In my case I believe it is a position controller issue with the firmware.

On the “messages” tab from Mission Planer, I can see “ArduRover V4.2.3 (2172cfb3)”
So If I not wrong, it’s the latest stable version.

What do you suggest me to solve this problem?

Tip #1: Establish the speed you require, and never change it. Then start working with your PIDs and NavL1.

How you transform the analog signal of that controller to PWM? or you dont do it? how big is your rover? can you share a photo?

I wired as this :
PixHawk 6C → PT01b → Motors controlers

PT01B :

For the direction, the big servo motor are directly connected to the PX6C

The weight of the rover are approx 80Kg, 600mm x 1200mm