%%alias
Aliased from [BNO055], [BNO055ImuSensor]
%%

This page is about the __BNO055 9-Axis Absolute Orientation sensor__, an [IMU|InertialMeasurementUnit].

The BNO055 is a __Inertial Measurement Unit ([IMU|InertialMeasurementUnit])__ sensor with 9 axis or __Degrees of Freedom__ (DoF), all focused on telling you its orientation in space. It can output the following sensor data:

* __Absolute Orientation__ (Euler Vector, 100Hz) Three axis orientation data based on a 360° sphere
* __Absolute Orientation__ (Quatenrion, 100Hz) Four point quaternion output for more accurate data manipulation
* __Angular Velocity Vector__ (100Hz) Three axis of 'rotation speed' in rad/s
* __Acceleration Vector __(100Hz) Three axis of acceleration (gravity + linear motion) in m/s^2
* __Magnetic Field Strength Vector__ (20Hz) Three axis of magnetic field sensing in micro Tesla (uT)
* __Linear Acceleration Vector__ (100Hz) Three axis of linear acceleration data (acceleration minus gravity) in m/s^2
* __Gravity Vector__ (100Hz) Three axis of gravitational acceleration (minus any movement) in m/s^2
* __Temperature__ (1Hz) Ambient temperature in degrees celsius

Here's a [description from Adafruit|https://www.adafruit.com/product/2472]:
%%blockquote
If you've ever ordered and wire up a 9-DOF sensor, chances are you've also realized the challenge of turning the sensor data from an accelerometer, gyroscope and magnetometer into actual "3D space orientation"! Orientation is a hard problem to solve. The sensor fusion algorithms (the secret sauce that blends accelerometer, magnetometer and  gyroscope data into stable three-axis orientation output) can be mind-numbingly difficult to get right and implement on low cost real time systems.

Bosch is the first company to get this right by taking a MEMS accelerometer, magnetometer and gyroscope and putting them on a single die with a high speed ARM Cortex-M0 based processor to digest all the sensor data, abstract the sensor fusion and real time requirements away, and spit out data you can use in quaternions, Euler 
angles or vectors.
%%

See also: [BNO08x] IMU, related chip-wise to the BNO055.


!! Notes

* "If you are designing a sensor solution for a system that has a limited range of motion, you can use Euler angles. But if you are designing a sensor that can be oriented anywhere in space, you should use quaternions." (All About Circuits, ref below)



!! Modes

%%small 
|| BNO055 Configuration Mode   ||    || (Transient Mode)
|  OPERATION_MODE_ACCONLY      | 0x01 | Accelerometer only
|  OPERATION_MODE_MAGONLY      | 0x02 | Magnetometer only
|  OPERATION_MODE_GYRONLY      | 0x03 | Gyroscope only
|  OPERATION_MODE_ACCMAG       | 0x04 | Accelerometer and Magnetometer only
|  OPERATION_MODE_ACCGYRO      | 0x05 | Accelerometer and Gyroscope only
|  OPERATION_MODE_MAGGYRO      | 0x06 | Magnetometer and Gyroscope only
|  OPERATION_MODE_AMG          | 0x07 | Accelerometer, Magnetometer and Gyroscope (without fusion)
|  OPERATION_MODE_IMUPLUS      | 0x08 | Inertial Measurement Unit (Accelerometer and Gyroscope Sensor Fusion Mode)
|  OPERATION_MODE_COMPASS      | 0x09 | Tilt Compensated Compass (Accelerometer and Magnetometer Sensor Fusion Mode)
|  OPERATION_MODE_M4G          | 0x0A | Magnetometer and Gyroscope Sensor Fusion Mode
|  OPERATION_MODE_NDOF_FMC_OFF | 0x0B | 9 Degrees of Freedom Sensor Fusion with Fast Magnetometer Calibration Off
|  OPERATION_MODE_NDOF         | 0x0C | 9 Degrees of Freedom Sensor Fusion
%%


!! References


* [BNO055 Intelligent Absolute Orientation Sensor, 9-Asix Sensor Fusion All-in-one Windows 8.x Compliant Sensor Hub|https://cdn-shop.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf], Bosch Datasheet, PDF
* [BNO055 IMU Sensor|https://www.mathworks.com/help/supportpkg/arduino/ref/bno055imusensor.html], MathWorks documentation, with description
* [Adafruit BNO055 Absolute Orientation Sensor|https://cdn-learn.adafruit.com/downloads/pdf/adafruit-bno055-absolute-orientation-sensor.pdf], Adafruit Guide, PDF
* [Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout - BNO055|https://circuitpython.readthedocs.io/projects/bno055/en/latest/api.html], CircuitPython driver library
* [Arduino BNO055 Library|https://github.com/arduino-libraries/BNO055]
* [AdaFruit BNO055|https://www.adafruit.com/product/2472], Product Page
* [Pololu BNO055 9 DOF Absolute Orientation IMU Module|https://www.robotshop.com/en/bno055-9-dof-absolute-orientation-imu-module.html], Product Page
* [Magnetometer Description|https://www.vectornav.com/support/library/magnetometer] from VectorNav
* [IMU BNO055|https://forum.arduino.cc/index.php?topic=442661.msg3047115#msg3047115], Arduino forum discussion
* [Euler Angles vs. Quaternions|https://www.allaboutcircuits.com/projects/bosch-absolute-orientation-sensor-bno055/] from AllAboutCircuits

----

[{Tag IMU Sensor}]