Я не реализовал это в Android, но у меня он работает на iPad 2 для приложения дополненной реальности, над которым я работаю над диссертацией на степень магистра. Чтобы он работал гладко, я обнаружил, что лучше всего установить частоту обновления для датчиков, соответствующих частоте кадров (для меня это 30 Гц), но, вероятно, стоит поэкспериментировать, чтобы увидеть, что лучше для вашего устройства.
Я не совсем уверен, что вы имеете в виду, когда летаете повсюду, но смещение датчика, вероятно, вызовет заметную ошибку - мои объекты медленно вращаются случайным образом, когда устройство находится в покое. Очень раздражает, но то, что вы должны принять при использовании IMU.
Кроме того, убедитесь, что вы обновляете кватернион после того, как у вас появятся новые показания со всех датчиков, вместо того чтобы каждый датчик получал новое показание отдельно.