I believe what you have proposed would be a much simpler solution than pumping ballast into the hull as transom tabs can be adjusted individually (left or right) and could easily be added using a simple servo command such as we use flaps in plane to generate lift the same could be achieved using trim tabs. One of our main fishing boats has trim tabs and without them we would not be able to accomplish much of what we do on rough water. I’m not sure if this could be used for a very high speed boat but might be able to, would depend on how quickly the servo could respond. Even if this didn’t help high speed boats it might be very nice for larger rover(boats) that are dealing with heavier waters at slower speeds. I am by no means a coder so they may completely come in and call this BS. My knowledge is based on real boats that don’t rely on a computer to control and are at much slower speeds than a high speed racing boat. Other than this being a cool thing to play with but also as randy said being a great test for the controller limits. Is this where ardupilot is looking to go? More towards the fun things like making the code compatible with how many million boards that are out there now or are they looking to be utilitarian open source controller for UAV/UGV? Is the mission statement posted?
They really make a huge difference on full size vessels, and I think if the servo response if good enough for the steering, or for plane flaps, then it would also be good enough for this application too.
Randy, there is also a system called ‘Humphree interceptors’ for full size boats that have a lot of applications, whether actively steering the boat for power catamarans or for trim and stabilisation at speed for powerboats. Similar to trim tabs but with a different mechanism.
It would be great to play around with this at different speeds and in different autopilot scenarios!!
i think we could add a roll and pitch PID and do a elevon mix. Harder bit is deciding what we should do with it. I guess as a starting point you could just target 0 roll and pitch. Maybe doing something like planes rudder mixing for roll on turns.
This trim idea sounds really good especially because it seems like this is what the full-sized boats are doing.
Regarding our mission, we do have a motto at least which is Versatile, Trusted, Open and a RoadMap (in the process of being updated now that we’ve had the annual developer un-conference) and I’m planning to keep improving Rover/Boat over the next year and it looks like others are too. I would very much like it if AP was used all over the world for all sort of different boats both for hobby and professional use.
Hi Peter, Randy,
Have a look at this video from around 1minute in. This outlines one stabilisation method in use on full size boats. https://www.youtube.com/watch?v=UlB67fa567c
Bear in mind this is a dynamic system, so boatspeed is required… it will not stabilise when at rest and unlikely to be effective when loitering. But this is also the case with any trim tab system. If you want stabilisation at rest, then a gyroscopic unit can be used, like the Seakeeper products… but I doubt this is the route you want to take.
It would be interesting to explore both the ‘interceptor’ construction, and the simpler version (a hinged a flap off the back of the boat). I think from a system point of view there is no difference… either method requires 2 servos to actuate the interceptor or flap on each side of the vessel. For maximum effectiveness you want these positioned as wide as possible on the transom.
I’m very happy to hear you are planning to improve and update the Rover software. Let me see if I can upload some pictures of my first 1.25m model at 7m/s. It is a custom built hull, internal structure and skins from 1mm ply, there is around 3kg of lead ballast on board. You can see a GoPro unit on the back which is filming the wake. At the moment I have a single 43mm propellor driving the boat. I will soon test a new hull with twin propellors.
These linear servos would probably work well for trim tabs.
if someone builds/has something with adjustable tabs to test with I am happy to do the code
Peter, I can test the code on one of the boats I have (see above pics).
Let me know what hardware you’d like me to get. I can 3d print some trim tabs and sort out the mountings onto servos.
It will take me 2-3 weeks to get to, but I’ll happily do it
What ever hardware you think will work best. From the code’s point of view it will just output a left and right servo signal.
Remind me when your nearly ready and I will see if I can sort out the code if I haven’t got it done by then.
Those tabs look good… I might get some of those…
I’ll read up on some of the hydrodynamics of the tabs, and also do some basic maths to see what kind of loads they’ll deal with which will allow to size the servos correctly.
With the current boat I have simply an output for motor and an output for steering servo.
I would guess you’ll just use two more outputs on the flight controller?
Out of interest, will you allow the outputs to be modified, or scaled?
And could we create an algorithm which modifies the output depending on:
- instantaneous craft pitch and roll (to seek a fixed value for either)
- instantaneous steering input
- instantaneous throttle input
That way we can use the tabs to modify the desired roll angle during turns and also modify the effect of the tabs as speed varies.
Very excited to get this working and experiment!!
I was thinking to do a roll and pitch PID loop to target zero. Then have a scaling parameter from rudder to target roll angle.
It will probably need some thought on what to do for pitch target angle, we can always put the target angle on rc channel for testing.
PID loop sounds great. Roll will typically seek 0 when steering is neutral.
But for good maneuvering setting the desired value is critical.
- For a catamaran it’s likely you’ll want to stay close to 0 during turns regardless of speed so thats an easy one.
- But for a monohull, the amount of roll in a turn usually depends on what ‘feels’ comfortable or safe when on a boat. Too flat and you feel like you’re being thrown out of boat, and too steep and the boat can spin out.
The roll affects the g forces experienced, as well as the turn radius and how much speed can be carried through the turn. It also affects how much throttle you need to complete the turn. So, for a racing boat, this would be really handy to optimize, and it will be different for each boat depending on type and number of props, and the ‘V’ of the hullform.
It would be nice to make the desired roll a function of both steering and throttle inputs:
- Steerage because that will indicate how sharp a turn is being executed
- Throttle because the desired roll angle in a turn also decreases with increased speed.
Regarding pitch… well the boat will usually pitch up a lot initially as it gets onto the plane, and then once there it will settle down. Ideally this is a function of speed, but for now if you could manually set the target (to say, 2-4 degrees bow up) that would be just fine. Bear in mind that the trim tabs can only create a bow down moment. So if the boats center of mass is too far forward, then it may not even reach these pitch values and the trim tabs wont do anything. (In his case the pilot can simply adjust the CoM further aft to increase the natural pitch of the boat at speed).
Lastly, I guess you could mix the two so that the roll outputs are simply added to the pitch outputs, and those mixed values are what the servos execute…?
I hadn’t thought about G forces, I guess if we wanted to be fancy we could target the gravitational vector to be down in the boat frame. The analogy would be a bicycle leaning in to the corners. I think plane has something like this for do in coordinated turns, maybe we could borrow the code.
Yeah, I was planning to do this, in plane terms its a elevon mix.
I wonder if perhaps the target lean angle should be based on the lateral acceleration (or desired lateral acceleration)…
This is so exciting!
I think the lateral acceleration would be a great way to tune the roll of the vessel for a given steering input.
And if we could manually set to seek 0.1g’s into or out of the turn that would also be really useful…
I think this has the benefit of allowing you to still turn very sharply and experience a ‘high g’ turn whilst maintaining control and directional stability. The roll control should mean that the g’s experienced are purely acting ‘vertically’ in the boat reference.
Code is done,
Get building!, what flight controllers do people want it compiled for?
Disclaimer: Its untested so could all be backwards or not working in some other exciting way.
Peter, thanks so much!
I’ll be able to get to this in a couple of weeks. Will keep you updated!
Can’t wait to try it