CoreMotionでコンパスの見出し値が間違っています

私はCoreMotionを使用してccompass見出しを取得していますが、私はコンパス見出しにいくつかの問題があることに気付きました。

最初にCoreMotionを初期化しました。 CMMotionManagerオブジェクト(locationManager)があります。このオブジェクトはCMMotionManagerのインスタンスです。

// initialize CoreMotion
motionManager = [CMMotionManager new];
[motionManager setDeviceMotionUpdateInterval:1.0/30.0];
[motionManager setShowsDeviceMovementDisplay:YES];
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];

位置データは1/30.0秒ごとに更新されます。

デバッグの目的のために私はUILabelを持っています。これは現在のコンパスの見出しを更新間隔ごとに更新してくれます。 アプリケーションが起動している間、私はいつもコンパスを較正するためにマジカル8をしなければなりません。

コンパスを較正した後、北と南の見出しはほぼ2〜5秒間正確です。

数秒後、コンパスは野生になり、角度は飛び跳ねます。 ほとんどの場合、開始位置から両方向に約10〜20度浮いています。 Wierdの結果を得ようとした。 30-60秒後には今もまた南北が交換されたり、東と西に見えたりします。

WWDC 2011では、この問題を解決するために、各センサを別のセンサでどのように計算するかについてセッションが話されています。 CoreMotionの設定で私が見逃したことはありますか?正確な見出し結果のこの大きな問題がありますか?

私は今コンパスを3つのデバイス(2つのiPhone 4とiPhone 4)でビル内外でテストしました。私は野原、小都市、大都市にいました。それはいつも起こります。 Appleのサンプルコンパスアプリは、テストで90%の精度でほぼ正確です。残念ながら、それはAppleによって供給されたオープンではありません。

読んでくれてありがとう。

8

1 答え

CoreMotionの使用 CoreLocationは、あなたが探しているものを得るでしょう。

デフォルトでは、ハンドセットは校正図8を行い、これを無効にするには locationManagerShouldDisplayHeadingCalibration:を次のようにオーバーライドします。

- (BOOL)locationManagerShouldDisplayHeadingCalibration: (CLLocationManager *)manager {
    return NO; 
}

startUpdateHeading を呼び出しているのかどうかは、あなたの質問のコードからは分かりません。もしそうでなければ、そうする:

if( [CLLocationManager locationServicesEnabled] && [CLLocationManager headingAvailable]) {
    [myLocationManager startUpdatingLocation];
    [myLocationManager startUpdatingHeading];
}

見出しフィルタをオンにしないと、狂った結果が得られることがあります。そうすることをお勧めします。その後、 didUpdateHeading が呼び出されたときに、ロケーションマネージャ代理人の見出しの変更を取得するだけです。

また、ハンドセットがランドスケープモードの場合、見出しは常にPortraitの参照フレームにあるため、見出しを適切な度数(+/- 90)で調整する必要があります。

3
追加された
CoreLocationからCoreMotionを使用するとどういう意味ですか?私は同様の問題を抱えていて、CoreLocationの縫い目はほとんど正しいですが、CoreMotionでは、参照フレームを真北に設定すると、デバイスモーションデータがジャンプやドリフトするようです。
追加された 著者 pzo,
ご返信ありがとうございます。私は別のプロジェクトのために月曜日に締め切りがあり、私は今それをテストできません。私はあなたの提案をチェックします。それはかなり良いと思う。私は数日であなたにもっと知らせます。ありがとうございました!
追加された 著者 DasFuxx,
遅れて申し訳ありません。私は今それをテストする=)
追加された 著者 DasFuxx,