We are trying to build a system using the BNO055 IMU, it is a statically positioned system which rotates slowly and thus does not auto calibrate. For this we accomplished to retrieve and load the calibration data after a manual calibration (rotating the complete system by hand untill all sensor calibrations were 3.
For rotating the system this works perfectly since it mostly relies on the gyro but we alse need to determine the North. Since it is a static system we cannot use the GPS and thus want to use the BNO055 for this. Loading the calibration data in NDOF mode gave us varying results with the North varying +- 10 degrees when loading the calibration values after a reboot. Loading the calibration values in Compass mode gave more consistent results in determining the North, however it is not consistent while rotating the system (i.e. if the system is not positioned towards the north). Rotating the system relative to North gave the following readings:
0 degree rotation -> 347 degrees reading
90 degree rotation -> 62 degrees reading (75 degrees instead of 90 degrees difference)
180 degree rotation -> 152 degrees reading (90 degrees as expected)
270 degree rotation -> 241 degrees reading (89 degrees as expected)
0 degree rotation -> 345 degrees reading (104 instead of 90 degrees difference)
The BNO055 is positioned in a system which includes metal parts so it could be due to Soft Iron distortions. However, in some spots I read that the BSX sensor fusion (which is integrated) supports the soft iron calibration: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BHI160-and-soft-iron-correction/m-p/5912
While other posts indicate it doesn't: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/How-to-do-BNO055-soft-iron-calibration/t...
My questions are:
- Is it indeed possible to save calibration values here and use the system elsewhere on earth while getting accurate heading readings.
- Does the internal algorithm do soft iron calibration or not?
- If not, how can I get this calibrated (I know I can insert a SIC matrix but how do I get/measure this matrix?)
- Do you have alternative/better options to get accurate heading readings in such a stationary positioned system which can be used worldwide.
I hope everything above makes sense, I am looking forward to getting some guidance for this.
1. calibration sensor in place A, then use sensor in place B. the pre-saved calibration parameters are not accurate any more because the magnetic environment is not same at all.
2. we always expect sensor be calibrated in place B before use. in your description, it is move slowly, so it is not possible to let system achieve auto calibration. Can you do manual calibration in place B befure system installed?
3. The algorithm only take the SOFT IRON matrix as compensate. algorithm itself is not calculating soft iron. But if you set the matrix, the output will compensate for the soft iron.
4. You need at least a 3D coil to create standard magnetic environment to get the SIC matrix.
5. Since the magnetic environment is complex, the only way is calibrate in each place. there is no standard parameters can fit all over the world.
Thank you for your quick response!
So basically, when you move the system to another place it always needs to be recalibrated.
If, with my current calibration, the measurements still deviate, this will probably be due to those soft iron effects? But in order to compensate these I would need a "standardized" environment.
Conclusively, this sensor does probably not really meet my needs.
For this application where I require a North position without the user having to calibrate the sensor manually, do you know any alternatives?
It is quite difficult since each place the magnet environment is always different.
It is not due to soft iron compensation. it is because the chaning of the magnetic environment. Then the soft iron distortion affected by environment. Also, when environment changes, the offset of magnetic sensor will also changes.
Soft iron compenstation just need to do once. when you calcualte the SIC matrix in the lab for this device model, normally it will not changes. you can use same matrix for the devices all over the world.
But the offset is changing according to different place. Wrong offset value will lead to wrong output. This parts need a calibration movement for each place to get correct offset value before pointing to real North.
I am developing a consumer product which we will sell in different parts of the world.
You say the SIC can be calibrasted in the lab & these values can be used in all locations. Have I got that correct? Please can you advise how this is done.
Also you say for calibration for North, this needs to be done in the location used. Please can you advise how this can be done so a consumer can carry this procedure out.