Телефоны используют сенсорный синтез и иногда также комбинируют зрение, чтобы определить, как выполнить сшивание в отношении движения.
Наиболее распространенным является использование фильтра Калмана, когда у вас есть несколько источников информации в разных измерениях, которые можно объединить в нужную переменную. В основном, вы ищете ориентацию устройства
https://developer.android.com/reference/android/hardware/Sensor#TYPE_GEOMAGNETIC_ROTATION_VECTOR
в Android например.
Он использует магнитометр, акселерометр и гироскоп
1. Магнитометр для оценки земного севера
2. Акселерометр для оценки силы тяжести
3. Гироскоп для расчета движения в динамическое время, акселерометр и магнитометр будут препятствовать дрейфу гироскопа, в то время как гироскоп помогает дать достоверные результаты, в то время как устройство в движении и акселерометр не определяют точность направления гравитации из-за линейного ускорения.
Я могу продолжать в деталях, но это не так важно, как это уже реализовано для вас. Это даст вам вектор вращения относительно земной системы координат.
После того, как вы сделаете нужные изображения или в режиме реального времени, вы должны усовершенствовать результаты, используя некоторое зрение, поскольку точность датчика даст вам как минимум 2-3 степени погрешности.
Надеюсь, это поможет,
Удачи в проекте!