x-io社のx-IMUを使ってみた話

x-io社のx-IMUという慣性計測ユニットが気になったので使ってみた話。

買ったのはこれ

MEMSのジャイロセンサは角速度を計測しているが、バイアスが酷く、姿勢を計測しようと積分するとどんどん誤差が蓄積します。

解決方法としてはカルマンフィルタなど、他のセンサの値と角速度センサの値を組み合わせる技術が使われます。。その中でも加速度と磁気センサの値が重力加速度と地磁気だけの状態だと簡単に実装できて強力なデジタルフィルタが公開されています。orientation filter とかMadgwick’s filterとか言われています。これが今回購入したx-IMUには実装されています。普通に買えるものだったりオープンソースのアルゴリズムなのに、日本ではあまり話題になってないので、メモ代わりに書いておきます。重力加速度以外の加速度や地磁気以外の磁気があるところではフィルタの性能が落ちるアルゴリズムになっているので要注意です。

購入

到着するとこんな感じ。

2014-03-01 14.37.071

電子部品を包む袋に入ってる

2014-03-01 14.38.221

 

レジストが見たこと無い面白い色です。あんまりキレイには思えないです。

レジストの厚みはかなり厚いです。基板の厚みもすごいことになってます。GFRP板のmicro SDカードもどき入っていました。Bluetoothモジュールは技適通ってない(たぶん)ので使いません。設定でdisableにしないといけません。

2014-03-01 14.41.551 2014-03-01 14.42.471 2014-03-01 14.43.041

 

性能

静置試験の結果を置いておきます。自分の環境での性能なので、環境によって全然異なってくると思います。1時間静置しておきました。上のグラフの上からジャイロ、加速度、地磁気の生データです。

下のグラフは姿勢角のグラフです。上のsubplotはジャイロの角速度の値から姿勢をクォータニオン表示で積分していって、オイラー角になおしているものです。真ん中はorientation filterで出力されたもの。下は真ん中のグラフを上下に拡大したものです。フィルタあると1時間で1度程度ずれるかどうかぐらいです。補正が効いているので、たぶん何時間でもこの程度のドリフトで収まるはずです。地磁気でしか補正されない1軸(ここではz軸)だけ地磁気のノイズの影響を強く受けているのもわかります。x軸y軸は加速度センサでも補正されているので、かなり安定しています。

生データからでは10度以上出るドリフトがキレイに消えているのがわかります。

X-IMU_MARG_longtime_sensor

X-IMU_MARG_longtime_attitude

ちなみにですが、データはバイナリで出てくるので、Windows用のGUIソフトがないと読めるフォーマットに変換出来ません。オープンソースなので、自分でなんとかすればいいんでしょうか・・・

GUIソフトでcsv形式にしてpythonのmatplotlibでグラフ化しています。

電子工作的に・・・

mbedでこのフィルタがすでに実装されていました。

https://mbed.org/cookbook/IMU

ただし、ADXL345 and ITG-3200のセンサの組み合わせ用に作られいるので、他のセンサでは書きなおさないとダメですね。

http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/

ここに元となる論文、C言語の実装、Matlabでの実装、C#でのWindows上でのソフトが公開されています。

 

コメントを残す

メールアドレスが公開されることはありません。