Adding control surfaces to ardusub

Hello,

I’m trying to modify the ardusub firmware to include surfaces control so that they can be taken into account in the autonomous modes. Is there any tutorial for this purpose ?

Hi @thomas_G -
There is not! ArduSub doesn’t support control surfaces, and adding it is a challenge that has come up before…

1 Like

Hi @thomas_G,

Control surfaces are one of a collection of advanced control mechanisms that are not yet supported in ArduSub. While we would welcome development efforts in that space, it is a developmental problem - not an existing feature that can just be enabled.

As @tony-white mentioned, it may be helpful to search the forum for existing approaches and discussions, and potentially to join forces with other interested parties :slight_smile:

Beyond that, you may be able to take inspiration from plane or rover firmware, which already have some degree of control surface support, and/or you may be inclined to modify one of those firmware to work underwater if they are otherwise more suited to your intended application/vehicle. Alternatively it may be possible to add control surface support quasi-externally, via Lua scripts the autopilot can run (instead of building the functionality directly into the compiled firmware).

I would note that from internal discussions we are leaning towards a Lua-script based approach to help achieve several of those advanced control mechanisms, including having a more generally dynamic “motor matrix” approach than the currently statically defined one.

There’s no tutorial for functionalities that don’t exist yet, but the key difference to be aware of here is that the control authority of a control surface depends entirely on the motion of the surface relative to the surrounding fluid (and there is no authority if there is no such motion), whereas a thruster actively pushes fluid in a particular direction to generate its control authority.

1 Like