Vectored thruster orientation

I can build it for you if you share the matrix as text.

That would be great.

case SUB_FRAME_CUSTOM:
        add_motor_raw_6dof(AP_MOTORS_MOT_1,     1.0f,           -1.0f,          -1.0f,           -1.0f,               1.0f,               -1.0f,           1);
        add_motor_raw_6dof(AP_MOTORS_MOT_2,     -1.0f,          -1.0f,          1.0f,          -1.0f,               1.0f,               1.0f,          2);
        add_motor_raw_6dof(AP_MOTORS_MOT_3,     1.0f,           1.0f,           1.0f,          -1.0f,               -1.0f,              -1.0f,           3);
        add_motor_raw_6dof(AP_MOTORS_MOT_4,     -1.0f,          1.0f,           -1.0f,           -1.0f,               -1.0f,              1.0f,          4);
        add_motor_raw_6dof(AP_MOTORS_MOT_5,     -1.0f,          1.0f,           -1.0f,           1.0f,              1.0f,               -1.0f,           5);
        add_motor_raw_6dof(AP_MOTORS_MOT_6,     1.0f,           1.0f,           1.0f,          1.0f,              1.0f,               1.0f,          6);
        add_motor_raw_6dof(AP_MOTORS_MOT_7,     -1.0f,          -1.0f,          1.0f,          1.0f,              -1.0f,              -1.0f,           7);
        add_motor_raw_6dof(AP_MOTORS_MOT_8,     1.0f,           -1.0f,          -1.0f,           1.0f,              -1.0f,              1.0f,          8);
        break;

That is pretty much what I did but the toolchain argument doesn’t work…

ardusub_etienne.bin (1.8 MB)
I had to rename to .bin for discuss to accept it, but blueos should not mind.

1 Like

thanks mate

Works great! thanks.

1 Like

Has this file been tested on the M2 Rov ?

Hi @hanz0n, welcome to the forum :slight_smile:

Chasing’s M2 ROV is closed source, and isn’t advertised as running the ArduSub firmware, or having an ArduPilot-supported flight controller board. The firmware file Willian linked to was built specifically for the Blue Robotics Navigator Flight Controller, so would not be possible to run on a Chasing ROV without swapping out the control electronics.

Thanks for the answer.
i know that the M2 uses “closed” source, i was thinking of replacing one of my M2 couse the hull is leaking power so i get havy “corrosion”. i like the frame so i was thinking of using it.
I have all the parameters downloaded from the m2 firmware but i can´t find the setup for the thrusers.
We are looking at BlueRov now and will probebly order one soon.

We have also tried this framework and the results are very good. But I also encountered some problems. Due to the flexible configuration of the ROV, we started depth modeat the same time as setting a 30 ° inclination angle. When the handle controls the forward movement, the ROV does not move forward, but moves upwards along a 30 ° inclination angle according to its own coordinate system. This seems unreasonable.

Hi @MMMMK,

This is currently the expected behaviour in ArduSub, and depending on what you’re trying to achieve can be quite desirable.

That said, we have been asked previously for an operation option that keeps forward/lateral motion in the world reference frame instead of in the vehicle’s body reference frame, and it’s something @williangalvani is planning to work on when he can make some time for it.

I was looking for an option to set 8 vectored thrusted on a BlueROV and found this post. Was there any progress since than to make this motors/frame configuration part of the frame presets in QGC?

@etienne I saw that you worked quite a bit on it, how is it working for you?

Dear BlueRobotics Community,

Recently i’ve been trying to compile the following thruster configuration matrix, but unfortunatly we don’t have the PixHawk on board so we need this to be compiled for the ArduPilot Board:

case AS_MOTORS_CUSTOM_FRAME:
        add_motor_raw_6dof(AP_MOTORS_MOT_1,     0,           0,           1.0f,            0,                 -1.0f,                  1.0f,              1);
        add_motor_raw_6dof(AP_MOTORS_MOT_2,     0,           0,           -1.0f,           0,                 -1.0f,                 -1.0f,              2);
        add_motor_raw_6dof(AP_MOTORS_MOT_3,     0,           0,           -1.0f,           0,                 1.0f,                   1.0f,              3);
        add_motor_raw_6dof(AP_MOTORS_MOT_4,     0,           0,            1.0f,           0,                  1.0f,                  -1.0f,             4);
        add_motor_raw_6dof(AP_MOTORS_MOT_5,     -0.5f,     0.5f,       0,                0.45f,                0,                  0,                   5);
        add_motor_raw_6dof(AP_MOTORS_MOT_6,     0.5f,       0.5f,       0,               0.45f,                0,                  0,                   6);
        add_motor_raw_6dof(AP_MOTORS_MOT_7,     0,           -1.0f,      0,               1.0f,                   0,                  0,                   7);
        break;

Also: we picked the 0.45f from one of the examples on your website but we’re not sure why it should be 0.45f instead of 0.5f. Here’s the link were we found the 0.45f: Build ArduSub · GitBook
I thought in the example from the link Thruster 3,4, and 5 would be the same as my thruster 5,6 and 7.

To clarify it a bit more, here’s my schematic:

Does this matrix make sense for the given configuration. Where did that 0.45f exactly come from in your example? Does that also apply for our principle as shown here above?

Thanks in advance!

Hi @sietse, welcome to the forum :slight_smile:

Which board are you referring to? There are many possible flight controller boards that are capable of running ArduPilot-based autopilot firmwares.

If you’re trying to use our Navigator board, the latest building instructions are here for now (apologies - we’re still working on getting those integrated into the docs).

The original BlueROV is from well before my time at Blue Robotics, but from my understanding of the frame motion axis factors, reducing the contributions from the two front thrusters for vertical motion should help to avoid outweighing the corresponding contribution from the rear thruster.

The 0.45 value specifically was most likely determined to avoid excessive pitching while trying to move straight up or down. If the center of mass is towards the rear vertical thruster then the front thrusters contribute a little extra to the vehicle’s pitch, which can be balanced out by reducing how hard they push:

Torque (a rotational force / moment) induced by a linear force is determined by its magnitude multiplied by the parallel distance with which it’s applied from the center of mass (CoM) of the body it’s acting upon. Note that neither the parallel distance point nor the CoM need to necessarily be enclosed within the volume of the body itself:

This topic is worth a read for some extra context on understanding the effects of mass (and buoyancy) distribution, and how they can be compensated for, and there are other vehicle-design posts with additional insights :slight_smile:

Feel free to follow up if something about that isn’t clear, or you’d like some additional explanation.


By the way, I’ve edited your post to have the code formatted in a code block, so it’s easier for others to read, and to copy for testing. You can read about how to do that (and more) in the How to Use the Blue Robotics Forums post :slight_smile:

1 Like

Hey @EliotBR , thank you so much for your extensive explanation! Now I understand where the 0.45f came from!

I was indeed referring to the Navigator board, so the building instructions is what we needed :slight_smile:

Could I add a new case in our code for the custom frame? Or do I need to overwrite one of the SimpleRov Presets to make it work?

Thank you so much!

1 Like

There’s already a “custom” case, which is what’s recommended for custom frames :slight_smile:

1 Like