Я экспериментировал с компасом и гироскопом на iPhone 4 и хотел бы помочь с проблемой, которую у меня есть. Я хочу компенсировать медленность компаса, используя данные из гироскопа.Компенсация задержки компаса с помощью гироскопа на iPhone 4
Используя CMMotionManager
и его CMDeviceMotion
объект (motionManager.deviceMotion
), я получаю объект CMAttitude
. Поправьте меня, если я ошибаюсь (пожалуйста), но вот то, что я вывел из yaw
имущества CMAttitude
объекта (не нужно pitch
ни roll
для моих целей):
yaw
колеблется от0
доPI
, когда телефон был направлен вниз (как показаноdeviceMotion.gravity.z
) и качается против часовой стрелки и0
к-PI
, когда повернул по часовой стрелке- , когда устройство указывает вверх,
yaw
колеблется от-PI
до0
иPI
досоответственно - и от данных компаса (я использую
locationManager.heading.magneticHeading
), я вижу, что компас дает значения от0
к360
со значением увеличения, когда качается по часовой стрелке
Все права, поэтому, используя все этой информации я могу получить значение. Я вызываю horizontal
, что независимо от того, указывает ли устройство вверх или вниз, значения от 0
до 360
и увеличиваются, когда устройство разворачивается по часовой стрелке (хотя я все еще имею проблема, когда deviceManager.gravity.z
составляет около 0
- значение yaw
составляет gravity.z
).
Мне кажется, что я мог «синхронизировать» значение horizontal
и magneticHeading
, используя расчетную horizontal
значения, которое отображает на magneticHeading
и «синхронизировать» значение horizontal
для magneticHeading
, когда я чувствую, что компас «догнал».
Так мои вопросы:
- я на правильном пути с этим?
- Я использую данные гироскопа от
CMDeviceMotion
правильно и предположения, перечисленные выше, правильные? - Зачем нужен
yaw
урод, когдаgravity.z
составляет около0
?
спасибо. Я с нетерпением жду ваших ответов!
для этапа инициализации, попросите пользователя остановить некоторое время. пропустите шаг 7, если ваши приложения не будут сталкиваться с сталью или электричеством, в моем случае мне это нужно, потому что оно используется на заводе с высоковольтным оборудованием и трубопроводом, который является стальным. – FerryHtw