CEVA BNO085 Absolute Orientation Sensor System User Guide
- May 15, 2024
- CEVA
Table of Contents
CEVA BNO085 Absolute Orientation Sensor System
Introduction
This document describes the Tare function of the BNO085/BNO086 that redefines
the orientation of the sensor. This allows the outputs of the BNO085/BNO086 to
be in line with the orientation with which it was mounted into the main
device. These commands are described in more detail in the SH-2 Reference
Manual [1] and this document assumes that the reader has this manual available
for reference.
Note: The BNO080 is discontinued. For new designs, CEVA recommends the
BNO085 or BNO086.
Tare Overview
The BNO085/BNO086 uses two commands and a configuration record to redefine the sensor’s orientation, or “Tare”:
Commands
- Tare Now (Section 6.4.4.1 of SH-2 Reference Manual)
- Allows for a temporary Tare. Useful at the start of a game to define the current orientation.
- Persist Tare (Section 6.4.4.2 of SH-2 Reference Manual)
- Saves the current Tare orientation into the Sensor Orientation configuration record. This is a persistent setting that now becomes the default orientation.
Configuration Record
Sensor Orientation
Stores the orientation of the device. Once you know the standard orientation
of your BNO085/BNO086 in your device, you can use the same starting
orientation for all devices using this record as a convenient starting point.
More accurate per-device taring can be done using the commands above.
Tare Options
There are two options that you can choose from when running a Tare operation:
Axes
- Which axes do you want to tare across? For instance, you can choose to only tare on yaw (Z-axis) which will reset the heading to the user’s current forward orientation.
- Or you can take across all axes (resets heading, pitch and roll). Rotation Vector to use as a basis for Tare (Rotation Vector, Game Rotation Vector, Geomagnetic Rotation Vector)
- The BNO085/BNO086 offers three different types of Rotation Vector outputs that define the orientation of the module using different inputs.
- Refer to the SH-2 Reference Manual for more details about these three rotation vector options.
- This Tare setting allows the user to choose which of the rotation vector outputs to use as the basis for the Tare.
- In most cases, the Rotation Vector is the correct choice here.
- If you are using the Game Rotation Vector as your main input, and you want to take the Z rotation to re-centre the Game Rotation Vector to point north, then you’d need to use the Game Rotation Vector as the basis for the tare. Likewise, if you were doing a full tare using the Geomagnetic Rotation Vector, then you would need to use that as the basis.
Tare Procedure
Using the options defined above, you can choose what type of tare
configuration makes the most sense for your application. Here are a few
examples of typical configurations:
Device First-Time Setup
In this example, the BNO085/BNO086 is installed in an HMD and the sensor
orientation needs to be defined. This could be performed at the factory or by
the user at first-time setup. This will use a full tare across all 3 axes and
also save the setting into flash using the Persist Tare function. Note that
because the Pitch and Roll axes are being tared, the procedure is dependent on
the device’s orientation relative to the North so follow steps 3-5 carefully.
- Power on the BNO085/BNO086 and activate the Rotation Vector sensor
- Calibrate the magnetometer by rotating the device in figure 8
- To validate that the magnetometer is well calibrated, you can look at the Rotation Vector’s Accuracy Estimate field. This value provides an estimate of how accurate the algorithm thinks it is in units of radians. A good goal is to confirm that the Accuracy Estimate is <10 degrees (0.1745 radians). If performing a Figure 8 motion does not reduce the accuracy estimate below 10 degrees then move to a cleaner magnetic environment
- Calibrate the accelerometer by positioning the device in 4-6 unique orientations and ensuring the device is stable for ~1s in each orientation
- One way to think about this is to imagine the device as a cube and set it down on each face (upside down, right side, left side, on its front, its back).
- Set the device down for a few seconds so that the gyroscope ZRO can calibrate as well
- Determine North in your current environment
- You can either look at a physical compass or look at the Rotation Vector to determine where North is. When the Rotation Vector reads W=1, X=0, Y=0, Z=0 the device is pointed North
- Position the device so that your desired forward direction is pointed North and make sure the device is level.
- Run the Tare Now command with the following settings:
Byte| Name| Value| Description
---|---|---|---
0| Report ID| 0xF2| Command Request
1| Sequence Number| 0x00|
2| Command| 0x03| Tare Command
3| P0 (Subcommand)| 0x00| Tare Now
4| P1 (Bitmap of Axes)| 0x07| All 3 axes (X,Y,Z)
5| P2 (Rotation Vector basis)| 0x00| Rotation Vector
6-11| Reserved| 0x00| Reserved - Run the Persist Tare command with the following settings:
Byte| Name| Value| Description
---|---|---|---
0| Report ID| 0xF2| Command Request
1| Sequence Number| 0x00|
2| Command| 0x03| Tare Command
3| P0 (Subcommand)| 0x01| Persist Tare
4-11| Reserved| 0x00| Reserved - This will save the current settings into the Sensor Orientation FRS config record (See SH2 Reference Manual Section 4.3.4). Now these settings will be the default upon the next boot.
Set Current Forward Direction (User Tare)
In this example, the user is operating the device at their desk. They want to
define the forward orientation before starting a game, so all that needs to be
done is tare the Z-axis (yaw): the other axes, which define “level” do not
need to be changed from their previously established configuration. This could
be done via an on-screen GUI or button on the device. Because only the Z-axis
is being tared, the user does not need to align the device to the North.
- Ideally, the sensors would be calibrated well:
- Power on the BNO085/BNO086 and activate the Rotation Vector sensor
- Calibrate the magnetometer by rotating the device in figure 8
- Set the device down for a few seconds so that the gyroscope ZRO can calibrate as well
- Position the device into your desired forward direction orientation
- Run the Tare Now command with the following settings:
Byte| Name| Value| Description
---|---|---|---
0| Report ID| 0xF2| Command Request
1| Sequence Number| 0x00|
2| Command| 0x03| Tare Command
---|---|---|---
3| P0 (Subcommand)| 0x00| Tare Now
4| P1 (Bitmap of Axes)| 0x04| Tare ONLY on Z- axis
5| P2 (Rotation Vector basis)| 0x00| Rotation Vector
6-11| Reserved| 0x00| Reserved - After running this setting, the outputs of the Rotation Vector will be reoriented to this new forward direction.
- This setting will revert to the Sensor Orientation FRS config record (that was set via the last Persist Tare command) the next time the device is rebooted
How to Apply Tare Changes to Multiple Devices In Production
It is likely that when using the BNO085/BNO086 on a production device, the
orientation of the sensor will be the same on many units. Rather than taking
each unit, you can apply the Tare settings to any number of additional units
by using the FRS Sensor Orientation configuration record. The general steps
for this are listed below. For further information about reading/writing FRS
records contact Hillcrest Labs.
- Run the full Tare procedure listed above (labelled as First Time Setup) on a “reference” device
- Read the Sensor Orientation FRS record from the reference device
- Copy this FRS record to each device’s Sensor Orientation FRS record
- Now these devices will have identical Tare settings on the next hub reset
References
1000-3625 SH-2 Reference Manual, Hillcrest Labs
Notices
© Copyright 02/2023 CEVA, Inc. and/or its subsidiaries (“CEVA”) All rights
reserved. All specifications are subject to change without notice. Disclaimer:
The information furnished herein is believed to be accurate and reliable.
However, the information is provided “AS IS”, without any express or implied
warranty of any kind including warranties of merchantability, non-infringement
of intellectual property, or fitness for any particular purpose.
In no event shall CEVA or its suppliers be liable for any claims and/or damages whatsoever arising out of the use of or inability to use the materials. CEVA and its suppliers further do not warrant the accuracy or completeness of the information, text, graphics or other items contained within these materials. CEVA may make changes to these materials, or the products described within.