13

私は現在、現在の態度を非常に正確に判断する必要がある iPhone アプリ (iPhone 5、iOS 7、Xcode 5) を開発しています。CMDeviceMotion の「姿勢」は、これらの要件を満たしていません。これは、Apple のセンサー フュージョン アルゴリズムがジャイロスコープに大きく依存しているように思われるためです (私の経験では)。そのため、裸のセンサー データを読み取ることにし、後でそれをセンサー フュージョン アルゴリズム内で自分で結合したいと考えました。

磁力計のデータを求める場合、次の 2 つの可能性があります。

  1. CMMotionManager の CMmagnetometerData 経由

  2. Appleが言うCMDeviceMotionのCMCalibratedMagneticField経由

このプロパティによって返される CMCalibratedMagneticField は、デバイス バイアスなしで、デバイス付近の総磁場を示します。CMMagnetometer クラスの MagneticField プロパティとは異なり、これらの値は、地球の磁場に周囲の磁場を加えたものからデバイス バイアスを差し引いたものを反映します。

原則として(2.)はまさに私が欲しいものです。

磁力計のデータが適切に校正されているかどうか、非常に簡単なテストがあります。簡単にするために、自分自身を 2 次元に制限することができます。デバイスが仰向けになっている場合、デバイスが指している方向に関係なく、B_x^2 + B_y^2 の組み合わせは一定でなければなりません。これは、地球の磁場の水平成分にちょうど等しくなければなりません (デバイスの近くに他の磁場がないことを前提としています)。したがって、デバイスを仰向けにして 360 度回転させると、B_x 上の測定データ B_y は円を表示するはずです。詳しくはこちらをご覧ください。

ポイント: CMCalibratedMagneticField のデータは円になりません!

プロット

誰かがそれについて説明していますか?または、CMCalibratedMagneticField がどのように発生するかを知っている人はいますか? デバイスの「8 字形」の動きを実行するとき、磁力計は上からのリンクの意味で校正されていますか、または動きは何に適していますか?

ところで。上記のリンクで説明されているように、「8 の形をした」動きで、3 軸を中心にデバイスを反転させないのはなぜですか?

この問題についてご説明いただければ幸いです...ありがとうございます!

4

1 に答える 1

2

iOS 7 の磁力計に問題があり、+-7º の誤差があります。7.1 ベータ版を使用してみてください。

編集

磁力計は時間の経過とともにドリフトがゼロになりますが、位置の突然の変化についてはかなり不正確です。一方、加速度計とジャイロスコープは急激な変化にすばやく対応しますが、慣性センサーであるため、時間の経過とともに精度が低下します。

そのCMCalibratedMagneticFieldため、回転運動を補正しようとすると、ジャイロスコープと加速度計からのデータが使用されます。これは、加速度計とジャイロスコープの +-7 度の誤差が忍び込み、円を軌道から外したときです。詳細については、この回答とこのウィキペディアの記事を確認してください。

8の字に関しては、どちらも同じことを行います.磁気干渉を相殺するために、デバイスの「北」を各方向に向けます. 3 つの軸すべてに沿ってデバイスを反転させるとうまく機能しますが、実行するのが難しく、ユーザーが簡単に理解することはできません。

お役に立てれば。

于 2014-01-15T09:13:06.733 に答える