Can Ardusub support coaxial, counter rotating props

I’m designing an underwater vehicle that, I hope, will have coaxial, counter rotating propellers. My intent is to use these as both forward/backward thrust and roll control.

Will Ardusub support this requirement?
I know about the Motor/Frame matrix. I was wondering if just using the forward motors into the roll function would be enough.

I guess this would be a mixing issue, not unlike a V-Tail on a plane.

Thanks for any help

Mark Kozikowski

Hi @mark, this sounds like an exciting project! :smiley:

I’m not entirely sure what you mean here, so am struggling to meaningfully comment on whether it is functionality that ArduSub already supports.

In case it’s relevant, ArduSub’s frame matrix is used to support vectored thrusters (where fixed-orientation thrusters can contribute to multiple motion axes), but ArduSub does not currently support thrust vectoring (dynamic thruster orientation) or control surfaces.

Hopefully that answers your question, but feel free to follow up if it’s still unclear. A diagram of the intended thruster positions and desired motion axes would likely be helpful :slight_smile:

Thanks Eliot,

We are designing a thruster configuration where we have two thrusters, running in opposite directions, configured on the same axial line. Think of outboard motor that has two propellers, running on a single axel, running in opposite directions.
This will primarily be used to provide roll control.

I will look into the Frame matrix, but I was wondering if anyone had tried this configuration before, which would save me some development time and mistakes.

Thanks again,


Hi Mark -
So if I understand correctly, you intend to run those two coaxial thrusters to provide forward or reverse thrust, but then by running one faster than the other, impart a roll moment to your vehicle? This would happen as it traverses along? I don’t think Ardusub will let these motors also contribute to roll control, especially as the roll force is due to a difference in throttle levels, and not absolute throttle position of a motor that controls roll.
It may be possible to hack with a unique matrix configuration, but I’d look into modifying the ardusub firmware to support if not.


Thanks for your help. That is pretty much what I had thought. But, as it is a requirement for my latest designs, I am going to have to come up with a way to do it.

I would appreciate any help if you can think of anything that might lead me in the right direction.


At least in my head this seems like this should be possible by just matching the signs of one contribution and setting them opposite for the other (e.g. if both are set to +1 for the forwards contribution, then one would need to be set to +1 for roll and the other to -1).

That said, it’s quite possible I’m misunderstanding the situation, and I’m not certain that approach would be optimal even if it does work - I’d need to think about it more.