Frustrated. Any suggestions?

T100 thruster operation causes significant interference with the LSM303 compass, making heading hold impossible to carry out. T100’s are about 3-4 inches from the 303. I can’t place them any further apart. This goes along with the interference I am experiencing between my cctv video circuitry and T100 operation. All very frustrating. Is anyone else on this forum building/using a basic ROV using similar components to mine, or is everyone into “plug and play” flying drone stuff? For ocean currents and surges, heading hold is a must.

My setup is as simple as you can get. Three T100’s with ESC’s and an Arduino processor running basic joystick code for pwm to the ESC’s. I also can’t share cctv ground and processor ground or the thrusters go nuts, and I can’t run heading hold. I would like to hear from someone that is actually doing a “build your own” setup and may be able to help me with their solutions.



I don’t mean to imply there is anything wrong with the BR components. It is the system that is a problem. I guess most of the system experience has been with the BlueROV and ArduSub, which apparently has no problems with using a common ground for all systems, and doesn’t experience interference with the on-board compass. I wonder why?

Hi Richard,

Magnetic interference, whether caused by magnets or electrical current, is not and uncommon issue in ROV design. For this reason, the AC-ROV has no compass and the Deep Trekker DTG2 had to mount theirs in a separate, watertight, “pod” outside of the main watertight housing (see illustration).

I might suggest that you experiment with different locations for the compass. You might find a location that fixes your problem. Barring that, perhaps an external “pod” might be the solution.

Good luck!


I have encountered this problem on several AUV platforms I have worked on myself. The motors, especially brushless motors, put out large amounts of electromagnetic interference. In the past I have isolated the IMUs in Full aluminum housing, and we ensure that our IMUs are as far away from the motors as possible. This has greatly improved our compass readings. I know of others who have placed their IMUs in a boom arm to get it away from the motors. On my first AUV we just ran without the compases, just using the gyroscopes for heading.

I’d strongly recommend moving your motors away from the compass as a start. Even fully shielded with an aluminum housing 3-4 inches is far to0 close. 8 inches is our design minimum, 10+ inches is desired. also distance through water is exponentially better than distance through air, quite literally.

After that if you have access to make a nonferrous metal housing I would recommend that as a next step if increasing the spacing between motor and compas.

Alternatively you could hold heading absolutely fine for most applications with the use of gyroscopes.

Paul and Pierson, thanks for your response. Do you believe this item could operate properly within 4" of the T100’s: adafruit L3GD20H 3-axis gyro? Since I am not interested as much in absolute heading measurement as I am in just holding heading on demand, this would be an easier solution to my current problem than relocation outside the WTE, and I could position it in place of the LSM303.




I don’t think there’s any easy way of knowing, besides giving it a try. I suspect, that if you have an issue with one compass sensor you’re likely to have similar issues with all of them. Case in point, the AC-ROV. Nowhere in that ROV’s housing is there a place where the magnetic field is weak enough that a compass would work.

I recommend you take the sensor that you have, energize the ROV and move the sensor around (obviously while the ROV is out of the water) and find where the compass is most affected and where it (hopefully) isn’t affected. You may have no other choice than to add a 2nd housing/pod or pot the compass and mount it externally.

Paul that is outstanding advice that is easily tested. I can certainly pot the compass board rather than build a WTE for it. Thanks.

Hi Richard,

I definitely think a gyroscope would work better for your application. It would allow you to hold heading for brief periods but there would be some long term drift. On most autopilots, including the one used in the ArduSub project, heading comes from a combination of gyroscope and magnetometer. The gyroscope provides fast measurements and the compass is used to avoid drifting too far.

More advanced systems often have magnetic field compensation that is calibrated to remove the effects of the motors throughout their operational range. That’s pretty tough to implement.



Well, the gyroscope is inexpensive ($13) and easy to implement in physical place of the compass board. I’ll give that a try and if I get interference I’ll have to look at moving it away from the thrusters. I am going out to the reefs tomorrow using negative ballast to just drop down quick until I can get a visual reference, and then hold depth using the vertical thruster. Hopefully, I’ll have a good report back.

I moved the compass board as far away as I could inside the WTE and I still get significant interference from the T100’s. I’ve decided to go the external route with the compass vice gyro because I want to be able to dial in a set heading.


Any special precautions when drilling the acrylic end plate for an additional penetrator? I have the 5 penetrator plate and I thought it best to drill the 6th hole dead center.


By the way the reef test went fine for what I wanted to accomplish The vertical thruster works fine for over coming the negative buoyancy of about 2 lbs, and the balance worked out. Lots of current giving me fits in holding a straight course. I am not going out again until I have heading hold working.



Acrylic heats up pretty fast when drilled so I would recommend going a bit at a time and use water for cooling. If it gets too hot it’ll grab the bit and get stuck.

Regarding the compass interference, I have a new hypothesis. The magnetic field from the motors should be fairly small since they have a flux ring on the outside of the rotor. Additionally, the magnetic field decreases exponentially as you move the thrusters away. Since you aren’t seeing any changes, I don’t think it’s the thrusters. I think it is the magnetic field created by the wires+batteries as high current is passing through them.

I’ve experienced this effect before on multicopters when power wires traveled right under the flight controller. If you can move the compass up and away from the power wires in the enclosure I think you will have much better luck.


If Rusty’s hypothesis is right, another thing you can try is to make sure all the wires in the WTC are twisted. Twisting powered wires helps prevent a magnetic field from forming around them.

Here’s a video from yesterday. Note my cautious approach to the barge!

I took the software approach to eliminating interference from the thrusters, plus with more effort I moved the LSM 303 two more inches away from the thrusters. Any heading error less than 4 degrees is now ignored in the program. Thruster rotation now has little effect on heading hold, but heading error is +/- 4 degrees. But, for my purpose that is okay. K-proportional is set at 10 and K-differential at 3. Works well in the pool, we’ll see at sea next week. The proof is how the videos turn out with heading hold on. I’m set up for heading hold occurring when the joystick is centered in X.

In continuing to work on a decent heading hold I have accomplished the following:

Moving the LSM303 5 inches away from any thruster has eliminated any interference, and has allowed me to eliminate the +/- 4 degree deadband I had put in the software.

The best I can do with PID is 10 for Kp and 1 for Kd.

The heading hold is still very “jerky” and kind of bounces back and forth. I have done a lot of testing and have concluded I need to measure acceleration in rotation, which I can do with the LSM303, and use that to dampen the angular acceleration fro the Kp term.

Do you agree that this is a correct approach?

To be more specific, I want to try subtracting the absolute value of approximate radial acceleration (y-axis in my case) from the PID drive value to the ESC’s. Do you have any experience adding a dampening term to PID control?

It is important for my videos that I reduce any jerky motion.


If you already have a Kd term then you are already damping the system somewhat. Measuring the angular acceleration by taking the second time derivative of the compass heading is going to be very noisy. Even the first derivative is probably pretty noisy.

For example if the compass noise is +/- 0.5 deg and you’re measuring at 10 Hz, then a sudden jump to 0.5 deg from 0.0 caused by noise will create 0.5/0.1^2 = 50 deg/s/s angular rate. Since the compass will have some random noise in it, that will get amplified.

I would recommend sticking with the current PID setup but try turning the Kd term up. That should damp the system. You could also add a slight amount of fixed forward speed so that the thrusters are always turning slightly and the deadband does not affect heading as much.



Assuming your compass readings are accurate (not noisy/ affected by induced fields) you can probably reduce the jerkiness without measuring acceleration. It sounds like you should lower the P a bit and increase the I. Make small adjustments to one term at a time and observe the results. With an understanding of how each term works, you should be able to hone in on the sweet spot for all terms this way.


Rusty and Jacob, as always, thanks for the input. I did some testing in the river today (St. Johns in Jacksonville, Fl) where a fairly strong current was running. I am pleased with the heading hold performance compared to the past, but it is a jerky, jumpy fence around the target heading at best. But it does hold, so that is good progress. This little beauty of mine is very short-coupled, so it is not surprising that smooth corrections is difficult to achieve. I designed for the smallest size possible to reduce drag and I am now paying the price with little inertia. But that’s okay. On your advise, I will abandon acceleration dampening and crank up Kd, and see what happens. I would rather have a broader sinuous correction than a smaller jerky correction.



P.S. I guess my rover needs a nickname. How about Blue Junior? (lol).