fc2ブログ

MPU-6050を使った慣性航法 (4)

バイアスを補正した加速度から、機体の位置を計算するプログラムを作ります。ローパスフィルタをかけるすでに見たように、MPU-6050から取得した生の加速度や角速度のデータにはノイズらしきものが乗っているので、ローパスフィルタをかけることにします。ここでは簡単な方法として、ローパスフィルタには10点の移動平均を使いました。要するに、加速度データや角速度データとして、過去10個ぶんのデータの平均値を使う、というこ...

MPU-6050を使った慣性航法 (3)

次に、加速度センサのバイアスを計算します。加速度の補正式今回の前提として、加速度を次の式で補正することにします。\(\begin{array}{l}{{a'}_x} = {A_x}({a_x} - {B_x})\\{{a'}_y} = {A_y}({a_y} - {B_y})\\{{a'}_z} = {A_z}({a_z} - {B_z})\end{array}\)バイアスの計算式この式の\({A_x},{A_y},{A_z}\)と\({B_x},{B_y},{B_z}\)を求める方法として、以下の手順を考えました。X軸を真上に向けた状態で加速度センサの値を測定し...

MPU-6050を使った慣性航法 (2)

生のデータを見る限り、角速度センサの処理のほうが簡単そうです。そこで、角速度センサのバイアス補正と、角度の計算からはじめることにします。座標系ここで計算に使う座標系を定義しておきます。位置の時間微分が速度、速度の時間微分が加速度なので、加速度センサの値を2回積分すれば位置が求まります。同様に、角度の時間微分が角速度なので、角速度を積分すれば角度が求まります。原理は単純ですが、ここで考えなければいけ...

MPU-6050を使った慣性航法 (1)

Arduino Nano互換機とMPU-6050を使って、ロボットの位置や姿勢を計算する、推測航法を試してみます。といっても、卓上を5分程度動くロボットの制御が目的であり、太平洋を横断したり、宇宙ロケットを作りたいわけではないので、地球は丸いとか、自転や公転とか、カルマンフィルタとか、そういう要素を考慮しない、シンプルな推測航法です。計算は、Arduino Nano互換機で行なうことにします。MPU-6050の制御には、Jeff Rowberg氏の...