Given the issues that my team and other teams had with the internal IMU shared in this message thread, I’m posting a guide to setting up and using an external IMU sensor from Adafruit until REV comes up with an update about the unexpected IMU reset issue.
This isn’t guaranteed to fix the issues for your particular robot. Please reply if your team tried it and share if it worked or not.
- Adafruit BNO055 Board (product 2472 or product 4646)
- This device is explicitly mentioned in the REV docs as a supported external IMU.
- 4-pin JST PH cable to cut (REV link or use a cable from an unused sensor)
Cut the 4-pin JST PH cable, separate the 4 conductors and strip 5 mm of insulation from the end of each conductor
Solder the conductors to the Adafruit IMU board like this:
- Red to VIN
- Black to GND
- White to SDA
- Blue to SCL
Plug the sensor cable into I2C Bus 1 (note: you cannot use Bus 0 because the internal IMU is on Bus 0 and uses the same address as the external IMU you are adding). I recommend using some hook and loop tape to fasten your IMU on top of the Control Hub. Pay attention to the board orientation in the picture. Put the chips towards the top and the words 9-Axis Abs Orientation towards the USB port of the Control Hub (this is for product 2472. If you use product 4646, you’ll have to figure out the orientation).
- From the Driver Hub, open your robot configuration, then select the control hub, then I2C Bus 1
- Use the device type Adafruit IMU
Initialize and use the Adafruit IMU exactly the same as you would the internal IMU.
If you mounted the device as recommended above, initialize the IMU this way: