PID tuning of a skid steering catamaran autonomous boat

Hi,

I am currently working on a skid steering catamaran boat prototype along with some friends for bathymetric surveys and mapping.

The boat is about 1.8m long, 1.4m wide and weigh about 70kg.

The hardware used:

FCU: Blue Robotics Navigator Flight Controller with Raspberry Pi 4 with ardurover 4.5.7
Thrusters: 2x T200
GPS: 2x ublox zed F9P in RTK Fixed mode, one module at the base station and the other on the boat.

For several days we have been trying to get the boat to perform an autonomous mission with few waypoints and tuning the PID parameters of the throttle and steering controllers by following the tuning guides as well as the navigation or SCurve controller.

We haven’t had much luck of getting the controllers ot perform well enough, the boat usually tends to overshoot in corners and as such takes long time to follow the straight line between waypoints and also never perform SCurves at all even though the pivot turns parameters was set to 0.

Request:

I hope if someone could have some time to investigate the DataFlash logs attached and points us to where things could be improved.

Few things I noticed from reading through different topics here in the forums and during the trials that could help narrow down the source of errors, please correct me if i’m wrong:

  1. I have to specify the offset between the GPS antenna and the FCU in GPS_POS1, which I haven’t yet.

  2. From the logs the yaw innovation looks very high even though we calibrated the compass in the navigator (which blue boat uses as well so we think it should be adequate enough for our use case until we switch to a more robust method of estimating the yaw like a moving baseline) by using the default onboard mag calibration “process many times” (we had to detach the two hulls from the main compartment to manage to carry and rotate the compartment during calibration).

  3. The gz graph indicated that the boat’s angular velocity can reach up to 38 degree/sec but when we tried to calculate it manually by steering the boat 360 degree repeatedly it managed to achieve a full rotation in about 17 to 20 sec which indicated a maximum of 21 degree/sec turn rate, so we had to write this value in ACRO_TURN_RATE parameter instead of the 38 value.

  4. Limiting linear speed of the boat through decreasing the WP_SPEED did improve the performance of the controllers a bit.

  5. The number of visible satellites is always 12 from mission planner, but when connecting the gps module at the base station to u-blox center it’s visible that the number of the satellites is way much more, so I’m not sure if there is a certain parameter in ardupilot that should be set to remove this limit if it exist?

Photo:

Here is a photo of the boat with the black circle denoting the placement of the GPS antenna on the boat and the red square as the FCU:

Logs

Here are two DataFlash logs during two different trials each with different PID parameters:

DataFlash Log 1

DataFlash Log 2

Thanks a lot !

Hi,
just a quick suggestion regarding the boat specifications. if you are on still water with no wind, this setup might work fine. but i have to say that i would not recommend using only 2 T200 thrusters on a boat that has 70kg.

i am using the same motors on a catamaran boat that is very similar in shape with a similar setup (pixhawk 4, Emild Reach RTK, raspberry pi as companion computer and a small laptop for bathymetry software)

this boat has more like 25 kg and is not very fast (top speed is like 1.1 m/s) also since the echosounder displaces water often not in an optimal way.

i imagine 70kg to be just too heavy for this setup.

(we have also a heavyer boat where we use 5 speed outboard motor and big servo to turn it (vectored thrust). That works very well with ardupilot for grid missions)

best regards
Benjamin T.

1 Like

Hi Benjamin,

You are right, the boat is very heavy indeed with many manufacturing flaws but still it’s just a prototype for now and we plan to redesign and remanufacture it to become way much lighter.

All the trials we are conducting right now are in a diving pool not in an open sea so we didn’t face any troubles with the wind so far but I’m sure it will be a problem once we go to open waters.

The boat’s max linear velocity was about 1.7 m/s in our case more or less. It’s also worth mentioning that the weight of the boat is not a factor of the top speed only the drag and hydrodynamics of the boat.
The weight only affect the acceleration. which in turns makes the PIDAchived lags behind the PIDdesired but once we reach the target velocity the weight is out of the equation. Bigger thrusters would result in a faster response for sure.