5

加速度計を使用して歩数を計算する方法を知りたいです。実際に私は加速度を計算し、このコードを使用して歩数を数えます

length = sqrt(x * x + y * y + z * z);
if(length>=2){
   stepcount+=1;
}

どこで長さはacceleration.x、acceleration.y、acceleration.zを使用して加速度を計算しますしかし、アプリケーションを開始するときの私の主な問題は、ステップカウントは正しいステップ値を与えますが、時間が経つにつれてその値は正しくありません.Plzは私を助けてくれます

4

2 に答える 2

5

基本的に、誰かがステップを終了または開始する兆候として、特定の値を超える急激な加速を使用しています。

まず、ステップを見逃さないように、加速度計を十分な頻度でサンプリングする必要があります。次に、しきい値がどうあるべきかについて正しく推測していることを確認する必要があります。

これには、多くの試行錯誤が必要になります。

私がお勧めするのは、時間の経過に伴う長さをグラフ化し、通常は正しい適切なしきい値を考え出すことができるかどうかを確認することです.

しかし、とにかく、それが本当に正確になることはありません。歩数を正確に測定する唯一の方法は、靴にヒール センサーを使用することだと思います。

于 2010-01-23T06:20:33.487 に答える
2

編集:問題を誤解しているようです。より適切な Omnifarious の回答を参照してください。


加速度ベクトルの長さを取っても、移動距離の合計にはなりません。これはそれよりも少し複雑になります。

  • まず、距離 (スカラー) と速度 (ベクトル) を 0 に設定します。
  • 各時間間隔で、現在の加速度ベクトルを速度ベクトルに加算して、更新された速度ベクトルを計算します。
  • 各時間間隔で、速度ベクトルの大きさを距離に加算して、移動距離を累積します。
  • 使用している時間座標系でこれらの間隔が単位間隔でない場合は、加速度ベクトルと速度ベクトルを適切にスケーリングします。たとえば、加速度が m/s^2 で表され、サンプリング間隔が 100ms の場合、速度ベクトルに追加する前に加速度ベクトルを 0.1 でスケーリングします。速度を距離に累積する場合も同様です。

たとえば、少し加速してから一定の速度で移動すると仮定すると、加速度ベクトルは 0 になります。ただし、速度がある程度上昇しているため、移動距離は着実に増加し続けるはずです。

実際の位置を追跡したい場合は、それをベクトルとして維持し、時間間隔ごとに現在の速度ベクトルを追加し続けます。

これは推測航法による慣性航法であり、誤差は時間の経過とともに (速度ベクトルに、したがって距離にわたって) 蓄積し始めます。どのような精度が期待できるかを確認するには、いくつかの実験を行う必要があります。

于 2010-01-23T06:18:53.020 に答える