New flight mode for underwater multicopter

Hi everybody,

I’d like to implement a new flight mode for underwater multicopter based on Stabilized mode.

The main difference is the drone will float and go up when motors don’t spin.
I’d like to implement the stabilize mode with the faculty of spinning motors to go down (and UP with bidirectionnal ESC).

Is there somebody able to tell me where to start in the code?

I never programmed Ardupilot and I’ve some little skills in C++, but I’ve 20 years of programmations in Java.


1 Like

Then, I put here my research about the subject because it could interest somebody later

I tried to configure ESC with bidirectional function (Blheli ESC).
But it doesn’t work because I don’t found any option to parameter the bidirectionnal configuration

I’ve found Betaflight firmware could manage 3D flight, which could be an option. I’ll try tomorrow.

Have you checked ArduSUB?

Hi and thanks for your reply,

I’ve thinked about Ardusub, but I don’t know it.
But the drone have also to flight in the air… Then I don’t think Ardusub could be the solution.

ive read posts in the past which dealt with getting inverted flight working. I would search for those posts and start there.


For the moment I 'm gone to Betaflight 3D solution, that I think could manage my under water solution.

I’d refere Ardupilot, but I check the code, and I don’t see where to start to implement a new flight mode!!!

The Ardupilot dev documentation has a section about adding a new flight mode:

The documentation also introduces the code and how the various systems interact in the “Learning the Code” section.

Also, Stabilize might work just fine if you have reversible ESCs, unless you are flipping the drone upside down to swim.

Thanks a lot.
I’ll check that.

FOr the moment, I configured my drone with Betaflight and 3D mode, that does what I want.

Are you able to use GPS for position hold with betaflight? Can you post pics of your hardware and setup? I am interested in this…


Yes Betaflight is able to make GPS position Hold… But under water the GPS signal is unusable.

For the moment I’m testing on a standard quad copter with a Kakute F7 controller.

Are you sure about hold mode in BetaFlight?
As of a year ago it could not… They added a rudimentary fly back in the direction of home mode last year… (I wouldn’t even call it RTL because it only got you in the general area).
But, maybe something has changed while I’ve been focused on Ardupilot for the past year.

I’ve just checked and your’re right, there is no GPS Hold position function.
I’ve seen there is a GPS configuration and deduct there is a GPS position hols function.