3

デバイスからCMAttitudeを取得できることがわかり、そこから必要な 3 つの値 (ピッチ、ロール、ヨー) を読み取ることができます。私が理解しているように、この CMAttitude オブジェクトは、コンパス、ジャイロ、加速度計から正しい結果を一緒に計算するセンサー フュージョン マネージャーである CoreMotion によって管理されます (Android では SensorManager クラス)。

だから私の質問は:

  1. これらの値 (ピッチ、ロール、ヨー) は、磁北と重力に相対的ですか?

  2. 上記が正しい場合、地理的な北に関連する結果を得るにはどうすれば修正できますか?

  3. デバイス (iPhone 3GS など) にジャイロスコープがない場合、マネージャーに伝える必要がありますか、それともセンサーに基づいてデバイスの姿勢 ( acc + gyro + compas OR acc + コンパス)

4

1 に答える 1

6
  1. および2:

iOS 5.0は、このタスクを簡素化します。CMMotionマネージャーには新しい方法があります。


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

参照フレームとして、次の値を使用できます。

  • 磁北のCMAttitudeReferenceFrameXMagneticNorthZVertical、
  • 真北のCMAttitudeReferenceFrameXTrueNorthZVertical。

古いiOSでこれを実行したい場合は、現在のユーザーの場所を使用して自分で調整する必要があります。

このリソースをチェックアウトしてみてください:

3.デバイスにジャイロがない場合、CMMotionMangerのdeviceMotionAvailableプロパティは「NO」(gyroAvailableプロパティと同等)になり、デバイスモーションを使用して姿勢を取得することはできません。あなたができる唯一のことは、加速度計と磁力計のデータを直接読み取ることです。

于 2012-02-16T16:17:29.783 に答える