Depth hold issue using pixhawk

Dear Team,

I hope this message finds you well.

We are currently using a Pixhawk with ArduSub firmware version 4.5.7 and BlueOS running on a Raspberry Pi 4B. Initially, we configured the system with five T200 thrusters using the existing ArduSub five-thruster configuration (SimpleROV5). However, the physical placement of our thrusters does not exactly match the selected configuration.

To accommodate this, we implemented looping by assigning a single PWM output to a pair of thrusters, as outlined below:

  • In the selected frame, thrusters 1 and 2 are horizontal thrusters for forward and reverse motion. Since we have only one such thruster, it was connected to both PWM outputs.

  • In the selected frame, thruster 5 is designated as a lateral thruster. As we have two lateral thrusters, both were connected to the same PWM output.

  • The vertical thrusters remained unchanged and are connected to PWM outputs 3 and 4.

Due to time constraints and budget limitations, we proceeded with the existing electronics in order to demonstrate basic performance within a short timeframe. The thrusters perform satisfactorily for most maneuvers (left/right,up/down,forward/backward); however, we are encountering an issue with depth-hold mode.

When depth hold is enabled, the horizontal thruster responsible for forward and reverse motion also becomes active, causing the ROV to move forward, both in water and in air. Additionally, we have observed that the vertical thrusters respond relatively slowly, whereas the horizontal thruster responds much more quickly.

We suspect that this behavior may be related to heading control, as the system attempts to maintain heading. Despite multiple calibration attempts, the compass calibration result remained at a “yellow” status, which we ultimately accepted.

If there are any other potential causes or factors that you believe could explain this behavior, we would greatly appreciate your expert analysis and guidance.

Hi @Aashley -
Because of how you’ve connected the thrusters, your vehicle doesn’t have a way to control heading! Because alt_hold mode stabilizes both depth and heading, that’s why you’re seeing strange results. The only way to control heading with your thruster arrangement is with your two lateral thrusters, but since they’re sharing an output, they will never do so…

You’ll need to create a custom frame and compile ArduSub with the matrix properly filled out, and then select the custom frame for use. Then both heading and depth control should work! Searching custom frame on the forum will provide guidance - using the vscode exstension in BlueOS is a way to get an environment that has all the dependencies ready to compile, although it can take a bit on the Pi CPU!

If you don’t want to mess with compiling the firmware, you could trick the system and have your two lateral thrusters connected to output 1 and 2, and combine your two forward thrusters together to output 5. This will make forward actually be lateral motion, but remapping your controller axis in Cockpit or QGC can maybe get things controlling as desired! I’ve not tried this, but it may work…