BNO055 Gyro Update Rate

Status
Not open for further replies.

joe_prince

Well-known member
I have a question regarding the update rate of the gyro when using the NDOF mode on the BNO055 chip. Here is a link to the datasheet for reference: http://www.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf

When using the fusion mode NDOF (which is the mode that fuses the gyroscope, accelerometer, and magnetometer data and outputs absolute orientation in roll, pitch, and yaw angles), the datasheet lists an update rate of 100Hz for the fused data (page 31). It also says the gyro data is available in this mode at the same 100Hz rate. However, the datasheet also lists a maximum configurable gyro bandwidth of 523Hz (page 15).

There is a paragraph under the Gyroscope Configuration section that says the following (page 28):
The fusion outputs of the BNO055 are tightly linked with the angular rate sensor settings. Therefore the configuration possibilities are restricted when running in any of the fusion operating modes.

Does this mean the gyro data and fused data can only be accessed at a maximum of 100Hz when in the NDOF mode? What would be the ramifications of trying to sample the data at a quicker rate (say 200Hz)?
 
Last edited:
You can't choose the sampling rate for any sensor in the NDOF mode, it is hardwired by the sensor fusion engine and off limits to the user. I think the gyro rate is actually higher than 100 Hz in fusion mode. The 100 Hz is probably the kalman filter update rate, the gyro probably runs at 2000 dps.

Table 3.7 in the new data sheet has a list of power-on settings, I believe these are also the settings used in all of the fusion modes. In fact, the old data sheet used to say just this.
 
Last edited:
I think the gyro rate is actually higher than 100 Hz in fusion mode.

Where in the datasheet are you finding this information? From what I can see on page 31, the data output rate for the gyro in fusion mode is 100Hz. The bandwidth of the gyro is configurable between 12 - 523Hz (page 28), but that is only in GYROONLY mode.
 
You might ask Bosch what they mean by data input and output rates in the fusion mode. I think this is either the quaternion update rate or the kalman filter update rate, but the sample rates used by the fusion filter engine are likely higher. I wouldn't trust the data sheet.
 
I'll definitely send them a message for clarification. For an IMU, 100Hz seems low to me (some of the MPUxxxx are in the kHz range). I wonder if you're right and that "data output rate" is referring to something else, possibly the Kalman filter or other entity.

Is there any benchmark or way of testing what the max data rate is for a given sensor? It would be nice to do it experimentally to see what the maximum usable output rate is.
 
I don't know how to test the sample rate from the sensor fusion out put, but you could stream raw or scaled sensor data at 100, 200, 500 Hz etc. rates to the serial port for small time increments and determine what the sensor data update rate is in practice.

The BNO055 uses the BMX055 sensor, whose properties are well documented (in this case you can rely on the data sheet).
 
It's important to keep some perspective about sensor bandwidth. Internally, these MEMS sensors are resonating in the dozens to hundreds of kHz range and detecting minute phase shifts, which must be processed and filtered to give you a signal. Raw bandwidth is only in the hundreds of Hz range, at best. Even that has tremendous noise, which is smoothed by the filtering in the fusion algorithms.

It's easy to wishfully think of many kHz sensing bandwidth. Remember, datasheets are written by marketing departments. They are a sales pitch, which also documents the chip, but the only reason it exists is to convince you to design in the part. They always emphasize things to make the chip seem like a high performer, like fast data rates. They de-emphasize or completely ignore things not so impressive, like the realistic bandwidth, or the typical amount of noise when used at the max bandwidth.

Sometimes it can be tough to know what to realistically expect from a part.
 
Thanks Kris and Paul - I had no idea datasheets were that unreliable, or even that they were written by the marketing team. I guess I just assumed (ignorance on my part) that the data and ratings outlined in the datasheet were accurate.

I guess I'm going to have to be careful in the future with not putting too much emphasis on the datasheet, but rather the results and outcomes from the benchmarks I conduct myself.
 
Thanks Kris and Paul - I had no idea datasheets were that unreliable, or even that they were written by the marketing team. I guess I just assumed (ignorance on my part) that the data and ratings outlined in the datasheet were accurate.

I guess I'm going to have to be careful in the future with not putting too much emphasis on the datasheet, but rather the results and outcomes from the benchmarks I conduct myself.

In that datasheet is no statement about kHz datarates.
Chapter 3.6.3 Lists datarates between 20 and 100 Hz.

edit: oops sry, i did not read the whole thread before answering ;-)
 
Last edited:
Just FYI,

The BMX055, the sensor(s) underlying the BNO055 have gyro rates up to 2000 Hz, mag rates up to 30 Hz, and accel bandwidths up to 1 kHz. Not sure why the accel rate can't be specified but it might be set by the gyro or fixed at 1 kHz.
 
Just FYI,

The BMX055, the sensor(s) underlying the BNO055 have gyro rates up to 2000 Hz, mag rates up to 30 Hz, and accel bandwidths up to 1 kHz. Not sure why the accel rate can't be specified but it might be set by the gyro or fixed at 1 kHz.

I guess this begs the question, but can the data from that datasheet be trusted any more or less than the other? I might just have to run some benchmarks on my own with these numbers in mind, and see how feasible they actually are. Thanks for pointing me to that datasheet for reference.

edit: Kris - I just noticed you have a breakout board for both the BNO055 and the BMX055. What are the main differences between the two? Is the BNO055 a newer version of the BMX055, or are they completely different?
 
Last edited:
Just an update, I attended a Bosch seminar today and spoke to a few of the engineers working on the BNO055.

In the non-fusion modes (i.e., only accel or gyro active) the ODR for either is roughly 2kHz (you were right Kris). However, in the NDOF fusion mode, the 100Hz ODR listed in the datasheet is indeed correct. There reasoning was that nearly all of the applications the chip is used for works perfectly fine at the 100Hz update rate, and they have had no need to try to improve that.
 
Status
Not open for further replies.
Back
Top