Hi all,
I am trying to use a BMI323 for an orientation estimation application to continuously monitor roll/pitch but have been having some trouble with gyro offset calibration and have a few questions.
First, we'd originally implemented the BMI323's self-calibration functionality to reach an appropriate gyro offset but found that this was quite sensitive. I did note in the datasheet that self-calibration requires the device to be completely still but unfortunately this cannot always be guaranteed in my application. For instance, we found that if the user was holding the device in their hand this could generate enough low-frequency angular rate "noise" to achieve a bad zero-rate offset calibration resulting in roll and pitch quickly flying away from their actual values once fed into our complementary filter. We've tried bypassing the integrated self-calibration by reading multiple gyro readings at startup and finding and applying an average ourselves, but have also only had mixed success with this method. Are there any best practices you'd recommend to meet the needs of this application? I realize this may also be more of a filtering/data processing question.
Second, one of our motivations for calibrating zero-rate offset at each startup is to avoid any theoretical change in zero-rate offset that a new temperature may introduce (rather than recalling an offset value from memory that was gathered in a still environment near ambient temperature). Are there any other best practices for avoiding this offset change due to temperature?
Thank you!