Определить тангаж, крен и рыскание относительно географического севера на iOS?

Я вижу, что могу получить CMAttitude с устройства и с него я могу прочитать 3 значения которые мне нужны (тангаж, крен и рыскание). Насколько я понимаю, этот объект CMAttitude управляется CoreMotion, который представляет собой диспетчер Sensor Fusion для расчета правильных результатов от компаса, гироскопа и акселерометра вместе (на Android это класс SensorManager).

Итак, мои вопросы:

  1. Относятся ли эти значения (тангаж, крен и рыскание) к магнитному северу и гравитации?

  2. Если приведенное выше верно, как я могу изменить его, чтобы получить результаты относительно географического севера?

  3. Если на устройстве (например, iPhone 3GS) нет гироскопа, нужно ли мне сообщить об этом Менеджеру или я могу просто сказать ему, чтобы он показал мне положение устройства на основе имеющихся у него датчиков (acc + gyro + compas OR acc + compas)


person vale4674    schedule 16.02.2012    source источник


Ответы (1)


  1. и 2:

iOS 5.0 упрощает эту задачу. В диспетчере CMMotion появился новый метод:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

В качестве системы отсчета вы можете использовать следующие значения:

  • CMAttitudeReferenceFrameXMintageNorthZVertical для магнитного севера,
  • CMAttitudeReferenceFrameXTrueNorthZVertical для истинного севера.

Если вы хотите сделать это со старой версией iOS, боюсь, вам придется откалибровать это самостоятельно, используя текущее местоположение пользователя.

Попробуйте проверить эти ресурсы:

3. Если устройство не имеет гироскопа, свойство deviceMotionAvailable CMMotionManger будет «NO» (эквивалентно свойству gyroAvailable), и вы не сможете получить ориентацию с помощью движения устройства. Единственное, что вы можете сделать, - это напрямую считывать данные акселерометра и магнитометра.

person Artur Ozierański    schedule 16.02.2012
comment
Спасибо за ответ. Итак, это означает, что если я установил ReferenceFrame CMAttitudeReferenceFrameXTrueNorthZVertical, у меня должен быть включен GPS, потому что iOS также будет использовать мое текущее местоположение? 1. и 2. Я также хотел бы поддерживать ОС 4.0, так что я должен это понять. 3. Для меня нормально тогда не поддерживать 3GS или рассчитывать ориентацию этого устройства только с помощью акселерометра и компаса. Итак, вы видите, что у меня было бы 3 проверки в моем коде 1. isOS5 - используйте CMAttitudeReferenceFrameXTrueNorthZVertical 2. isOS4 - откалибруйте 3. is 3GS - я не могу понять, поэтому я должен рассчитывать только с помощью акселерометра и компаса. - person vale4674; 16.02.2012
comment
Я только что закончил смотреть оба видео, и это многое проясняет, спасибо. - person vale4674; 17.02.2012
comment
Я уже какое-то время занимаюсь исследованиями, но не могу найти то, что хочу. То, что с iOS4. Можете ли вы дать мне несколько советов или рекомендаций о том, как получить эти значения на iOS4? - person vale4674; 17.02.2012