Arduino(Genuino)101から搭載された内蔵ジャイロを試してみました。今までは別途シールド等で外付けする必要があったのですが、加速度センサー同様、内蔵されているので便利です。
CurieIMUのライブラリが準備されているので使い方は簡単です。
まずは筐体に対する回転軸方向です▼
Arduinoサイトのリファレンスを参考にジャイロスコープの角速度値を取得してみました。
#include "CurieIMU.h" CurieIMU.begin(); CurieIMU.setGyroRange(250);
▲まずIMUを開始して、ジャイロセンサーのレンジは 250°/s に設定してます。レンジは2000/1000/500/250/125 °/s から設定できるようです。
▼またサンプリング周波数は
CurieIMU.setGyroRate();
で設定できて、デフォルトは100Hzです。25/50/100/200/400/800/1600/3200Hzから設定できます。
CurieIMU.readGyro(gxRaw, gyRaw, gzRaw); gx = (gxRaw * 250.0) / 32768.0; gy = (gyRaw * 250.0) / 32768.0; gz = (gzRaw * 250.0) / 32768.0;
▲センサーから生値を取得して角速度(°/s)へ変換してます。
取得した角速度をプロットしてみました▼
Genuino101を適当にx軸回りに振ってます。3軸あると見難いのでx軸のみプロットしてます。普通にセンサー値拾ってるだけのプロットとなります。
水平にして静止状態のままx軸回りのみプロットしてみました▼
少しプラス目に振れてます。
次にキャリブレーションをしてみました。キャリブレーションは
CurieIMU.autoCalibrateGyroOffset();
の関数で簡単に補正できます。
キャリブレーション有無のプロットです▼
振れ幅はあまり変化ありませんが、ある程度センター(0)に補正されています。
ドリフトも確認してみました▼
取得した角速度の積分値から角度算出して、特に何もドリフト補正はしてません。1~2分程度で1°程度のドリフトが発生しました。やはり何も補正無しでは結構ドリフトが発生するようです。
ただArduinoサイトでMadgwickのフィルタリングアルゴリズムがチュートリアル形式で説明されています。まだ試してませんが、ドリフト補正も簡単に解決するかもしれません。
▼その他のレポート記事はこちらから▼
・Genuino101の加速度センサーを試してみる
・Genuino101の内蔵6軸センサーをMadgwickライブラリから試してみました
・Genuino101、6軸センサーからの角度算出をProcessingで可視化してみる
コメント