I can't get the IMU working



Hi Everybody,

My ROV’s IMU isn’t working, and I’m hoping you guys can help me figure out why and fix it. I’d really like to be able to pilot this ROV to specific depths to collect water samples, so having a functional IMU is something important to me.

This is OpenROV 2.8 #3251. It is running running openrov-rov-suite - 30.0.3.jessie.204.531b22c. This is the IMU/Depth Module that came with the kit this fall, so it should be version 2.0 (If you tell me how, I’ll check the version number to be sure.) I’m aware that this thread exists, but I’m NOT having that issue; i.e. my IMU is not freezing during a dive. Instead it never starts working. The directional strip at the bottom of the cockpit is always reading ‘N’ and there’s no depth reading. That’s always the case, whether or not I move the ROV around to calibrate it as @Brian_Grau demonstrated here.

I suspect that I may be doing something wrong (meaning user issue, not hardware/software issue.) I know the cockpit has a calibration button under diagnostics, but nothing appears to happen when I click it; there’s no visual indication of a change in modes between operation and calibration modes. How do I tell if I’m in a calibration mode and what do I do if I enter one? Am I supposed to log into the ROV and modify scripts to make this work? Do I need to post a picture of the IMU so you can look at the wires??

I’ve posted my status messages below. Please note that there is nothing at all about BNO055 Could this be soldered wrong?

I’ve started this ROV with a chromebook and with laptops running microsoft (XP and Vista), and piloted it around near the surface using both keyboard controls and a game controller. The auxillary servo control works fine.


hdgd 0.00
deap 0.00
pitc 0.00
roll 0.00
yaw 0.00
fthr 0.00
norm_roll 0.00
norm_pitch 0.00
norm_yaw 0.00
yawError 0.00
yawCommand 0.00
log Attempting to fetch depth cal coeffs
Depth.CoeffFailure C7
Depth.crcCheck CantPerform
BRDT 39.08
SC1I 0.03
SC2I 0.07
SC3I 0.23
BRDI 0.51
BT1I 0.38
BT2I 0.37
BRDV 9.19
AVCC 5161
mtarg 1500,1500,1500
mtrmod 1.00,1.00,-1.00,2.00,2.00,-2.00
motorAttached 1
servo 1500
starg 1500
fmem 3502.00
vout 9.19
iout 0.51
btti 0.66
atmp 0.00
cmpd Oct 22 2014, 23
cpuUsage 0.36
time 646925.00
pres 0.00
temp 0.00
alps 2790
rawcmd AD,6C,69,66,74,28,32,35,29,3B,
crc pass
cmd lift(25)
CAPA 254
LIGP 0.00
mpu_init failed with code -1
pong 1,647475
motors 1500,1662,1500


After I had attached my IMU/Pressure Sensor Module to the Controller Board wire harness I had to start the BBB twice to get the IMU/Pressure Sensor Module to appear in the Cockpit Telemetry. When power was first applied it took the BBB what seemed to be a long time to boot-up and there was no IMU/Pressure Sensor Module telemetry present. I then restarted the BBB and the boot-up was much shorter and the IMU/Pressure Sensor Module then appeared in the telemetry. After following the calibration instructions, I got a SYS 3 indication.
The IMU/Pressure Sensor Module should be mounted upside down with the wire leads facing the back of the OpenROV chassis just like in the instructions.
The wiring between the IMU/Pressure Sensor Module and the wire harness is pretty straight forward with Red/gray to 3.3v, black/gray to GND, green/gray to SCL, and white/gray to SDA from left to right when the IMU/Pressure Sensor Module is viewed with the wires at the top of the Module. Those four wires should be soldered to their respective color coded wires in the wire harness. You should double check to make sure that the wires coming from to the Module are in the right order as described above.


Thanks for the reply, @TCIII.

I’m brand new to this stuff. What’s the ‘BBB’?

Do you mean the calibration instructions from @Brian_Grau that are here? Those instructions show how to move the ROV around to calibrate, but there’s no reference to the ‘calibrate’ button under settings. When do I use that button?

It looks like that’s OK; my wires to the IMU are in the same order as the picture, and they are soldered to the same color wires in the endcap harness; i.e. grey/green to grey/green

My IMU is about 1.5 cm forward, and held in place by a cable tie because the hot glue failed three times.

Could the position or the fastening method be causing a problem?


I do not believe that either the fastening method or the position of the IMU Module on the chassis is the cause of your problem.
I did not actually use the “Calibration” button as I took and rotated the IMU Module through all three axes and the SYS parameter went from 0 to 3. I have yet to try the calibration button as I have seen conflicting information concerning calibrating the Module.
The BBB = Beagle Bone Black which is the main processor that is attached to the Arduino 2560 motherboard and communicates with your topside laptop/PC.
Yes, your wiring appears to be okay.
I think your best bet is to have one of the OpenROV Engineers chime in here to help you out at this point.


Hi, just a stupid idea. In the Cockpit you can enable, disable or upload plugins from the web. Normally in the 30.0.3 SW suite, the plugin for the IMU2 is already available. However, I just would check in the Cockpit in the Settings Section --> Plugins: Check if the “heading plugin” (sorrry I don’t remember the name exactly) is enabled. Best is, just enable all the installed plugins and start your ROV again.
I had once a functional IMU2. Instead of Epoxy glue, is used a wrong glue to “seal” the electronics. As a concsequence, after some dives the IMU2 was damaged. However, I still was able to get certain readings but it just was not making sense. The depth sensor indicated some errors uppon initialization.



can you post a picture showing what that looks like? I want to make sure I’m not missing something


@lucas.luethy, you may be onto something. I don’t appear to even HAVE that plugin. Where do I need to go to find it?

…and I don’t see that plugin, either


If you go to the IMU Calibration page you will see the before and after Telemetry shots of the IMU parameters. I followed the calibration instructions to the letter.
If the Arduino 2560 is talking to the IMU Module over the I2C bus you should see the Telemetry message "BNO_INIT_STATUS SUCCESS. If not, then you may have an I2C communication problem.

I did not have to enable any plugins to get the IMU Module to appear in the Telemetry. However, as I said before I had to do two power-ups to get the IMU Module to appear in the Telemetry. I am using the same OpenROV firmware 30.0.3.


Hi Miaerj
it is the heads up menu plugin. But it does not seem to be the issue. I was wrong. Sorry. Perhaps TCIIIs suggestions for calibration. If the sensors are not being accessed over the I2C bus (seems to be the case on your install) then either the soldering was not ideal on the IMU2 print or the IMU2 is not working at all.


OK, sorry it has taken so long to reply. We’re been swamped.

Here are better photos of the IMU and the solder joints where it is joined to the wiring harness coming out of the endcap. Here are two photos (each in close cropped and wider view) of the wires for the IMU. I believe they are matched up correctly to the harness and in the right position on the IMU, but I’d like to have you guys confirm this for me.


Just a heads up, our upcoming release introduces a lot of reliability/performance/correctness enhancements for the I2C based sensors in the system (and overall improvements in the firmware in general, as well as additional diagnostics).

These updates may help to resolve your problems, or at least help you learn what the root cause is likely to be, so keep an eye out. No hard release date yet, but we’re aiming for less than 2 weeks from now.


Thank you, that is good to know. Nima has suggested that my ground wire may not be soldered in well.

He said:

After reviewing your photos, it actually looks like the Ground wire (Black) on the IMU doesn’t have a good solder connection, at least from the one image from the narrow end of the IMU. Can you see the wires from other angles maybe? Can you check and see if there is a solder blob on the underside (under the IMU board)?

Based on the code logs you sent It seems like the IMU isn’t physically making a connection.

I removed the outer shell and took some additional photos, and I hope you, he, and everyone else can look them over and see if you think the solder joint for the ground wire is indeed the issue. If so, I will need to order a new IMU anyway. Do you have suggestions on how to test an IMU before potting it to make sure the solder joints are good?



You can test the IMU/Pressure Sensor Module in the open air before you pot it in the epoxy and it is a good idea to do so to verify that the wire/solder joints on the board are good.



Thank you, lesson learned!!!



It does look like the wire/solder joint on the ground pad is kind of marginal and is probably what is causing the Module to fail to work.

When you assemble the next one, I would recommend using a good grade of liquid solder flux and cleaning all four solder joints with alcohol after you are satisfied that the solder joints are good. Also, you should be using a temperature controlled soldering iron with a fine tip if possible.



Do you have a recommendation on a particular iron that works well for you?



I like the Weller variable, controlled temperature, grounded solder stations. They are expensive, but I have had one for over 15 years and it still performs to my expectations every time I turn it on.



I tried soldering the wires into place on the IMU and then temporarily soldering it to the wiring harness to test. It didn’t work. Tomorrow I’ll try unsoldering everything and doing it again. :slight_frown:


This is an interesting turn of events to say the least.
When you visited me with your OpenROV we buzzed the I2C connections out in your wire harness and determined that your 2.8 Controller Board would work with my test bench wire harness and IMU/Depth Sensor Module so something else is causing the Module not to function correctly.

I think that we are going to have to check the I2C wire harness continuity from the I2C circuitry on your 2.8 Controller Board to the IMU Module to ensure that the DB25 interconnection is making good contact when plugged in. When we buzzed the I2C wires from the female DB25 connector to the IMU Module, we assumed that the male DB25 connector was making good contact with the female DB25 connector.

What you might do in the meantime is to run the OpenROV and see if you can measure the voltage between ground and the +3.3 vdc coming into the IMU Module to ensure that it is being powered.