Data Sheet
October 2017 BNO080 Datasheet 1000-3927
www.hillcrestlabs.com © 2017 Hillcrest Laboratories, Inc. All rights reserved. 38 / 57
3.1.1 Calibration Command
The SH-2 firmware in the BNO080 allows a host microcontroller to enable or disable the dynamic calibration of
the accelerometer, gyroscope and magnetometer. Refer to the SH-2 Reference Manual [1] for the command used
to control calibration of each sensor. The command allows the host to control when calibration is performed. Note
that the calibration settings do not persist across resets of the BNO080.
3.1.2 Accelerometer
Dynamic calibration for an accelerometer is the removal of zero-g offset (ZGO). An accelerometer at rest should
only report gravity, any deviation is the zero-g offset. This is most easily seen when the accelerometer is placed
with one axis perpendicular to the Earth, the other two axes should report zero. ZGO errors can manifest as tilts
or tilt corrections (e.g. the screen on a head mounted display may be tilted with respect to the expected horizon)
and this usually indicates that the accelerometer needs to be calibrated. The BNO80 provides two methods of
calibrating the accelerometer ZGO; a full 3-dimensional approach for devices that can move in freely in space and
a planar calibration for devices that are constrained to move in a plane (such as a robot vacuum cleaner). For
more information on calibrating the accelerometer, see section 3.2.
3.1.3 Gyroscope
Dynamic calibration for a gyroscope is the removal of zero rate offset (ZRO). A gyroscope at rest should report
zero rad/s on all axes. Any deviation from zero is the zero rate offset (ZRO). ZRO errors can manifest as drifts
(e.g. the screen on a head mounted display can continue moving even when the device is stationary). Note that
though the BNO080 can continuously attempt to calibrate the gyroscope for ZRO, it is possible to fool the
calibration algorithms through slow horizontal rotations (around the gravity vector). Placing the device on a stable
surface will force the ZRO calibration to converge rapidly. The gyroscope calibration algorithm attempts to remove
ZRO while the device is not on a very stable surface, for this to be successful the device to which the BNO080 is
mounted must have sufficient tremor such as the human hand. If there is insufficient tremor it is advisable to
disable the gyroscope calibration to prevent drift (i.e. by mis-calibrating ZRO). ZRO will always be corrected when
the device becomes very stable (such as when laid on a table).
3.1.4 Magnetometer
Magnetometers measure the magnetic field around them and the typical use case is to determine the position of
the Earth’s magnetic North pole. The magnetic field can be distorted by the presence of magnetic fields caused
by speakers, magnets etc. (hard-iron effects) or other ferrous materials (soft-iron effects). BNO080 can
dynamically calibrate the readings from the magnetometer to compensate for these distortions. Without calibration
the heading reported by BNO080 will be highly suspect so it is highly recommended to calibrate the
magnetometer. For more information on calibrating the magnetometer, see section 3.2.
3.1.5 Calibration Accuracy
The BNO080 provides input reports (see section 1.4.5) to send sensor data to the host microcontroller. The input
reports include a “Status” field that indicates the accuracy status of the sensor. This is especially useful when the
application needs to know the calibration status of the BNO080 outputs. Bits 1:0 of the Status field indicate the
accuracy as shown in Figure 3-1. Refer to the SH-2 Reference Manual [1] for more information.
Status Bits (1:0)
Description
0
Unreliable
1
Accuracy Low
2
Accuracy Medium
3
Accuracy High
Figure 3-1: Accuracy status of sensors