私は現在、現在の態度を非常に正確に判断する必要がある iPhone アプリ (iPhone 5、iOS 7、Xcode 5) を開発しています。CMDeviceMotion の「姿勢」は、これらの要件を満たしていません。これは、Apple のセンサー フュージョン アルゴリズムがジャイロスコープに大きく依存しているように思われるためです (私の経験では)。そのため、裸のセンサー データを読み取ることにし、後でそれをセンサー フュージョン アルゴリズム内で自分で結合したいと考えました。
磁力計のデータを求める場合、次の 2 つの可能性があります。
CMMotionManager の CMmagnetometerData 経由
Appleが言うCMDeviceMotionのCMCalibratedMagneticField経由
このプロパティによって返される CMCalibratedMagneticField は、デバイス バイアスなしで、デバイス付近の総磁場を示します。CMMagnetometer クラスの MagneticField プロパティとは異なり、これらの値は、地球の磁場に周囲の磁場を加えたものからデバイス バイアスを差し引いたものを反映します。
原則として(2.)はまさに私が欲しいものです。
磁力計のデータが適切に校正されているかどうか、非常に簡単なテストがあります。簡単にするために、自分自身を 2 次元に制限することができます。デバイスが仰向けになっている場合、デバイスが指している方向に関係なく、B_x^2 + B_y^2 の組み合わせは一定でなければなりません。これは、地球の磁場の水平成分にちょうど等しくなければなりません (デバイスの近くに他の磁場がないことを前提としています)。したがって、デバイスを仰向けにして 360 度回転させると、B_x 上の測定データ B_y は円を表示するはずです。詳しくはこちらをご覧ください。
ポイント: CMCalibratedMagneticField のデータは円になりません!
誰かがそれについて説明していますか?または、CMCalibratedMagneticField がどのように発生するかを知っている人はいますか? デバイスの「8 字形」の動きを実行するとき、磁力計は上からのリンクの意味で校正されていますか、または動きは何に適していますか?
ところで。上記のリンクで説明されているように、「8 の形をした」動きで、3 軸を中心にデバイスを反転させないのはなぜですか?
この問題についてご説明いただければ幸いです...ありがとうございます!