After seeing someone mention the
BNO055 from in
this thread, and watching the demos on the Adafruit website. I thought I'd give this little sensor a try. I've done a bunch of bench testing with this sensor, specifically as a gyro replacement (providing relative heading). I have to say I'm really impressed so far.
Out of the box, there is (literally) zero static drift in position and rotation seems repeatable to roughly within +/- 2 degrees. The built in calibration sequence seems quite robust. The sensor doesn't report that it has completed calibration until it's sat statically for a short duration of time. Although prior to reporting that the device is calibration, it does appear that the reported position data is accurate. I've also had a chance to set this sensor up temporarily on a practice chassis and observed similar results.
Since this thing looks promising, I've ported the
adafruit arduino code over to Java on the roboRio. I'll be maintaining the code at this
github repository. I tested it out quickly tonight and it's communicating with the
BNO055 over I2C, calibrating it and can read XYZ coordinate data.
At this point there's probably still bugs in the code. It's only got a few hours of testing on it. There's certainly room for improvement in the comment department. The plan is to clean this up as I continue to test this sensor out.
What's next:
- Clean up the code
- Test out the other modes of operation (absolute position)
- Videos documenting performance coupled to roboRio
If you have any questions about the sensor, the code, or want me to test out something specific before you buy your own, ask here and I'll try to help out the best I can.
If you're interested in checking out the sensor in operation there are some videos I recorded while evaluating the sensor (note these weren't recorded for public consumption so there's some ramblings):