ArduSub for a USV, Position holding

Hello. We have been building USVs (skid steering setup) for the last couple of years and optimizing them for good position holding (loitering in ArduRover). We have very good precision but are dependent on wind direction, as the vehicle always points against the wind (and or a combination with Current when available).
We are now venturing into a dynamic positioning project. More concretely we want to build a larger platform (5m x 4m) for scientific purposes. This platform must be able to hold position and any direction.

We are thinking of a trimaran setup , with both a bow and stern thruster and a main motor on either side. The idea being that we should have fairly efficient position holding and also cruising capabilities.

So here our question for the community: Would it be possible to use the ArduSub software to perform position holding? We understand that this isnt yet fully implemented, but we are willing to put in some legwork too! Any pointers are very much welcome.
I wanted to upload a sketch of the platform, but as a new user I’m not allowed to do so. Thanks

Here a little sketch of the proposed “frame”
platform_config.pdf (263.2 KB)
As you can see we are trying to keep it as symmetrical as possible so the behaviour is similar wether the wind is coming from the bow or stern.

Hi @wave_x, welcome to the forum :slight_smile:

Surface vessels are generally best handled with ArduBoat (ArduRover) instead of ArduSub. Support for the frame type you’ve sketched out seems to have been added a few years ago, so is likely quite mature at this point :slight_smile:

Thanks for the link Eliot. I will check with Mackay if the code for position holding has been developed as well. If not, would it be possible to use some of thee ArduSub code? If I understand correctly the position holding mode needs additional algorythms that run on an external processor? or can the autopilot handle this as well?

thanks, chris

Position holding requires a source of position information, or at least an accurate source of groundspeed, and with ArduSub that frequently comes via an external processor because underwater positioning sensors often don’t output a direct GPS signal that the autopilot can work with. The actual sensor fusion (for position/state estimation) and control algorithm are best handled by the autopilot itself, as it has the lowest latency between sensor inputs and control action outputs :slight_smile:

I assume since you’re using a surface vessel that you’ll have an actual GPS connected, in which case it likely makes sense to get one that can be connected directly to the autopilot (e.g. Pixhawk). From there I expect both ArduSub or ArduRover would be able to manage the position holding, although in ArduSub at least positioning is still considered developmental (not certain about Rover - haven’t worked with it and haven’t checked).

Note that positioning accuracy depends on the accuracy of the information source(s), as well as the actuator capabilities (e.g. if you’re operating in strong current then two thrusters in a given direction may be insufficient to hold a large platform in place).