Measure acceleration, angular rate, and magnetic field, and calculate fusion values such as Euler angles, quaternion, linear acceleration, and gravity vector along the axes of BNO055 sensor
Simulink Support Package for Arduino Hardware / Sensors
The BNO055 IMU Sensor block reads data from the BNO055 IMU sensor that is connected to the hardware. The block has two operation modes: Non-Fusion and Fusion.
The block outputs acceleration, angular rate, and strength of the magnetic field along
the axes of the sensor in Non-Fusion and Fusion mode. In Fusion mode, the block also
outputs the the orientation of the sensor as an Euler angle or quaternion, as well as
the linear acceleration, gravity vectors, and calibration status of the sensor. The
values emitted in the Non-Fusion mode are raw values, whereas the values emitted in the
Fusion mode are calibrated values. The block outputs all the values except for
quaternion and calibration status as a 3-by-1 array of double
data
type. The quaternion is a 4-by-1 array of double
data type, and the
calibration status is a 4-by-1 array of int8
data type.
This illustration shows the default orientation of the x-, y-, and z- axes of the BNO055 sensor.
If you simulate a model that contains the BNO055 IMU Sensor block without connecting the hardware, the block outputs zeros. For more information, see Block Produces Zeros or Does Nothing in Simulation.
Accel
— Acceleration including force of gravity along axes of sensor The Accel port outputs acceleration along the x, y, and z axes of the sensor as a 3-by-1 vector. In Fusion mode, the elements of the vector represent calibrated values, whereas in Non-Fusion mode, the elements represent raw values. The acceleration is measured in m/s2 and also includes acceleration due to gravity.
The Accel port is available only when you select the Acceleration (m/s^2) parameter.
Data Types: double
Ang rate
— Angle of rotation per second along axes of sensorThe Ang rate port outputs the angle of rotation per second along the x-, y-, and z- axes of the sensor as a 3-by-1 vector. In Fusion mode, the elements of the vector represent calibrated values, whereas in Non-Fusion mode, the elements represent raw values. The angular rate is measured in dps.
The Ang rate port is available only when you select the Angular rate (dps) parameter.
Data Types: double
Mag field
— Strength of magnetic field along axes of sensorThe Mag field port outputs the strength of the magnetic field along the x-, y-, and z- axes of the sensor as a 3-by-1 vector. In Fusion mode, the elements of the vector represent calibrated values, whereas in Non-Fusion mode, the elements represent raw values. The magnetic strength is measured in μT.
The Mag field port is available only when you select the Magnetic field (μT) parameter.
Data Types: double
Euler
— Sensor orientation given as Euler anglesThe Euler port outputs the orientation along the axes of the sensor as a 3-by-1 vector. The elements of the vector represent the orientation using three angular quantities – azimuth (rotation around z- axis), roll (rotation around y- axis), and pitch (rotation around x- axis) of the sensor.
Angular Quantity | Description | Range in Degrees |
---|---|---|
Azimuth | Angle between y- axis of the sensor and magnetic north | [0, 360] |
Roll | Angle between z- axis and x- axis of the sensor | [−90, 90] |
Pitch | Angle between z- axis and y- axis of the sensor | [−180, 180] |
The Euler port is available only when you set
the Operation mode to
Fusion
and select the Euler
angles (degrees) parameter.
Data Types: double
Quat
— Sensor orientation given as a quaternionThe Quat port outputs the orientation along the w-, x-, y-, and z- axes of the sensor as a 4-by-1 vector. The orientation is measured in quaternion.
The Quat port is available only when you set
the Operation mode to
Fusion
and select the
Quaternion (quaternion) parameter.
Data Types: double
Lin accel
— Acceleration excluding force of gravity along axes of sensor The Lin accel port outputs linear acceleration along the x-, y-, and z- axes of the sensor as a 3-by-1 vector. The acceleration is measured in m/s2 and does not include acceleration due to gravity.
The Lin accel port is available only when you
set the Operation mode to
Fusion
and select the
Linear acceleration (m/s^2)
parameter.
Data Types: double
Gravity
— Acceleration due to gravity along axes of sensorThe Gravity port outputs acceleration due to gravity along the x-, y-, and z- axes of the sensor as a 3-by-1 vector. The acceleration due to gravity is measured in m/s2.
The Gravity port is available only when you
set the Operation mode to
Fusion
and select the
Gravity vector (m/s^2) parameter.
Data Types: double
Status
— Calibration status of overall system and gyroscope, accelerometer, and magnetometerThe Status port outputs the calibration status of the overall system and the sensors (gyroscope, accelerometer, and magnetometer) located inside the BNO055 sensor as a 4-by-1 vector.
This table shows what each element values in the vector indicate about the sensor calibration status.
Value | Calibration Status |
---|---|
0 | Uncalibrated |
1 and 2 | Partially calibrated |
3 | Fully calibrated |
A partially calibrated sensor with a calibration status of
2
provides more accurate readings than the sensor
with a calibration status of 1
. To fully calibrate
any of these sensors, see Calibrate Gyroscope, Calibrate Accelerometer, and Calibrate Magnetometer.
Note
If the Status port outputs an array with all
the elements having a value of -1
, ensure that
the sensor is properly connected to the hardware and the value of
the I2C address parameter is correct.
The Status port is available only when you
set the Operation mode to
Fusion
.
Data Types: int8
I2C address
— I2C slave address of sensor0x28
(default) | 0x29
Select the I2C address of the sensor from which the block read values.
Operation mode
— Option to output calibrated or raw valuesFusion
(default) | Non-Fusion
Fusion
— When you set
Operation mode to
Fusion
, the sensor operates in 9
degrees of freedom (NDOF) mode. The block outputs calibrated
values from the sensor.
This table lists the block output, measurement unit, dimension, and the axes of the sensor along which each of these outputs are measured.
Output | Unit | Dimension | Axes |
---|---|---|---|
Acceleration | Meter per second squared (m/s2) | 3-by-1 | x, y, and z |
Angular rate | Meter per second squared (m/s2) | 3-by-1 | x, y, and z |
Magnetic field | microtesla (μT) | 3-by-1 | x, y, and z |
Euler angles | degrees per second (dps) | 3-by-1 | x, y, and z |
Quaternions | Quaternion units | 4-by-1 | w, x, y, and z |
Linear acceleration | Meter per second squared (m/s2) | 3-by-1 | x, y, and z |
Gravity vector | Meter per second squared (m/s2) | 3-by-1 | x, y, and z |
Note
In Fusion mode, an internal fusion algorithm configures the range and bandwidth of the sensor with some values. These values cannot be modified.
Non-Fusion
— When you set
Operation mode to
Non-Fusion
, the sensor operates
in Accelerometer Magnetometer Gyroscope (AMG) mode. The block
outputs raw values from the sensor.
This table lists the block output, measurement unit, dimension, and the axes of the sensor along which each of these outputs are measured in Non-Fusion mode.
Output | Unit | Dimension | Axes |
---|---|---|---|
Acceleration | Meter per second squared (m/s2) | 3-by-1 | x, y, and z |
Angular rate | Meter per second squared (m/s2) | 3-by-1 | x, y, and z |
Magnetic field | microtesla (μT) | 3-by-1 | x, y, and z |
Sample time
— Interval to read values from sensor0.1
(default) | -1
| any nonnegative valueSpecify how often the block read values from the sensor, in seconds. When
you specify this parameter as -1
, Simulink® determines the best sample time for the block based on the
block context within the model.
Acceleration (m/s^2)
— Acceleration including force of gravity along axes of sensoron
(default) | off
When you select the Acceleration (m/s^2) parameter, the Accel port becomes available. For more information on the Accel port, see Accel.
Angular rate (dps)
— Angle of rotation per second along axes of sensoron
(default) | off
When you select the Angular rate (dps) parameter, the Ang rate port becomes available. For more information on the Ang rate port, see Ang rate.
Magnetic field (μT)
— Strength of magnetic field along axes of sensoron
(default) | off
When you select the Magnetic field (μT) parameter, the Mag field port becomes available. For more information on the Mag field port, see Mag field.
Data Types: double
Euler angles (degrees)
— Orientation along axes of sensoroff
(default) | on
When you select the Euler angles (degrees) parameter, the Euler port becomes available. For more information on the Euler port, see Euler.
The Euler angles (degrees) parameter is
available only when you set the Operation mode
to Fusion
.
Quaternion (quaternion)
— Orientation along axes of sensoron
(default) | off
When you select the Quaternion (quaternion) parameter, the Quat port becomes available. For more information on the Quat port, see Quat.
The Quaternion (quaternion) parameter is
available only when you set the Operation mode
to Fusion
Data Types: double
Linear acceleration (m/s^2)
— Acceleration excluding force of gravity along axes of sensoron
(default) | off
When you select the Linear acceleration (m/s^2) parameter, the Lin accel port becomes available. For more information on the Lin accel port, see Lin accel.
The Linear acceleration (m/s^2) parameter is
available only when you set the Operation mode
to Fusion
.
Gravity vector (m/s^2)
— Acceleration due to gravity along axes of sensoron
(default) | off
When you select the Gravity vector (m/s^2) parameter, the Gravity port becomes available. For more information on the Gravity port, see Gravity.
The Gravity vector (m/s^2) parameter is
available only when you set the Operation mode
to Fusion
.
Accelerometer range
— Range of acceleration deviation measured by accelerometer4G
(default) | 2G
| 8G
| 16G
Specify the deviation in the acceleration that the accelerometer can measure. The smaller the accelerometer range is, the more sensitive the readings from the accelerometer are. A small range provides more detailed data, resulting in a more precise reading from the accelerometer.
The Accelerometer range parameter is
available only when you set the Operation mode
to Non-Fusion
.
Accelerometer bandwidth
— Frequency response of accelerometer62.5 Hz
(default) | 7.81 Hz
| 15.63 Hz
| 31.25 Hz
| 125 Hz
| 250 Hz
| 500 Hz
| 1000 Hz
Specify the frequency at which the accelerometer measures acceleration.
The Accelerometer bandwidth parameter is
available only when you set the Operation mode
to Non-Fusion
.
Gyroscope range
— Maximum angular velocity measured by gyroscope2000 dps
(default) | 125 dps
| 250 dps
| 500 dps
| 1000 dps
Specify the maximum angular velocity that the gyroscope can measure per second.
The Gyroscope range parameter is available
only when you set the Operation mode to
Non-Fusion
.
Gyroscope bandwidth
— Frequency response of gyroscope32 Hz
(default) | 12 Hz
| 23 Hz
| 47 Hz
| 64 Hz
| 116 Hz
| 230 Hz
| 523 Hz
Specify the frequency at which the gyroscope measures angular velocity.
The Gyroscope bandwidth parameter is
available only when you set the Operation mode
to Non-Fusion
.
Magnetometer output data range
— Rate at which data is sampled10 Hz
(default) | 2 Hz
| 6 Hz
| 8 Hz
| 15 Hz
| 20 Hz
| 25 Hz
| 30 Hz
Specify the range of the magnetic field that the magnetometer can read.
The Magnetometer output data range parameter
is available only when you set the Operation
mode to Fusion
Data Types: double
To fully calibrate the magnetometer inside the Adafruit® BNO055 sensor:
Hold the sensor parallel to the ground and move it in a figure 8 pattern.
Note
Ensure that the sensor is far away from any magnetic interference.
Run your Simulink model and read the calibration status of the magnetometer.
Repeat this process until the calibration value of the magnetometer is
3
.
To fully calibrate the accelerometer inside the AdafruitBNO055 sensor:
Place the Adafruit BNO055 sensor in these six stable positions for a few seconds each.
Run your Simulink model and read the calibration status of the accelerometer.
Repeat this process until the calibration value of the accelerometer
is 3
.
To fully calibrate the gyroscope inside the Adafruit BNO055 sensor:
Place the sensor in any stable position for a few seconds.
Run your Simulink model and read the calibration status of the gyroscope.
Repeat this process until the calibration value of the gyroscope is
3
.
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.