%%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}]