Hi guys,
Sorry for this TL;DR post.
So, I have this huge raft that I’m trying to control using ArduPilot (I’m riding along at all times, so very little risk for collision with others) . But I’m about to give up on the tuning, so looking for some advice on where to focus going forward before I bury the project.
The raft is 4x10 meters
3 rows of pontoons. Rounded underneath, so basically no keel.
Dry weight approx 1500kg
Powered by an electric outboard (Haswing Ventura 5.0) i.e. Vectored thrust
FC is Matek H743 Slim V3 running Rover 4.5.2
GPS is Holybro M9N DroneCAN
Telemetry via ESP32 (Dronebridge)
GSC is Mission Planner
Max speed is about 2 - 2.5 m/s but I usually cruise around 1.5-1.9.
The steering angle of the outboard is controlled using a home built servo (stepper motor with pulley and feedback pot). It’s not perfect, nor fast, but it works for me in manual mode. Driving this vehicle manually requires a constant flow of small corrections to keep her straight. It’s just that I’m unable to teach the FC to do it as well as me.
The throttle is electronically controlled using a microcontroller with a digipot that’s emulating the throttle signal from the original throttle lever.
On the tuning part. I think I’ve successfully tuned the speed/throttle controller reasonably OK. But the Turn Rate controller overshoots a bit, which I ultimately think makes it impossible for the navigation controller to do a proper job. And the only way to get that somewhat OK is to turn down the turn rate gains by a lot. Or cap the ATC_STR_RAT_MAX (it can do around 7 if unlimited). But even then, I can’t get it to complete an auto mission without weaving big time.
I suspect, due to its weight, there is too much mass involved, that makes it 1) slow to react to “desiredpid” demands, and 2) overshoots if too agressively tuned and then turns into weaving. My servo is not fast - takes about 6 seconds to go full left to right, but most of the (manual) navigation takes way smaller corrections to keep it on a straight path. So the effective time of changing the angle is much less. I just mean the servo is physically able to do it. The question is if there is a chance I can get Rover to do the same?
For some time I thought the problem was mainly the PSC_POS_P parameter being way to high for the vehicle. I reduced it to 1E-13 which I think improved things a bit. But I’m not that sure anymore.
I have some logs. But unfortunately I don’t have any clean runs where I’m not changing any parameters during the sessions. So just providing what I have here.
I have some logs, even though I realize the testing has not been very structured.
A session where I did some auto. Got a bad gyro error (I think due to rebooting the FC on a wavy lake, when not being still…) but hopefully that’s not the issue here.
https://www.dropbox.com/scl/fi/w55f6xqggsbjzvdbw7tf8/00000105.BIN?rlkey=48ecm37awghnl5v5t3g146hpk&st=urc5as0v&dl=0
A mix of everything, not sure if useful
https://www.dropbox.com/scl/fi/ikknjx9gchp3s1jg5fj0m/00000106.BIN?rlkey=7xxjulbf0bmxb1xpfea6e9i8i&st=plg1wsr4&dl=0
I think mostly driving around in Acro (trying to tune the steering rate controller)
https://www.dropbox.com/scl/fi/xkmea9y2ubadauqi44vnl/00000107.BIN?rlkey=tqienq2ulbfdzqjkb9lybr82l&st=ciq4da7r&dl=0
If the logs are useless, I’m happy to collect new ones based on instructions.
Where should I focus next? Improve my servo agility? Just spend more time on tuning the rate controller? Please be nice
Any help is very much appreciated.
Best Regards,
Andreas