05-11-2021 02:56 PM - edited 05-11-2021 02:57 PM
I am using the BNO055 for reading angular positions, velocities and accelerations.
While streaming data, I notice that I occassionally get the value -0.06 (for angular positions, velocities or accelerations, completely random and independent), which very clearly are outliers to the rest of the data. Of late, I have been receiving this datapoint more frequently.
Need help in understanding why the BNO055 outputs -0.06, and how it could be prevented/corrected.
Solved! Go to Solution.
05-11-2021 04:26 PM
Thanks for your inquiry.
Please let us know the BNO055 sensor fusion mode and FW version value. Please provide us with the data log you streamed from BNO055. Also please show us the data points where -0.06 happened in the data log. We will try to reproduce the issue.
05-11-2021 11:36 PM - edited 05-12-2021 08:52 AM
The Fusion mode used was NDof.
I am not sure what you mean by the FW version value.
Data was streamed using Arduino IDE at approx 10 Hz, and the data registers for Euler hrp, Gyro xyz and Acceleration xyz were respectively read using the library functions bno055_read_euler_hrp(&Eul_data_vector), bno055_read_gyro_xyz(&Gyr_data_vector) and bno055_read_accel_xyz(&Accel_data_vector). The values were then type casted to float and divided by 16.00
The following is the screenshot of the log, where the outlier values are clearly seen.
05-12-2021 05:44 PM
BNO055 FW version is defined in register 0x05 and 0x04. For example, if you read these two registers and got value of 0x03 and 0x11 back respectively, then the FW version is 3.11.
I just logged my BNO055 data at NDOF mode using my eval. board. Please see the attached CSV file where there are a lot of +/-0.0625 values. The value of +/-0.0625 stands for 1/16 (LSB) which means that when HPR or gyro data or accel data has +/-1LSB raw value, then the logged data will show +/-0.0625. So +/-0.0625 is a meaningful value which is close to 0LSB.
05-13-2021 11:09 AM
Thanks for the data. It is interesting to know that -0.06 corresponds to a meaningful value and is not an error code.
I plotted your data, and I see that you achieve smooth plots for all angles. Here, I've plotted the roll. There are no outliers.
However, in my case, these values occur at unexpected points, standing out as clear outliers.
In the absense of these outliers, the plot should have looked nearly sinusoidal, as below:
This is leading to loss of meaningful information, for example, in the range of 150 to 200, in my plot above. Hence, simply filtering out the outlying points is not a solution. Do you know why this might be occuring?