9 years ago.

Experience with BNO055

Hi Kenji,

for a new project i plan to use the BNO055 too. What is your experience with this chip and your library for it? Does it need any special calibration at start or does it just calibrate itself during usage? I see that in your example program you don't read the calibration state register(s), so in your experience how accurate is the chip? Do you have to perform some special movements at each power-up for it to calibrate itself (i read something like that in the BNO055 datasheet), and how easy and fast does it do the calibration?

Many thanks for your insight and best regards
Neni

Question relating to:

Based on F401 example.Changed reset sequence and added RESET control and Power On/Off control. Check several mbed, LPC1768, LPC1114, NucleoF401RE, F411RE, L152RE and GR-PEACH BNO055, Bosch, fusion, gyro, MAG

1 Answer

9 years ago.

Hi Neni,
thanks your hint to think a calibration capability of BNO055.

What is your experience with this chip and your library for it?
I just get the chip last week then start to make HW & SW and read documents. So I don't have any experience for the chip.

Does it need any special calibration at start or does it just calibrate itself during usage?
I'm not sure but I'm sure output "Fusion" data looks very stable and internal software well manage both output and calibration.
Data sheet page 47 3.10 Calibration said
"Though the sensor fusion software runs the calibration algorithm of all the three sensors (accelerometer, gyroscope and magnetometer) in the background to remove the offsets, some preliminary steps had to be ensured for this automatic calibration to take place."
This means the sensor can calibrate by themselves.

How accurate is the chip?
I will measure stational condition data and explain at following link within two to three days.
/users/kenjiArai/notebook/bno055---orientation-sensor/

Do you have to perform some special movements at each power-up for it to calibrate itself?
I cannot imagine what is your expectation for this question.
Could you explain your intention again?

By the way, I added read_calb_status() function. Please use it in the future.

Accepted Answer

Hi Kenji,

thanks a lot for your answers.

What i mean with 'special movements of the sensor' is the following:

Also on page 47, chapter 3.10 just below the paragraph, which you have cited above, there are another two paragraphs: "The accelerometer and the gyroscope are relatively less susceptible to external disturbances, as a result of which the offset is negligible. Whereas the magnetometer is susceptible to external magnetic field and therefore to ensure proper heading accuracy, the calibration steps described below have to be taken." and "Depending on the sensors been selected, the following simple steps had to be taken after every 'Power on Reset' for proper calibration of the device."

And then in the following chapters 3.10.1, 3.10.2 and 3.10.3 the 'proper calibration steps' (after every Power on reset) for Accelerometer, Gyroscope and Magnetometer are described. All three steps require some movements (i.e. placing the sensor in 6 different stable positions, 'writing' the number '8' in the air, etc.) for the calibration to accurately take place (one can always check CALIB_STAT to see, if the calibrations were successful).

-

Unrelated to the calibration stuff i also have a small idea for making your code a little bit more efficient maybe? For the Page ID, after initially setting it to 0 (or 1) you could store the current Page ID in a private class member. And then in the register set functions you could only set the Page ID, if a value change is really necessary (i.e. if the necessary Page ID value for a specific register access differs from the current value). This would reduce the I2C communication overhead a bit.

Best regards
Neni

posted by Nenad Milosevic 08 Apr 2015

Hi Neni,
calibration status reg. value is 0x30 at this moment. This means only Gyro is calibrated.
I will think how to implement the calibration procedure into my code.
As I mentioned above, I just started last week and remain many items which I need to improve the library.
I agree your final comment.. I will try it near future.

posted by Kenji Arai 08 Apr 2015

I have updated the program to add manual calibration function. Please see below link for the result. /users/kenjiArai/notebook/bno055---orientation-sensor/

posted by Kenji Arai 10 Apr 2015

Thanks Kenji, i saw it, it's a nice implementation. How easy was it to manually calibrate the magnetometer? Did you have to 'write an 8 in the air' with the sensor a lot of times or did the magnometer calibration status change fast? Did you see any change in yaw (heading) value after successful magnetometer calibration?

posted by Nenad Milosevic 10 Apr 2015

I measured the "8 in the air" data in the above in the link (bottom in the page). Is this your requested data?

posted by Kenji Arai 10 Apr 2015