ジャイロ+加速度計を使用して、iPhoneが移動した正確な距離(長距離ではない)を計算するアプリを構築したいと考えています。ここではGPSは必要ありません。
この問題にどのようにアプローチすればよいですか?
ジャイロ+加速度計を使用して、iPhoneが移動した正確な距離(長距離ではない)を計算するアプリを構築したいと考えています。ここではGPSは必要ありません。
この問題にどのようにアプローチすればよいですか?
この問題の背後にある基本的な計算は式にあります

(および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);
これにはジャイロスコープは必要ありませんが、直線距離を測定している場合は、ジャイロスコープの読み取り値を使用して、デバイスの回転が大きすぎないように制御できます。回転が強すぎる場合は、ユーザーに測定をやり直してもらいます。
線形加速度を 2 回積分することで位置を取得できますが、誤差はひどいものです。それは実際には役に立たない。
23:20の理由 (Google Tech Talk)は次のとおりです。このビデオを強くお勧めします。
同様の質問:
更新(2013 年 2 月 24 日): @Simon はい、たとえば人が歩いていて、センサーが足に付いているなど、動きについて詳しく知っている場合は、さらに多くのことができます。これらは呼ばれます
ドメイン固有の仮定。
仮定が成り立たない場合、それらは惨めに壊れ、実装が非常に面倒になる可能性があります。それでも、うまくいけば楽しいことができます。私の回答のリンクを参照してください。屋内測位でのAndroid 加速度計の精度 (慣性航法) 。
シンプルな iPhone モーション検出で説明されているように、Core Motion インターフェイスを使用する必要があります。特にすべての回転を非常に正確に追跡できます。直線的な動きに関連することを計画している場合、これは非常に難しいことです。コアモーションを使用して加速度計データから変位を取得する をご覧ください。
これが答えです。誰かが前に尋ねました。
同じことを行うRangeFinderというアプリがあります (App Store で入手可能)。