Обнаружение вращения с помощью датчиков iphone - PullRequest
3 голосов
/ 26 ноября 2011

Я создаю приложение, которое определяет, повернулся ли телефон на 360 градусов.Это вращение, скорее всего, будет сделано через 35 секунд.Как мне это точно определить?Я прочитал несколько статей об «интеграции» и использовании гироскопа на короткий срок и акселерометра для компенсации гироскопа.Каков наилучший способ добиться этого, и, для начала, как я могу получить значения вращения из гироскопа?

Я действительно не понимаю RotationMatrix из умноженного на обратное CMAttitude значения.CMAttitude.yaw дает мне разные значения, даже когда я не пользуюсь телефоном.Я также видел пример с чайником.Мой код работает примерно так же, за исключением того, что мне нужно обрабатывать данные из RotationMatrix самостоятельно, поскольку я не использую OpenGL, чтобы сделать это для меня.

Заранее спасибо, Хидде

1 Ответ

1 голос
/ 26 ноября 2011

Рассматривая базовый API-интерфейс движения, кажется, что вам лучше всего следить за скоростью вращения.В частности, через интерфейс CMDeviceMotion , который объявляет свойство вращение с этим обсуждением:

Структура CMRotationRate содержит данные, определяющие скорость вращения устройства вокруг трех осей.Значение этого свойства содержит измерение данных гироскопа, смещение которых было удалено алгоритмами Core Motion.С другой стороны, свойство идентичного имени CMGyroData предоставляет необработанные данные с гироскопа.Тип структуры объявлен в CMGyroData.h.

Вы можете отслеживать события, заявив о своем интересе с помощью метода CMMotionManager:

- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame toQueue:(NSOperationQueue *)queue withHandler:(CMDeviceMotionHandler)handler

Затем выВам нужно сделать немного математики, чтобы определить, сколько времени должно произойти вращение с заданной скоростью, чтобы составить полное вращение на 360 градусов.

...