I have just purchased the BNO055 sensor and am looking to use it with an Arduino board as an IMU sensor. I am specifically interested in obtaining Euler angle outputs. I am currently using the sample code, "rawdata", in Arduino IDE to obtain Euler angle measurements but am a bit unclear on what coordinate axes the outputted Euler angles are relative to. Is it the coordinate axes of the sensor each time it is powered on, or an absolute coordinate axes? Based on my own testing, it seems to be a combination of these, but it's possible that I'm somehow not using the sensor in the way that it's intended to be used. For example, no matter what Yaw angle I put the sensor in before powering it on, the sensor seems to initialize its starting Yaw angle as 0. This was not true, however, for the Roll and Pitch angles, as their initial values changed based on what the orientation of the sensor was when it was powered on.
Solved! Go to Solution.
By default, the BNO055 starts every time with its own coordinate system which describe in datasheet.
if you want it to match your system coordinate, you need to configure the axis remapping register, please refer to chapter 3.4 in BNO055 datasheet.
BNO055 by default starts from Android defination of Eular angles. You can find detail defination in following link.
Is the sensor being initialized properly? According to the datasheet, there are 5 fusion modes, but only 3 of them will provide absolute orientation data. The other two are relative - one of them, i suspect, is the mode you're using. NDOF mode is likely what you're looking for. NDOF would be 0x1C, I believe.
I have the same issue with @alx1822. I use the BNO055 on NDOF mode and, although the Roll and Pitch euler angles have varying initial values depending on the position of the sensor when it is powered on, this is not the case with the Yaw value, which is initialized on 0.0.
When I tested the COMPASS mode, which offers absolute orientation as the NDOF mode, according to the datasheet, all 3 values (Yaw, Pitch, Roll) have varying initial values depending on the position of the sensor when it is powered on. Why does this not happen with the NDOF mode?
Regarding your point that the BNO055 start every time with its own coordinate system, if this is the case on this modes, shouldn't all 3 initial values equal to 0 when the sensor is powered on?
The reason why I would prefer to use the NDOF mode, instead of the COMPASS one, is that in the latter, the measurement accuracy depends on the stability of the surrounding magnetic field.
I would appreciate your answer/help! Thanks in advance!
Did you calibrated sensor and achieve the calibration level 3?
Under NDoF mode, after fully calibrated, BNO055 heading output should point to North.
Suggest here is every time turn on the sensor, you need perform calibration movement or load the calibration parameters from last time while achieve calibration level 3.