Значения рыскания CMDeviceMotion нестабильны, когда iPhone находится вертикально

В прототипе iOS я использую комбинацию CMDeviceMotion.deviceMotion.yaw и CLHeading.trueHeading, чтобы сделать стабильный курс по компасу, который является отзывчивым и точным. Это хорошо работает, когда iPhone держится горизонтально, когда у меня есть графическая стрелка, указывающая на стабильное направление компаса.

Проблема возникает, когда iPhone удерживается вертикально в портретном режиме. UIDeviceOrientation постоянно меняется с UIDeviceOrientationFaceDown на UIDeviceOrientationFaceUp и обратно. Это заставляет значение рыскания переходить назад и вперед на +/-180 градусов в зависимости от небольших изменений высоты тона. Можно ли привязать устройство к одной ориентации, которая дает стабильное значение рыскания, предсказать изменение без сбоев или вычислить гироскопическое рыскание (или крен в этой ориентации) другими способами?

У этого бедняги такая же проблема, но ответов нет. Двойные очки возможные люди! :) https://stackoverflow.com/questions/10470938/euler-angle-yaw-not-working-when-iphone-orientation-changes

12
задан Community 23 May 2017 в 12:26
поделиться