I am developing an automated pointing system that requires an accuracy of ~+/- 1.0 degree in both azimuth and elevation. I have been working with the BNO055 IMU and while it is very easy to work with, it is not producing the desired results. I am wondering if anyone has used the BNO055 in any system that requires such accuracies and if so, how do you interface to the device? I am using the BNO055 adafruit libraries and started with software that polls the IMU every ~3/4 seconds for Euler angles, calibration status and calibration offsets. I've recently made a slight change and now poll for the quaternion and then convert to Euler angles. As far as I can tell this doesn't produce any better results.
To test the repeatability of the yaw position measurement, I've built a turn table to which the IMU is mounted. This allows me to rotate the IMU clockwise and counter clockwise and return to the same 'stop' point. While collecting data, I rotate anywhere from 10 to 180 degrees off the stop point and then back collecting 20 or so data points each time I return to the stop point. I try to rotate in smooth continuous motion returning to the stop point within 5 - 10 seconds; so not too fast but not to slow either. I repeat this many times to build up some statistics that indicate the overall accuracy of the BNO055 yaw measurements and plot the resulting histogram labeled as Euler Repeatability Measure. It looks like if I built up enough statistics, that there is an approx. +/- 3 deg 1-sigma error.
I've done the same thing with the calculated (from quaternion readout) Euler angles. The histogram of this dataset doesn't look any better than the previous indicating that quaternions (converted to Euler angles) are not any more accurate. The plot is labeled as Calculated Euler from Quaternion Repeatability Measure.
I've also taken the difference in these histograms to see if the Euler and Quaternions are reporting different measures. The plot indicates that this is not the case. This plot is labeled as Quaternion - Euler Difference in Yaw.
I should mention that the system calibration remained at 3 for the entire testing process and the magnetometer calibration remained at >2, most of the time it was at 3.
I am beginning to think that the BNO055 is not the best choice for this application but was hoping for some pointers / feedback from anyone who has possible solved this problem already. Any help will be much appreciated.