SparkFun Forums 

Where electronics enthusiasts find answers.

Have questions about a SparkFun product or board? This is the place to be.
By Camen
#199881
Hello All,

I think I have discovered a fundamental flaw with the BNO080. I have written to Sparkfun support but no response yet.

When generating quaternions, with the internal function, the numbers are thrown off (past actual location) by a few units when the yaw (z axis) is rotated. The numbers then settle back to actual position a few seconds later. The amount of error is higher with a faster z rotate. My test show that this error does not happen with the raw values, and all tests were done with high accuracy calibration, so it seems to be the internal firmware quaternion function that is not working - which essentially renders this IMU useless for internal processing.

Can anyone verify this issue?

Richard
By jremington
#199893
The numbers then settle back to actual position a few seconds later.
The "internal firmware quaternion function" (the filter) is clearly working, but perhaps not to your expectations. See this discussion concerning the performance of the very similar BNO055: https://forums.adafruit.com/viewtopic.php?f=19&t=112315

These are cheap sensors, and are useful for object orientation in 3D to maybe +/-10 degrees. I like the Pololu AltIMU10, with RTIMUlib, much better as discussed here: https://forum.pololu.com/t/state-of-the ... or-25/8091
By jremington
#199894
PS: with the AltIMU10/RTimulib combination, everything is open source, and you don't have to deal with a mysterious, poorly documented "black box" calibration procedure.
By Camen
#199895
jremington wrote: Tue Jul 31, 2018 5:16 pm
The numbers then settle back to actual position a few seconds later.
The "internal firmware quaternion function" (the filter) is clearly working, but perhaps not to your expectations. See this discussion concerning the performance of the very similar BNO055: https://forums.adafruit.com/viewtopic.php?f=19&t=112315

These are cheap sensors, and are useful for object orientation in 3D to maybe +/-10 degrees. I like the Pololu AltIMU10, with RTIMUlib, as discussed here: https://forum.pololu.com/t/state-of-the ... or-25/8091
Yeah, but the raw data doesn't have this issue, so it isn't the "sensor", it is the integrated processing code. It's also one of the more expensive hobby IMUs and it's advertising states that it is designed for VR and mobile devices, neither of which would function with this bad of an output.

I appreciate you "easing me down" but this is not my first rodeo. I have a dozen "hobby type" sensors and have been programming them for 5+ years. Even the $10 sensors have a steady accuracy of 0.1 degree and so does the raw output of the BNO080. I'd be hard pressed to believe that the BNO055 has that rough of a sensitivity as well, from what I read it was the BNO055's integrated output for euler angles that was the issue, again, not a sensor issue.

I have written to Hillcrest and I am feeding one of their engineers diagnostic data to figure this out. Which, and no offense, I appreciate more as an answer than the... well its low end so just deal with it.. type answer.
By Shri1395
#200051
Hi,

I was testing out the nrf52840, and i wanted to initialize the BNO_080 sensor with the nrf52840 DK. Now, i realized that if i want to read from registers to get the quaternion data, i need to create a sensor meta data, and find out the q point for that. Also, i noticed from the datasheet the quaternion data are no longer quat w, x, y, z. They are quat i, j, k, real.

It is a bit different than others, because for BNO_055, i needed to specify the register, for example the register addresses for the QUATERNION_REG_LSB, and MSB, and then i could read from the data from it.

It would be helpful if you could provide me with the steps in order to configure the nrf52840 with BNO080 to read the quaternion
By jps2000
#200528
The error described in the first post has likely to do with the kind of quaternions you are looking at. BNO080 has some different rotation vectors optimized for a certain application. you find this in SH-2 reference manual