Servers by jDrones

Boat steering pid tuning - pid desired to low

(Piotr Szychowski) #1

Hi All,
today I was trying to tune the steering PID on my skid steered boat. According to the manual

First of all I’v checked(and set ACRO_TURN_RATE )the max turn rate on manual mode(like on video) - it was about 30 degrees/s.

In manual mode the turn speed is good but when the boat is in Acro mode the turn speed is very low. I’v tuned the ATC_STR_RAT_FF parameter to about 2-2.5 to get a similar performance to manual mode(about30deg/s). The problem is that then the pid_desired value is about 12 degrees/s and pid archived - 30 - as I need it to be. This is a problem when I introduce the I parameter - the error between desired/archived is building up and all the other bad things happen.

The pid desired value gets 12 when the RC steering stick is on maximum value. Why is the pid desired value so low on maximum RC stick movement? As I understand I need to change something that is responsible for RC_IN - pid desired mapping - what is it?


(David Boulanger) #2

Can you post a log please?

(Piotr Szychowski) #3

Log in link:

(David Boulanger) #5

That’s a Tlog. I need a .bin to give my marginal advice. A description of the boat would be good also. Size, weight, propulsion system, etc.

(David Boulanger) #6

The only thing I could tell from the Tlog is it seems to be a displacement hull running on 4s battery

(Piotr Szychowski) #7

Finally I’ve got the log:!4oMExaza!d6gLwtIulNHb-xyVW_mghw

More info about the setup:

(David Boulanger) #8

I’ll look at the logs when I have time. maybe in the morning. It’s similar to my boat only you are a bit heavier.

(Piotr Szychowski) #9

I’ve tried to review the log myself. So this is the exact situation that I wrote about DesTurnRate is about 15 when the steering stick is max - (about 1900ms).
As I found in ardupilot/APMrover2/ mode_acro.cpp

const float target_turn_rate = (desired_steering / 4500.0f) * radians(g2.acro_turn_rate);

the target turn rate is a variable of desired_steering and acro_turn_rate - which is about 30deg/s.

(rmackay9) #10

It looks like maybe the vehicle is being controlled in Steering mode instead of Acro. In Steering mode the pilot mostly controls the vehicle’s lateral acceleration. Only when the vehicle is stopped (in Steering mode) does the pilot control the turn rate. In any case, I don’t recommend Steering mode, I think it’s best to stick with Acro. In Acro mode the user controls the turn rate directly which is much better I think especially for skid steering vehicles.

(Piotr Szychowski) #11

Vehicle was in Acro for sure.

(rmackay9) #12

Perhaps I’ve downloaded the wrong log then? If the messages are filtered for “MODE” then we see what’s below…

(Piotr Szychowski) #13

Yesterday I made an experiment. I changed the acro_turn_rate to 60(incresed it 2 times) and the pid desired was still stuck at abotu 12deg/s. From this I conclude that the issue must be somewhere higher than the mentioned above code fragment, which is multiplying desired_steering and acro_turn_rate.

(Piotr Szychowski) #14

Yep, use the 16.BIN file. Sorry for uploading all 3. @David_Boulanger