加速度センサーのデータ特性の分析とフィルターの設計
基本的な運転シナリオである25MPHの通常の道路の約32秒分の加速度計データと、約7個のくぼみと道路の大まかなパッチがあります。加速度計は、両面テープで私の車のダッシュボードに取り付けられています。 問題:加速度計からのノイズの多いすべてのデータがあり、ポットホールイベントが発生したことを検出する簡単な方法を作成する必要があります。以下は、時間領域とFFTのデータのグラフです。加速度計はGForceで測定しています 基本的に、私は私のarduinoに、大学院レベルの数学と技術を使用せずに、かなり高い精度でpot穴が発生したことを知ってほしい。 100hzでサンプリングされた加速度計には、Z軸に50HZ RCローパスフィルターがあります。 Here is the CSV data for the 32 seconds of accelerometer readings TIME, GFORCE format: http://hamiltoncomputer.us/50HZLPFDATA.CSV 更新:これは、Arduinoで得られる最高のサンプリングレートでサンプリングされた加速度計1000HZのRAWフル帯域幅です。CSVファイルの直接ダウンロード:約112秒のデータ http://hamiltoncomputer.us/RAWUNFILTEREDFULLBANDWIDTH500HZ.csv 黒いトレースは、フィルタリングされていないRAWの加速度センサーデータです。青色のトレースは、FFT、Dominate 2HZ、および12HZで検出された極端な周波数に基づくバンドストップフィルターによってフィルタリングされます。 時間領域では、ポットホールイベントは次のようになります。 FFTの10から15HZの成分が何なのか、実際のポットホールなのか、それとも道路に対する車輪のホイールホップなのか、それとも車の共振周波数なのかわかりません。 FFT: 実際のポットホールイベントのように見えますが、ここはHPF @ 13HZです。ポットホールの主要な機能は強化されているようです ポットホールをリアルタイムで検出してカウントできるようにしたい サスペンションは、動揺病を引き起こす10〜13 HZよりもずっと遅く動くはずです。 更新: AngryEEの提案に従って、加速度計1000HZの全帯域幅と、arduinoで得られる最大サンプリングレートを使用しました。 FFT: ポットホールイベントとその周辺のバンプとロードノイズのサンプルデータを次に示します。 ダイオードエンベロープ検出器回路を追加、出力は同じように見えます...加速度計は常に0〜3.3ボルトを出力します... 更新: 多くの路上試験から、Z軸上の私の車で1.6Gの最大45 MPHを超えることはありませんでした。rand()を使用して擬似ランダムGforce加速を生成しました。 私の考えは、1〜3秒のデータウィンドウを見て、Z軸の変位を計算できる場合ですが、加速度計のドリフトと積分の誤差が心配でした。ここで90%でさえ正確である必要はありません。> 70%は良いでしょうが、一度に1から3秒の変位を見ている場合、それはリアルタイムで可能ですか?このように、変位が1インチ、2インチ、5インチなどより大きいかどうかを確認できます。変位が大きいほど、バンプまたはポットホールは粗くなります。 私がこれを正しく行っているかどうかを確認できますか?基本的にデスクトップで設定し、rand()を使用して-1.6から1.6 Gのランダムな加速を生成し、50HZのサンプリングレートで3秒間のデータをキャプチャします * nixを実行する場合は、Windows.hのSleep()を使用して20mSの遅延、50HZのサンプリングレートを作成しています 私はちょうどコードがあなたに合っているかどうかを見たかった、私はまだ特定のバッファをしていません、私はそれを実装する方法についてちょっと混乱しています:コメントアウトされたコードは、私がそれに取り組んでいるクラスのものです、しかし、私はまだ100%を理解していません。循環バッファーを使用すると、データのウィンドウを連続して正しく移動できますか? #include …