Boat steering pid tuning - pid desired to low

Hi All,
today I was trying to tune the steering PID on my skid steered boat. According to the manual http://ardupilot.org/rover/docs/rover-tuning-steering-rate.html.

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?

Regards

Can you post a log please?

Log in link: https://drive.google.com/open?id=10wl8IcNjc_HB-gBPzOMos3nuPfvBhQgQ

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.

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

Finally I’ve got the log: https://mega.nz/#F!4oMExaza!d6gLwtIulNHb-xyVW_mghw

More info about the setup:

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.

1 Like

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.

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.

Vehicle was in Acro for sure.

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

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.

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

@zikann did you figure out what was wrong. I’m having the same issue I think.

I’m sorry, it was years ago, I don’t remember how I overcomed this. I belive I’ve just tuned the PI parameters somehow and the results were acceptable but the issue persisted.

In loiter mode and steering mode it works really well. Well enough for me to be happy. But in auto it zig zags a lot. I’ve changed the P and FF high and low but it cannot achieve the desired. What’s weird that cannot figure out is I should be able to see the PID blue line in manual mode but it only moves in Acro along with the red.