Brushless motors do generate EMI. Are several places where you are going to get different magnetic fields. First the coils, there are several active high power electro magnets that are causing the motor to move. While I have not seen the fields quantified from a brushless motor I suspect that this is the dominant magnetic field. I would estimate that the next source of EMI is the moving magnets on the rotor. The rest of the EMI comes from the current traveling through the wires to the ESC and to the motor. Again I haven’t seen this quantified but have worked with underwater thrusters in close proximity to IMUs on AUV platforms for the better part of a decade.
So how to solve this issue? There are several solutions that I have seen used before I will explain them below.
- Ignore magnetometer(compass) and exclusively use integrating gyroscope data. I have done this on 3 AUVs to great effect, with the basic Sparkfun Razor we had about a 4 ft later drift per 50 ft forward in extremely low current environments.
- Make a dynamic magnetic model of the vehicle. I have never done this and only ever seen it done by one AUV so I am no expert on this. Effectively you make a calibration plot for every possible combination of motor values. Run the vehicle in water fully submerged (Water has a profound effect on propagation of magnetic fields) and record the magnetic distortions at every possible combination of motor thrusts. Then while the vehicle is running use the current known motor values and reference the lookup table for the possible distortion.
- Shield the IMU from EMI. This is the solution that I use on my more current vehicles we typically house our vehicles IMUs in a full aluminum enclosure away from motors and other electronics.
- Move the IMU away from the motors. Some AUVs that I have seen have their IMU's on long booms out the back of the vehicle. Not the best looking, not the most elegant, or efficient solution but effective.
Hope that helps, feel free to ask any questions.