私はiPhone4でコンパスとジャイロスコープを試してきましたが、私が抱えている問題について助けを求めています。ジャイロスコープのデータを使って、コンパスの遅さを補いたいです。
CMMotionManager
とそのCMDeviceMotion
オブジェクト( )を使用して、オブジェクトmotionManager.deviceMotion
を取得しCMAttitude
ます。私が間違っている場合は訂正してください(お願いします)が、CMAttitude
オブジェクトのyaw
プロパティから推測したものは次のとおりです(私は必要ありpitch
ませんroll
し、私の目的のためでもありません):
yaw
範囲は0
、PI
電話が下を向いて(で示されているようにdeviceMotion.gravity.z
)反時計回りに振っ0
ている-PI
ときから時計回りに振っているときまでです。- デバイスが上を向いているときの
yaw
範囲は、それぞれ-PI
から0
とPI
までです。0
- そして、コンパスデータ(私が使用している
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
どうもありがとうございます。お返事をお待ちしております!