Androidのアプリ(Torque)を使って愛車のデータ計測をしているわけですが、ひとつ懸念があるのが加速度センサの値。
OBD経由で得る信号はだいたい1秒間隔で更新されるのに対し、加速度センサはスマホのものを使うため、より細かい間隔で更新されます。
細かくデータを取れるのはいいのですが、下記のように加速度センサだけノイズがすごい。。
がっちり固定して計測しているわけではないので、スマホ自体が揺れたことで生じる振動もあるでしょうが、見たいのは車両の加減速に関する挙動なのでもう少し滑らかにしたいところ。
ということで、ちゃんとデータを解析するためにもなんとかこのノイズを取りたいわけですが、フィルタリングはExcelだとちょっとつらい。
無料で使える解析ソフト、Scilab
有料のソフトを使えばできるんでしょうが、お金はかけたくないしな〜、なんか良いソフトないかな…ということで思いついたのがscilab。
制御工学ではよく数値計算にmatlabが使われますが、それによく似た機能を持つフリーソフトです。まぁその辺の話はwikiに載ってます。笑

元々、学生時代からmatlabをよく使っていたので、似たようなインターフェースのscilabは個人的に使い勝手がいいです。お金もかからないし。
ということで早速実践。クルマの計測データはCSV形式で保存していますが、scilabでもちゃんと読み込むことができます。読み込んでフーリエ変換してやると、下記のようなスペクトルに。
そもそもが0.1秒間隔で計測しているのでそれ以上の周波数成分は一旦除外することとし、カットオフ周波数10Hzでローパスフィルタをかけてみます。フィルタリング後の結果をプロットし直すと周波数成分はこんな感じに。
だいぶノイズが抑えられました。これを時間軸で見ると下記のような感じ。黒がフィルタリング前、青がフィルタリング後。
ちょっと見にくいので、時間軸を拡大して見てみます。
フィルタリングにより信号が滑らかになっていることが確認できます。
平滑化の弊害としてもとの信号に対して遅れが発生してしまいますが、スロットル開度や車速と加速度の動きと並べてみてみると下記のようにそこまでずれているわけでもなさそうです。
むしろ回転とスロットル信号の更新周期が遅いのが気になる…うまいこと補間できんかな?ちょっと考える余地はありそう。
まとめ
すごく久しぶりにscilab使ってみましたが、案外使えるものですね。コマンドとかすっかり忘れてるかと思ったけど。scilabに興味のある方は、下記のホームページを参照してもらえればダウンロードできます。
matlab使ってみたいけど、個人で買うのはちょっと…っていう人にもおススメです。使い方とか実例に関しては下記の書籍なんかが参考になるかと思います。
基本的なところから解説しているので、初心者でもどんなことが出来るのかはわかるかと思います。慣れてくればヘルプちょっと見る程度で使いこなせるようになると思いますが。
コメント