Issue with Stabilize and Depth Hold flight modes

I am using the BlueROV2 with the advanced electronics package and had a successful first dive in “Manual” mode, but am having an issue with both the “Stabilize” and" Depth Hold" flight modes. Every time I switch to either of these the ROV immediately starts a tight counter-clockwise spin.

I found a forum post (BROV2 1st Dive Test: Control Issues - #2 by jwalser) that I thought would fix the issue (as I had similarly reversed the vertical thrusters to joystick forward= descend), but after switching it back to the default I am still having the same response of a CCW spin.

Finally, we trialed physically holding the ROV in these two modes to feel the movement. It appears to be autocorrecting to the opposite direction it should once it gets off heading. In “Stabilize” mode, rotating it off heading to the left causes increased propulsion to the left (when it should autocorrect right). In “Depth Hold” mode there’s the same issue , but also the vertical response appears opposite (pushing the ROV down results in further downward propulsion).

Has anyone encountered this issue or have any insight? Thanks in advance for the help.


Hi Steph,

Thanks for posting. There could be a few things that could cause this:

  1. The Pixhawk might think it’s upside down. You can check that in QGroundControl by making sure that the artificial horizon on the right side shows green on the bottom and blue on top.

  2. The motors could be reversed, which would also make your joystick controls reversed. Does the vehicle turn nose-right when you push the right joystick to the right?

Let me know if either of those might be the issue.


Hi Rusty,

Thanks for such a rapid response!

  1. I checked QGroundControl and yes the green is on the bottom and blue on top.

  2. Yes, pushing the right joystick to the right turns the ROV nose-right.

One other detail: QGroundControl is reporting that I have a missing parameter (-1:FRAME_CONFIG). Perhaps this is the source of the issue?



When did you purchase your ROV? We had a few slip through with the wrong firmware installed on the Pixhawk. Please do the following:

  1. Remove power from the ROV by unplugging the battery.

  2. Download this firmware (.px4) file to a location on your computer that you will remember.

  3. Remove the micro USB cable from the Pixhawk that is connected to the Raspberry Pi.

  4. Open QGroundControl on your computer.

  5. Click on the icon that looks like gears in QGroundControl, then click on the tab labeled ‘Firmware’.

  6. Attach a micro USB cable to the Pixhawk, and connect it directly to your computer.

  7. At this step, options should be available on the right-hand side of the QGroundControl window. Click on the box that says ‘Advanced settings’, then choose ‘Custom firmware file…’ from the drop-down menu. Click the button that says OK.

  8. Choose the .px4 file that you downloaded, and wait for the firmware to update.

  9. Replace the micro USB cable on the Pixhawk with the one that connects to the Raspberry Pi.

  10. Power The ROV by plugging in the battery. There should no longer be a Frame configuration page available in QGC, and the missing FRAME_CONFIG parameter warning should be gone.

Please verify your motor directions again in MANUAL Mode on land and we can fix any remaining issue from there.


Hi Jacob,

I ordered the ROV in mid January.

I’ll go through this process and get back to you about the original issue. Thanks for the detailed guide!


Hi Jacob,

I updated the Pixhawk firmware as directed above and confirmed proper motor direction in MANUAL mode.

On land, it appeared that STABILIZE and DEPTH HOLD modes were working correctly. BUT in the water the ROV again started counterclockwise rotations in both of these modes.

Any thoughts for further troubleshooting at this point?


This is almost certainly an issue with the motor direction configuration. If the vehicle is turning (yaw) correctly in MANUAL mode, I think you may have pushed the joystick in the wrong direction when calibrating yaw. Try recalibrating the joystick, and then set the motor direction for all of the vertical motors (1-4) to the inverse of what they are currently.

When calibrating the joystick, move the left hand joystick when the diagram shows the right hand joystick moving, and move the right hand joystick when the diagram shows the left hand joystick moving. The direction that you actually push the sticks, should still match the diagram at each step. This is a confusing process, and will be corrected in the next QGC release.



Thanks for the additional troubleshooting!! It worked!!

I reversed all of the vertical motors in Parameters-MOT and then recalibrated the joystick accordingly. Now Stabilize and Depth Hold modes no longer result in counterclockwise spinning!!

(I misinterpreted the joystick calibration instructions to mean calibrate the joysticks, including the direction you push the stick, opposite of QGC’s prompts. This resulted in the problematic inverse parameter settings.)

Thanks again!

After some additional test trials, I have a few follow-up issues.

The STABILIZE mode is still working, but the DEPTH HOLD mode results in a new issue. Now in DEPTH HOLD the ROV quickly thrusts either to the bottom or the surface. At one point when switching to this mode, it thrusted to the bottom and then shot to the surface. I tried switching the directions of motors 5-6 under Parameters-MOT, but this resulted in the same response.

Additionally, the altitude readings on QGC are extremely off. At the surface, it reads around -0.3 m, but once the ROV dives below the surface, it drops to as deep as -450 m when it’s in less than 5 m of water. Perhaps these issues are linked?

Thanks for any assistance!

Can you please post your parameters? You can save them by going to the parameters page, clicking Tools in the upper right hand corner and saving to file. The altitude reading definitely needs to be correct before depth hold will work correctly. The relevant parameter is probably GND_SPEC_GRAV for the density of the fluid. This should be set to 1.0 for fresh water.

Hi Jacob,

Please find the parameters file and screen grab below. Also, I am running the ROV in saltwater and I see that I should adjust the specific gravity to 1.024.

Thanks for your continued help!

parameters_20170403.params (17.7 KB)

@sfields This looks like it is configured correctly. The extreme depth reporting is something I have not seen before.

Can you please turn on the ROV and tell me what the depth reads in air, then push on the pressure sensor opening firmly with your thumb and tell me what sort of range in depth readings you are able to see this way?

If you are still having issues and you have the chance, here are some steps to get a log file that I may use to diagnose your problem.

First, open QGC while the ROV is turned OFF, click the ‘Q’ icon at the top of the page, and under ‘General Settings’ make sure the option ‘Prompt to save Flight Data Log after each flight’ is checked. Make sure the option Prompt to save Flight Data Log even if vehicle was not armed is not checked.

Before you connect the ROV to the computer, make sure your ROV is positively buoyant so that it floats at the surface naturally.

After you have connected with QGroundControl, please perform the following steps in order. Please read these steps once or twice before you begin, so that you can execute them as closely as possible, without adding in extra input that I have not instructed. It is important to only arm/disarm once during the duration of the log. If you make a mistake, please disarm the ROV, close QGC, reopen QGC, and try again. A shorter log is easier to analyze.

  1. Arm the ROV in MANUAL mode.
  2. Dive the ROV to the bottom of the tank/pool, and continue to dive after you reach the bottom for about 5 seconds, so that the ROV is held against the bottom by the thrusters.
  3. Drive the ROV back to the top of the tank/pool, and continue to try to climb out of the water for about 5 seconds so that the ROV is trying to climb, but is stuck at the surface of the water.
  4. Let go of the joysticks, and put no input for about 5 seconds, allow the ROV to float at the surface of the water naturally.
  5. Switch to depth hold, and allow the ROV to malfunction as long as you can, or for about 10 seconds.
  6. Disarm the ROV.
  7. Close QGroundControl, and save the log file. Post the log here.

Hi Jacob,

In air, the depth reads around -0.2 m and when I push on the sensor it reads up to -9.0 m.

I will send the log file following your instructions soon.


Stephanie, please email when you have time to sit down to chat and troubleshoot the ROV. I’m not sure what’s going on here, and would like to work with you directly to figure it out over IM. We can follow up here with the resolution.


Stephanie’s issue turned out to be a damaged/faulty pressure sensor. We test all of our pressure sensors before shipping, but this issue was exceptional because the sensor malfunctioned only when in contact with water. This is the only example of this type of malfunction that we are aware of. We’ve sent her a replacement and she’s up and running in depth hold mode.

1 Like

Hello Jacob, I’m having similar issues with the depth hold mode: in DEPTH HOLD the ROV quickly thrusts either to the bottom or the surface.

I saved a log file following the same procedure explained above. I don’t think it is a problem of the sensor, since the values shown in the interface seem correct, unlike the case of Stephanie. 2018-09-28 11-03-08.tlog (316.4 KB)

Any help is welcome

Thank you!

We are struggling with the same issues. Basically the controls are not working as expected. We have diligently traced the wires for each thruster to make sure of proper placement and wiring to the correct ESC. We feel that we have properly calibrated the sensors during the initial setup.


Manual Mode: most controls move as expected with a two exceptions. Maybe our expectations of movement might be off.

Stabilize and Depth mode cause the ROV to spin wildly.

We are hoping we can find some guidance. We are familiar with the Pixhawk and Q Ground Control as we use this for our air and surface based drones.

Things that work:

{on MANUAL flight mode}

-Lateral Left/ Right goes in expected direction

-Yaw Left/Right goes in expected direction

-Thrust goes in correct direction

-Each thrusters’ propeller in the right orientation

-Thrusters wired to the correct ESC.

-Speed Controllers in correct ports on Pixhawk

-Raspberry Pi ‘companion software’ and Pixhawk (ArduSub Software) up to date

-went to websites provided, says that everything is up to date

  • Re-downloaded and Flashed and the Pixhawk firmware (from Bluerobotics website) Just in case we accidently changed parameters.

-Currently running version 5

Does not work:

-Ascend/Descend is opposite

-Push stick up, ROV descends instead of ascending

-Forwards/ Backwards is reversed

-ROV goes backwards when told to go forwards stick forward moves the ROV in reverse.

-When turn on STABILIZE flight mode DEPTH hold ROV starts spinning out of control

@olaya, @pachecol

The cause of this problem 99% of the time is incomplete setup, specifically configuring the motor directions. Please carefully review our software setup instructions, and make sure that you have completed every step, in order, exactly as instructed. If you continue to have issues at this point, please let me know.


It looks like all of his motor directions are incorrect, which would account for the instability in the Stable and Depth Hold modes, unless he is using a very unconventional joystick controller.


1 Like

Hi Jacob,

We’re having a problem with the depth mode.
When you trigger the depth mode, the rov goes to the bottom.
We have tried everything, but we have not found a solution.
The engines are moving in the right direction and the pixhawk is configured correctly.
This problem started to happen after we made the calibrations of the acceleration and compass sensors.