I didn't think it was possible to reliably sort out the absolute orientation from this kind of sensor data, but somehow these guys have managed it. I'm using two of these for the wrist rotation of a wired glove. Both attached to the forearm, one toward the elbow and the other toward the wrist. Inverse transform the wrist by the elbow, and you get a quaternion that only changes with wrist rotation, and not with arm/body movement. I was worried they might be too wishy washy for it to work, but from initial tests with them taped to my arm, the resulting wrist angle seems to be quite stable. Amazing! A few tips: 1. Give it a few ms to boot up before you try to communicate with it. I'm using a bare ATMega168 (same family of microcontroller as Arduino), and the TWI hardware makes communication very simple with just a few register reads and writes, but there's no indication that the sensor is present until it finishes booting up. 2. Make sure it gets itself fully calibrated. The calibration process runs continuously while in NDOF mode, but you need to do a certain series of movements for it to work (explained in the manual). 3. Be sure to treat the values it returns as signed 16 bit rather than unsigned (d'oh!)
E
Elwood
amazing
This thing is absolutely amazing, and no I'm not a plant :-) I've been using separate MEMS devices for gyro, magnetometer and accelerometer and working out my own coordinate system strategies so I fully appreciate how complex the problem really is. After following the simple calibration motions, which can take a few minutes to get right, this little jewel just cranks out Euler angles that are spot on. Absolutely worth it if you just want to get your orientation data and get on with the rest of your project. 73, Elwood, WB0OEW
V
Vincenzo
excellent
simple to use and very accurate, very useful for robotic projects
V
Vincenzo
excellent
very accurate and easy to use; useful for robotic projects
B
Brian
Easy to use!
I'm building a BB-8 droid, and needed an IMU but didn't know the first thing about sensor fusion, and wanted as many cpu cycles as possible on my microcontroller for other tasks. This BNO055 takes care of all the grunt work and give me the heading info I need to feed into my PID controllers. I couldn't be happier with it. For what it's worth, I did find that adafruit's libraries didn't get along with the teensy 3.2 that I was using, but the example code from the link below worked great after adjusting the I2C address. https://github.com/kriswiner/BNO-055