Simplest method for thruster mapper correction?

Hi yall!

I am using a modified BlueROV2 with custom code on the Pi. However, the thruster mapper has errors and doesn’t go the directions is supposed to as visualized in RViz. Basically, when controlling the ROV with the remote control, it doesn’t go where I direct it to. To fix, I am thinking adding a PI controller with an IMU to provide position for correction. I am looking for the quickest and simplest fix to this. Any recommendations on how to proceed? Or recommendations on an IMU/ driver for the IMU that can be easily used with the Pi?


Hi @BakerHerrin -
Can you share more about your custom control method? I have no idea what RViz is!

The standard BROV2 comes with a Raspberry Pi 4 and the Navigator autopilot, which has an integrated IMU. This IMU allows you to control the orientation of the vehicle, but integrating it to derive position will likely not produce great results, as the sensors used are not quite up to that task.

I would suggest using the default configuration, with Ardusub as your autopilot?

Hi @tony-white
Sorry for the late reply!

To clarify, I am not using the Navigator and wiped the OS on the Pi, and installed Ubuntu 22 as the OS with Robot Operating System (ROS2) on top. RViz is a ROS visualization package, which allows tyou to view the coordinate frames of your thrusters/ the body of the robot you are working with, for example here is an image of the frames of each of the thrusters in RViz.

Our custom controller (which we have not implemented on the hardware yet) we are still trying to decide how to apply. The goal of the controller is to correct the thruster mapper code we wrote, which determines the force value/ PWM for each thruster based on the position/ orientation we are trying to achieve. The thruster mapper fails to do this well (i.e. doesn’t go straight when being controlled by the game controller) which is why we want to add a controller to correct it.

We did it custom rather than using ardusub because we needed full control of the thrusters for autonomous control. I reached out in the hopes perhaps yall might have some insight into whether or not there is a simpler way to correct thruster mappers based on how yall wrote the thruster mapping code for the BROV2.

Hi @BakerHerrin -
Sorry, I’m afraid I can’t offer much support - The thruster positions in your graphic look correct, although the orientation of the axis I find a bit confusing. I would imagine that Thruster 1-4 should have the same axis color directed in the forward direction, so that if all thrust together the vehicle moves forward.

I would point out that ArduSub supports Auto mode, where it can use DVL or other position source to autonomously achieve waypoint missions! It’s also possible to send commands to ArduSub to achieve auto control in other forms!