J'ai fait des expériences avec la boussole et gyroscope de l'iPhone 4 et voudrais un peu d'aide avec un problème que je vais avoir. Je veux compenser la lenteur de la boussole en utilisant les données du gyroscope.
À l'aide de CMMotionManager
et son CMDeviceMotion
objet (motionManager.deviceMotion
), j'ai l' CMAttitude
objet. Corrigez-moi si je me trompe (s'il vous plaît), mais voici ce que j'ai déduit de l' CMAttitude
de l'objet yaw
bien (je n'ai pas besoin pitch
ni roll
pour ma part):
-
yaw
varie de0
dePI
lorsque le téléphone est orienté vers le bas (comme indiqué pardeviceMotion.gravity.z
) et de se balancer dans le sens antihoraire et l'0
de-PI
lorsque basculé dans le sens des aiguilles - lorsque l'appareil est orienté à la hausse,
yaw
varie de-PI
de0
etPI
de0
, respectivement - et à partir de la boussole de données (je suis à l'aide d'
locationManager.heading.magneticHeading
- )), je vois que la boussole donne des valeurs de0
de360
, la valeur augmente lorsque balancer des aiguilles d'une montre
Tout droit, à l'aide de toutes ces informations ensemble, je suis en mesure d'obtenir une valeur que j'ai appel horizontal
que, indépendamment de savoir si l'appareil est orienté vers le haut ou vers le bas, va donner de la valeur à partir d' 0
de 360
et à augmenter lorsque l'appareil est balancé dans le sens horaire (même si je suis encore avoir des problèmes lors de l' deviceManager.gravity.z
est d'environ 0
-- l' yaw
de la valeur freaks à ce gravity.z
de la valeur).
Il me semble que je pourrais "synchroniser" l' horizontal
et magneticHeading
valeurs, à l'aide d'un calculés horizontal
de la valeur des cartes d' magneticHeading
, et "synchroniser" l' horizontal
valeur magneticHeading
quand je sens que la boussole a "rattrapé."
Donc mes questions:
- Suis-je sur la bonne voie avec cette?
- Suis-je en utilisant le gyroscope de données à partir d'
CMDeviceMotion
correctement et les hypothèses que j'ai énumérés ci-dessus correcte? - Pourquoi peut -
yaw
paniquer lorsqu'gravity.z
est d'environ0
?
Je vous remercie beaucoup. J'attends avec impatience vos réponses!