私は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.z0yawgravity.z
にマップする計算値を使用してhorizontalとの値を「同期」し、コンパスが「追いついた」と感じたときに値を「同期」できるように思えます。magneticHeadinghorizontalmagneticHeadinghorizontalmagneticHeading
だから私の質問:
- 私はこれで正しい方向に進んでいますか?
- 私はジャイロデータを
CMDeviceMotion適切に使用しており、上記の仮定は正しいですか? - が周りにいるのになぜ
yawびっくりするのでしょうか?gravity.z0
どうもありがとうございます。お返事をお待ちしております!