Rover Steering Setup for Big Craft / Vehicles

Rover steering for the various types of craft within the ArduPilot parameters has to be one of the most complex aspects a user will come across if you step outside of the ‘model size’ arena. What I mean by ‘model size’ in my case (power boats) would be what we call a ‘Bait Boat’ conversion. This craft is typically under one meter in length, has a single shaft drive electric motor with a blade type rudder and top speed is under 2m/s. With batteries and electronics it weighs around six kilograms. This craft will run a mission at full speed on full default with an accuracy of around 90% which is fantastic. However, as soon as the size, weight and propulsion is increased the mission accuracy drops proportionately and ultimately, simply put, is impossible to tune using the current parameter options.

Baseline Parameters based on Craft/Vehicle Specs
Before a single parameter is touched in Mission Planner, the user should go to a website for example to get the ‘baseline parameters’ where the following questions are asked about the vehicle/craft:

  • Length
  • Type (mono/catamaran/trimaran)
  • Weight
  • Propulsion Type
  • Propulsion Thrust
  • Fuel tank capacity
  • Location of fuel tank
  • Fuel consumption @ mission speed
  • Max Speed
  • Mission Speed
  • Minimum Turning Diameter to Port @ mission speed
  • Minimum Turning Diameter to Starboard @ mission speed
    Once this is completed, a baseline parameter list can be downloaded for Config Setup in Mission Planner.

On the water adjustments
Once the baseline parameters have been written to craft, further refinement options can be made based on behaviour of the craft in relation to mission accuracy. Rather than an alphabetical list of parameter settings, a table type of list with the parameters that will most likely influence the behaviour being at the top of the table.

Mission Settings
The Mission Planner I believe also needs to know something about the craft/vehicle in order to know what the limitations are. For example, if the angle of the heading change from one waypoint to the next is more than a certain degree, the relevant throttle correction should be made at a distance from the waypoint that is sufficient for the craft to actually achieve the desired speed in time.

Hi @John_Easton,

Thanks for the comments.

Have you seen MP’s basic tuning screen? I think this is what is intended to be the screen that users use to adjust the parameters that most often need changing including tuning parameters. I certainly use this screen a lot.

Re the suggestion that we have a page that users can go to to input the physical properties of the vehicle. We don’t have this but instead we try to document the tuning process on the Tuning Process Instructions wiki page. There is one important aspect which is missing from these pages which is to tell users to set a few parameters which define the vehicle’s maneuverability:

  • ATC_ACCEL_MAX, ATC_DECEL_MAX ← vehicle’s maximum forward/back acceleration
  • ATC_TURN_MAX_G ← vehicle’s maximum lateral acceleration
  • ATC_STR_RAT_MAX ← vehicle’s maximum turn rate
  • ATC_STR_ACC_MAX ← vehicle’s maximum rate of change of turn rate

Re the “Mission Settings” comments above, I think the vehicle will already slow down based on the angle of the upcoming turn using some of the parameters above.

I don’t agree that it is “impossible to tune using the current parameter options”. I’ve tuned all kinds of vehicles and there are examples of quite large vehicles (e.g. Ocius) using AP successfully.

I know tuning a Rover/Boat with AP can be a challenge and I really want to help you with this. What I need is to see a binary log from the vehicle that is having problems so we can work together to get it navigating more accurately.

Not to put too fine a point on it but I think I’ve asked for logs a couple of times recently but I’m just not getting them for some reason. Maybe they’re too large? Maybe the vehicle isn’t easily accessible?

@rmackay9 would it be possible to do an auto tune mode for this?

it wouldnt be too hard to figure these parameters from a few aggressive manoeuvres.

ATC_ACCEL_MAX, ATC_DECEL_MAX ← vehicle’s maximum forward/back acceleration
ATC_TURN_MAX_G ← vehicle’s maximum lateral acceleration
ATC_STR_RAT_MAX ← vehicle’s maximum turn rate
ATC_STR_ACC_MAX ← vehicle’s maximum rate of change of turn rate

full ahead to full astern
180 at full speed followed by 180 in opposite direction.

1 Like

@geofrancis,

Yes, I think this is a really good suggestion and one of the Partner companies may be funding the development of an autotune for Rover/Boat over the next few months… I’ve at least heard talk of this although perhaps it isn’t confirmed yet.

1 Like

I think the difference in high speed vs low speed performance of boats might be an issue. quads and planes essentially work the same at all speeds. but boats can plane, turn on the spot at zero speed, sail, be omnidirectional, have keels, rudders, thrusters, nozzles, side slip, so it might have to be split into a high speed tune and a low speed tune for both forwards and reverse. since for example, a boat planing is going to have very different handling than it fully in the water at very low speed, rudders are generally useless in reverse, water jets dont work without throttle.

2 Likes

I really like this idea! I thought autotune was somewhere on the roadmap for Rover already, but I may be mistaken.

I definitely have a grasp of the technical challenges as GeoMuir points out, but even having a method to measure or “learn” the rate and accel parameters would be a step in the right direction.

Selfishly, I hope we see S-Curve navigation for Rover first, but autotune of any sort might actually have more utility to the community (at least the portion of it that we see desperate for help here on the forum).

3 Likes

@Yuri_Rage,

SCurves are definitely coming first and I hope to get some alpha testers giving it a try in the coming week or two. I’ve already driven it myself on a vehicle and it seems to work fine but there are a couple of bugs:

  1. Guided mode on skid-steering vehicles turns in the wrong direction if the target is behind the vehicle
  2. Auto mode reversing doesn’t work (e.g. using DO_SET_REVERSE to cause the vehicle to back around the course in reverse)

Neither of these are necessarily show-stoppers for beginning of testing but I still hope to fix them this week.

2 Likes

Just my experience - built my 1.8m 14kg pipe catamaran and installed 4.1 arduboat with skid steer and two thrusters. I was mentally bracing myself for tuning potential weaving issues out - but had ZERO. Randy - thanks your tuning rover videos PIDS, feedforward - really useful. The defaults - which were close, needed fine tuning only - and now the boat navigates swirling rapids better than i can drive it manually. Way better. typical speeds are around 2.5ms
Maybe i got lucky - but my experience was and continues to be - awesome.

Thank you Randy, and yes, I have used that a million times, but a change from 3.5m/s to 3.6m/s and I’m in for 6 months of fiddling and then still having issues. I will include some screenshots to show you what I mean.

WRT - logs
I am currently building a brand new boat that will replace all me previous craft and will value your input very much when setting it up and don’t want to waste your time with the current AIMy.

1 Like

Here are some screenshots of a recent survey of a very small dam where the craft is doing 3.5m/s with passes 18m apart and total distance 104km for the day.

Most of the mission was very good with an accuracy of around 2m, but then where the angles get a little tighter, it totally loses the plot by 25m and then makes a desperate attempt to get on track not before massive over steering.

Good

Good

Bad

Bad

Total DISASTER!!!

Ok, thanks for the pics. It could be many things including:

  1. non-linear steering or throttle response
  2. vectored thrust is not setup
  3. rate controller is not tuned well
  4. some of the frame specific limits are set too low (ATC_ACCEL_MAX,ATC_TURN_MAX_G, ATC_STR_RAT_MAX, ATC_STR_ACC_MAX)

But this is really a guess… looking forward to logs…

Randy, I just find it strange that pass 1 & 2 are perfect, but from pass 3 the loopy da loop starts, and whats even more strange is that the loopy da loop is almost identical pass after pass after that. That tells me it is not a ‘random action’, but a decision made by the machine on purpose.

@John_Easton,

It’s difficult to say without a log but it is unlikely to be a “decision”. Instead it is more likely to be the result of an environmental disturbance (e.g. wind, current) or feature of the mission (e.g. a very sharp corner) that the controllers are unable to deal with perhaps because of imperfect tuning or a non-linear response.

Log please! It’s all guesswork without a log.

Thank you Randy.
As far as environment goes there was zero change until about pass 6, then a light wind picked up but nothing that will affect this particular craft adversely.
The *.bin files are HUGE on these >100km missions, is there any way to reduce the size of the log being created?

@John_Easton,

Ah, yes, keeping the logs small is a real issue for these long distance vehicles. In Rover-4.2 we’ve added LOG_FILE_RATEMAX that limits the maximum rate of individual messages. A lot of the log is made up of IMU and other sensor data messages which aren’t helpful for this analysis.

… until 4.2 is out you could try turning off the IMU messages by modifying the LOG_BITMASK parameter to see if that helps.

Thank you Randy, I will try that.
The new AIMy should be ready for a water test any day now so I will create some smaller missions.
I’m so excited to get this new craft setup, thank you so much for your patience in this matter.

1 Like

Hi Randy, what is the best way to determine these parameters:-
ATC_ACCEL_MAX, ATC_DECEL_MAX ← vehicle’s maximum forward/back acceleration
ATC_TURN_MAX_G ← vehicle’s maximum lateral acceleration
ATC_STR_RAT_MAX ← vehicle’s maximum turn rate
ATC_STR_ACC_MAX ← vehicle’s maximum rate of change of turn rate

John,

I am interested in your boat progress as I am about to build one soon, so I’m following this thread.

You may already have seen these (I know you are an old timer here on the forum :slight_smile: ), but not too long ago I started over with tuning on my mower and was very pleased that the docs seemed to have been updated and gave some very specific help on some of the parameters you mentioned.

Specifically, for the ATC_ACCEL_MAX and ATC_DECEL_MAX, see the “Acceleration Maximum” heading at Tuning Speed and Throttle — Rover documentation (ardupilot.org).

And for ATC_STR_RAT_MAX,
Tuning Turn Rate — Rover documentation (ardupilot.org), guides you on how to set ACRO_TURN_RATE and then later on that page instructs you to set ATC_STR_RAT_MAX to that ACRO_TURN_RATE value.

Sorry, if I’m giving you info you are already aware of!
Kenny

Hi Kenny,
When I eventually got it right a few years back, I have since then been simply loading those same parameters to all my craft, and in all honesty, never knowing which one actually made the difference as it was like it just happened.
Since then so many things have changed within Mission Planner and Rover 4.1 plus I’m running a brand new boat design so I’m going to have to learn.
Another factor forcing my hand is that since uploading the latest firmware and MP update, if I simply load my old parameters, I no longer have telemetry, so I’m forced to start from scratch.
I still believe a ‘starting point’ database needs to be created before fiddling with anything.
Regards
John
www.fishtec.co.za

1 Like

If you go to compare parameters you can add them selectively. You don’t need to restore all parameters.

1 Like