14

そのため、私はしばらくの間この問題に苦労してきましたが、インターネットの知恵と関連するSOの投稿をうまく利用できませんでした。

ユビキタスな加速度計を使用する Android アプリを作成していますが、安静時でも信じられないほどの量の「ノイズ」が発生しているようで、測定値を相対的に測定する必要があるため、対処方法がわかりません。正確。私の携帯電話 (HTC Incredible) が機能していないのではないかと思いましたが、私がプレイした他のゲームやアプリではセンサーが正常に動作しているようです。

さまざまな「フィルター」を使用しようとしましたが、それらについて頭を悩ませているようには見えません。重力を何らかの方法で処理する必要があることは理解していますが、それが間違っている可能性があります。現在、iPhone SDKの例を参照しているSO answerから改作して、これを試しました。

                accel[0] = event.values[0] * kFilteringFactor + accel[0] * (1.0f - kFilteringFactor);
                accel[1] = event.values[1] * kFilteringFactor + accel[1] * (1.0f - kFilteringFactor);


                double x = event.values[0] - accel[0];
                double y = event.values[1] - accel[1];

投稿者は、満足するまで kFilteringFactor 値 (例では kFilteringFactor = 0.1f) を「いじる」ように言っています。残念ながら、私はまだ多くのノイズを取得しているように見えます. 私の脳の数学中枢も何年にもわたる怠慢から萎縮しているので、このフィルターがどのように機能しているのか完全には理解できません.

誰かが加速度計から有用な読み取り値を取得する方法を詳しく説明してもらえますか? 本当に良いチュートリアルを見つけられなかったので(少なくとも私の知識レベルを対象としている)、簡潔なチュートリアルは信じられないほどの助けになるでしょう. これはすべて私にとってもっと明白であるべきだと思うので、私はイライラします。ヘルプや指示があれば大歓迎です。もちろん、必要に応じてコードからさらに多くのサンプルを提供できます。

スプーンで食べさせすぎないように願っています。しばらくの間、私たちのことを理解しようとしていない限り、私は尋ねません. また、他の SO メンバーからも関心が寄せられているようです。

4

3 に答える 3

5

加速度計から正しい読み取り値を取得するには、式speed = SQRT(x * x + y * y + z * z)を使用する必要があります。これを使用すると、電話が静止しているときの速度は重力の速度(9.8m / s)になります。したがって、それ(SensorManager.GRAVITY_EARTH)を引くと、電話が静止しているときに、0 m/sの読み取り値が得られます。ノイズに関しては、Blrflは安価な加速度計について正しいかもしれません。私の電話が静止しているときでも、毎秒数分の1メートルのちらつきが続きます。0.4m / sなどの小さなしきい値を設定するだけで、速度がそれを超えない場合は、静止しています。

于 2011-02-03T15:24:56.953 に答える
5

部分的な答え:

正確さ。あなたが高精度を探しているなら、あなたが携帯電話で見つける安価な加速度計はマスタードをカットしません。比較のために、産業用または科学用に適した3軸センサーは、センサーだけで1,500ドルを超えています。ハードウェアを追加して電力を供給し、その読み取り値をコンピューターが使用できるものに変えると、価格が2倍になります。受話器のセンサーは、数量が5ドルをはるかに下回っています。

ノイズ。 安価なセンサーは不正確であり、不正確はノイズにつながります。動いていない不正確なセンサーは、常にゼロを表示するとは限りません。ある範囲内のいずれかの側に値を表示します。あなたができる最善のことは、静止している間にセンサーを特徴付けて、それがどれほどノイズが多いかを理解し、それを使用して、予想されるエラーに基づいて測定値をより正確でないスケールに丸めることです。(つまり、ゼロから± x m / s ^ 2以内の場合、センサーは動いていないと言っても差し支えありませんが、非常にゆっくりと動いている可能性があるため、正確にはわかりません。)これは、すべてのデバイスで同じ加速度計を使用しているわけではなく、動作も異なるためです。これがiPhoneの利点の1つだと思います。ハードウェアがかなり均質であるということです。

重力。加速度計が言うことから重力を因数分解することについてのSensorEventドキュメント にいくつかの議論があります。あなたはそれが何をしているのかについてより明確であることを除いて、あなたが投稿したコードと多くの類似性を持っていることに気付くでしょう。:-)

HTH。

于 2011-02-02T22:36:28.560 に答える