49

ジャイロ+加速度計を使用して、iPhoneが移動した正確な距離(長距離ではない)を計算するアプリを構築したいと考えています。ここではGPSは必要ありません。

この問題にどのようにアプローチすればよいですか?

4

7 に答える 7

83

この問題の背後にある基本的な計算は式にあります

ここに画像の説明を入力

(およびyとzの変位の同様の式)および基本的な幾何学はピタゴラスの定理です

ここに画像の説明を入力

したがって、加速度計の信号がローパス フィルターを通過し、サンプリング間隔 dt でビニングされると、x の変位を次のように見つけることができます (私の C を許してください... )

float dx=0.0f;
float vx=0.0f;
for (int i=1; i<n; i++)
 {
   vx+=(acceleration_x[i-1] + acceleration_x[i])/2.0f*dt;
   dx+=vx*dt;
 }

dy と dz についても同様です。ここ

float acceleration_x[n];

時間 0、dt、2*dt、3*dt、... (n-1)*dt での測定の開始から終了までの x 加速度値が含まれます。

総変位を見つけるには、次のようにします

dl=sqrt(dx*dx + dy*dy + dz*dz);

これにはジャイロスコープは必要ありませんが、直線距離を測定している場合は、ジャイロスコープの読み取り値を使用して、デバイスの回転が大きすぎないように制御できます。回転が強すぎる場合は、ユーザーに測定をやり直してもらいます。

于 2011-07-11T08:41:17.887 に答える
47

線形加速度を 2 回積分することで位置を取得できますが、誤差はひどいものです。それは実際には役に立たない。

23:20の理由 (Google Tech Talk)は次のとおりです。このビデオを強くお勧めします。

同様の質問:


更新(2013 年 2 月 24 日): @Simon はい、たとえば人が歩いていて、センサーが足に付いているなど、動きについて詳しく知っている場合は、さらに多くのことができます。これらは呼ばれます

     ドメイン固有の仮定

仮定が成り立たない場合、それらは惨めに壊れ、実装が非常に面倒になる可能性があります。それでも、うまくいけば楽しいことができます。私の回答のリンクを参照してください。屋内測位でのAndroid 加速度計の精度 (慣性航法) 。

于 2011-07-11T10:03:49.497 に答える
5

シンプルな iPhone モーション検出で説明されているように、Core Motion インターフェイスを使用する必要があります。特にすべての回転を非常に正確に追跡できます。直線的な動きに関連することを計画している場合、これは非常に難しいことです。コアモーションを使用して加速度計データから変位を取得する をご覧ください。

于 2011-07-11T08:30:48.837 に答える
-1

これが答えです。誰かが前に尋ねました。

同じことを行うRangeFinderというアプリがあります (App Store で入手可能)。

于 2011-07-11T08:08:52.410 に答える