RobovieMaker2(7)カルマンフィルタの導入2


th_ 2014-08-03

カルマンフィルタ導入のまえにいくつか準備が必要です。
まず、アマゾンでも廉価で扱っている「MPU-6050 使用 3軸ジャイロスコープ・3軸加速度センサー モジュール」を、Arduinoに接続し、データを読み込んでみます。




接続方法はこちらを参考にします。

センサ - Arduino
VCC - 5V
GND - GND
SCL - ANALOG 5
SDA - ANALOG 4
INT - DIGITAL 2

となります。




ここで、I2Cについて学びます。
剣菱Pさんの「零からの零からの電子工作 第64回:I2C」が抜群にわかりやすいです。神。
I2Cは2本の電線を使った通信方式で、○番アドレスのデータをくれと呼び出すと、○番アドレスのデータはこういう返答するようなイメージです。データは基本的に1バイトのようで、それを必要な回数分行うようです。




ArduinoにI2Cライブラリを組み込みます。
GitHubというサイトからDLできます。DLできるといってもちょっとコツが必要です。
https://github.com/jrowberg/i2cdevlib
のページを開くことで、右下のDLボタンからファイル全体を入手できます。

DLしたファイルから、「i2cdevlib / Arduino / I2Cdev」と、「 i2cdevlib / Arduino / MPU6050」の2つのフォルダを、Arduinoのライブラリに加えます。




さっそくサンプルを試してみます。さきほどDLしたファイルの中の、
「 i2cdevlib / Arduino / MPU6050 / Examples / MPU6050_raw / MPU6050_raw.ino」
をArduinoで実行すると、 MPU6050からI2Cで取得したデータをArduinoのシリアルモニタで確認できます。
自分の頭の整理のために、サンプルスケッチをさらに簡略化してみます↓
(センサの初期化を省略しているので、うまく動かない場合があります。その時は手を加える前のスケッチを実行してください。)



【少し簡略化したArduinoサンプルスケッチ】

//MPU6050のデータをI2Cで取得し、シリアルモニタに書き出す。
//ボーレートは38400

#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
#include <math.h>

MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;

void setup() {
Wire.begin();
Serial.begin(38400);
accelgyro.initialize();
}

void loop() {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
Serial.print("a/g:\t");
Serial.print(ax);
Serial.print("\t");
Serial.print(ay);
Serial.print("\t");
Serial.print(az);
Serial.print("\t");
Serial.print(gx);
Serial.print("\t");
Serial.print(gy);
Serial.print("\t");
Serial.println(gz);
}




ライブラリががんばってくれるので、サンプルはとてもシンプルになります。




 2014-08-03a

上のスケッチを実行したときのシリアルモニタです。
左側の3つが加速度センサのx,y,z軸、右の3つがジャイロセンサのx,y,z軸の未加工の値です。
センサは静止状態ですが、数字が細かく振れているのがわかります。

このスケッチの場合、基盤のパーツをオモテ、ピン側を手前においたとき、
Xが前後、Yが左右、Zが上下に振ったとき値になります。
飛行機に例えると、
・axは上昇の向きでプラス、下降でマイナス。
・ayは右ロールでプラス、左ロールでマイナス。
・azはそのままならプラス最大、ひっくり返すとマイナス最大。
・gxはロールで右回転でプラス、左回転でマイナス。
・gyはピッチ前回転でプラス、後ろ回転でマイナス。
・gzはヨー軸左回転でプラス、右回転でマイナス。
という風になっているようです。

これでなんとか数値を取得することはできました!




ここまでやってきてアレですが、なんとかしたいのは温度ドリフトであって、カルマン補正はどちらかといえばセンサの向き、ブレを補正する式のようです・・・。
スポンサーサイト

テーマ : 自然科学
ジャンル : 学問・文化・芸術

コメントの投稿

非公開コメント

プロフィール

二名川(ニナガワ)

Author:二名川(ニナガワ)
ホビーロボットをレトロゲームが発展したものと捉えて楽しく遊び倒します。
子供が夢を見ている時間帯に稼働します。

宣伝:電子出版しました。
「コンソロイド ガイドブック」
46107_CONSOLOID_GUID_FACE_200.jpg





■作成中の機体
汎用ヒト型決戦遊具 ~RX計画~
RX-7.5 ゼロタンク
RRf-0.6 ゼニィ
RXM-7.9 ゼムネス
RX-7.5R 量産型ゼロタンク
RX-7.5Fp ファミタンク仮設1号
RX-7.7 ゼロキャノン
RX-7.8 ゼログレイ
SMS-0.1 ゼロライナー
以下続く

ブログ内検索
最近の記事
最近のコメント
カテゴリ
月別アーカイブ
リンク