Powered By Blogger

2014年3月26日水曜日

加速度センサとロータリーエンコーダを組み合わせた速度計測法④:加速度センサによる問題解決へのアプローチ

今回は④:加速度センサによる問題解決へのアプローチ について書きます。

前回、移動平均をとることで測定される速度と実際の速度の間に遅延が生じることを紹介しました。今回は加速度センサを用いてこの遅延を解消する方法を紹介します。

前回の例を再び出しますが、初速0、加速度を10 m/s^2とすると、10 ms間に速度は0.1m/sになりますが、10 ms間の時間平均で計測される速度は0.05 m/sで、実際の速度の半分になります。この半分のズレを、加速度センサで計測した加速度で補います。今回用いたのはこのような式です。

(計測速度) = (エンコーダ計測速度 [時間平均あり] )
         + (加速度センサ計測加速度 [時間平均あり] )×(平均時間) / 2

先の例で実際に計算すると、10 msの時間平均でエンコーダで得た速度は0.05 m/s、加速度は10 m/s^2、平均時間は10 msなので (計測速度) = 0.05 + 10×0.01 / 2 = 0.1 m/sとなり、現在の速度が得られていることが分かります。

この式を適用するため、実際に加速度センサで加速度を計測しました。私のマウスでは前後2か所に加速度センサを搭載しています。


これが、加速度センサで得た、マウスの進行方向の出力です。1 msごとに計測(AD変換)し、2つのセンサの出力を平均しています。


かなり振動していますが、やはり移動平均をとると平滑化できます。下のグラフは計測された加速度を5、10、20、30、50 msで移動平均をとったものです。







例えば20、30、50 ms移動平均をとった場合に対して、上で上げた式を用いて加速度センサで遅延を補った速度を計算すると下のようになります。


平均時間に関係なく遅延が無くなること、平均時間が長くなるほど平滑化されることがわかります。
このようにして、ロータリエンコーダと加速度センサの計測データを
・時間平均により平滑化し、
・2つを組み合わせて遅延を解消する
ことで、速度を遅延なく平滑化して計測することができます。
もちろん、マイクロマウス競技ではきれいなデータをとることでなく、走行速度を向上させることが重要です。きれいなデータが取れるほど制御が安定させやすく速度を上げやすいとは思いますが。



また、移動平均をとる時間はどのくらいがよいかという疑問あるかと思います。あまり長くとると平滑化作用は大きくなるものの、走行開始後しばらくは速度が不定になります。加えて、保持する過去データが増え、メモリ消費が増えるので好ましくありません。
自分なりに平滑化できていると思う時間の中で最小のものを選ぶ、という感じでしょうか。上の実験結果をうけて私は30 ms移動平均をとることにしました。

マシンごとに事情は異なるでしょうし、私の今回の計測結果もフィードバック制御無しの結果なので、移動平均をとる時間の最適化は非常に難しい問題です。

以上で一連の速度計測法の紹介は終わりです。次回からは紹介した内容に関して想定される疑問点について述べようと思っています。

2014年3月24日月曜日

加速度センサとロータリーエンコーダを組み合わせた速度計測法③:移動平均により生じる問題

今回は③:移動平均により生じる問題 について書きます。

前回、移動平均をとることで測定される速度が平滑化されること、平均をとる時間が長いほど平滑化作用が大きいことを紹介しました。今回は移動平均処理を行うことで生じる問題について書きます。

下のグラフは前回紹介した20(赤線)、50(緑線) ms間の移動平均で得られた速度と、目標速度(青線)を1つのグラフにまとめたものです。平均する時間が長いほど、加速時の速度の立ち上がり、減速時の立下りが遅れていることがわかります。要するに波形が右側にシフトしていきます。これが時間平均における問題です。


下の図に示すように、加速中に速度を計測するとき、移動平均で測定した速度と実際の速度にはズレが生じます。例えば、初速0、加速度を10 m/s^2とすると、10 ms間に速度は0.1m/sになりますが、10 ms間の時間平均で計測される速度は0.05 m/sで、実際の速度の半分になります。これは、5 ms前の速度を計測していることになります。測定される速度と実際の速度の間に遅延が生じるということですね。10 ms間移動平均すると遅延は5 msですが、移動平均20 msに増やすと遅延は10 msになり、どんどん遅延が長くなっていきます。


このことから、ロータリエンコーダのみで速度を計測する際、移動平均をとる時間が長くなるほど、計測される速度が平滑化される一方、遅延が長くなることが分かります。
一方、加速度センサをロータリエンコーダと併用すると状況が変わってきます。次回は加速度センサを用いて時間平均により生じる遅延を解消する方法を紹介します。

2014年3月20日木曜日

加速度センサとロータリーエンコーダを組み合わせた速度計測法②:移動平均を用いた計測速度の平滑化

今回は②:移動平均を用いた計測速度の平滑化 について書きます。

前回、1 ms間にカウントされた波の数から速度を測定すると振動的になるということを紹介しました。今回は1 msごとに測定した速度データの単純移動平均をとり、振動を抑制する方法を紹介します。

前回紹介した1 msごとに計測した速度データに対し過去の5点(5 ms間)の移動平均をとりました。下にイメージ図を挙げます。





5 msの移動平均の結果をv-tグラフ(下図)の赤線で示します。
1 msごとに計測したデータも青線で示しました。この図から、移動平均で振動の振幅が小さくなっていることが分かります。
さらに10 ms、20 ms 、30 ms、50 msで移動平均をとったときのv-tグラフを示します。平均をとる時間が長くなるにつれて、振動の振幅が小さくなることがわかります。






ただし、平滑化されるからといって、平均をとる時間をいくらでも長くすればよいというわけでもありません。次回は平均をとる時間を長くしたときの問題を紹介します。

2014年3月17日月曜日

加速度センサとロータリーエンコーダを組み合わせた速度計測法①:ロータリエンコーダを用いた速度計測

タイトルの内容について前回目次を出しましたが、今回は①:ロータリエンコーダを用いた速度計測 について書きます。

これは、DCモーターで車輪を駆動し、ロータリーエンコーダでその速度を計測するマイクロマウスロボット(いわゆるDCマウス)で使われている方法です。
今回はこれついて簡単に説明し、実際に私のロボットでロータリーエンコーダを用いて計測される速度データを示します。

初めにロータリーエンコーダについての認識を共有しましょう。マイクロマウスに用いられるのは主にインクリメンタル型のエンコーダです。
これは、軸の回転に対し速度に応じた周波数の波を2つ出力します。また、この2つの波は回転方向に応じて位相を変えます。この2つの波の数から回転量と回転方向を測れるというわけです。




軸が1回転する間に出力される波の数を分解能といいます。実際にエンコーダでタイヤの回転を計測し、ロボットが前に進む時の速度を求めるとき、よく以下のような式が用いられます。

(速度) = (タイヤの円周)×(カウントされた波の数/分解能) / (波をカウントした時間)

波をカウントした時間の間に進んだ距離を、時間で割ることで速度が得られます。波をカウントした時間というのは任意に設定できますが、短すぎても長過ぎても問題になります。


実際に私のマウスで計測した例を示します。
私の変則4輪ハーフマウス(下の写真)では、左右の前輪の回転を磁気式インクリメンタルエンコーダ「AS5040」で計測しています。左右2つの計測結果を平均して進行方向の速度としています。


この例ではロボットを直進させた時の速度を計測しました。測定時間(波をカウントした時間)は1  ms、目標速度は下のv-tグラフに示すように加速度:10 m/s^2 、最高速:2 m/sです。1 msというのは自分のマウスの割り込み周期にあたり、全ての計測、制御の単位時間になっています。
今回は計測の実験であるため、計測された速度に対してフィードバック制御は行っていません。


実際の走行の様子を表した動画と、その時に計測された速度のv-tグラフを以下に示します。



v-tグラフから、測定された速度はかなり振動していることが分かります。私のロボットでは測定時間が1 msでは短いようです。


次回は測定時間を長くする(移動平均をとる)ことでこの振動を抑える方法を紹介します。

2014年3月16日日曜日

加速度センサとロータリーエンコーダを組み合わせた速度計測法(目次)

タイトルの通り、エンコーダだけでなく加速度センサを併用した速度の計測方法について書きたいと思っています。今回はそのアウトライン。

この計測方法自体は既に小島さんが公開しておられます。自分が今回用いたのも同じ方法です。
それでもわざわざ公開する理由は以下の3つ。

・実際に調べた結果、加速度センサを併用する方法は「こじまうす」の簡易エンコーダに対してだけでなく、一般に有用な方法と考えられる
Invensenseの加速度&ジャイロセンサのように、1軸アナログ出力ジャイロよりも小型かつ高精度の複合センサが市販され、今後マイクロマウス競技においても普及していくことが予想される
・加速度センサの使用例を測定データを示しながら具体的に紹介することで、その有用性を示し、普及を促したい

そういうことで、小島さんがブログで書かれているよりも詳細に紹介したいと考えています。
次回からはこのような内容について書きたいと考えています。

①:ロータリエンコーダを用いた速度計測
②:移動平均を用いた計測速度の平滑化
③:移動平均により生じる問題
④:加速度センサによる問題解決へのアプローチ
FAQ1:④で提案した手法に加速度センサは必要か?
FAQ2:加速度センサは複数必要か?
FAQ3:計測速度が振動的になるのはなぜか?

2014年3月4日火曜日

MPU6500動作テスト

前回今使っているセンサの最新版の在庫切れ解消を待っているなんて書いてましたが、今回
Invensense社の最新3軸加速度&ジャイロセンサ「MPU6500」の動作確認をしました。
下の写真のように、ブレッドボードを用いてSTMF4マイコンとSPI通信をしています。


通信により、センサで測定された加速度、角速度が得られることを確認できました。

これで部品のテストが全て終わり、今年のマウスの設計が完了しました。
制作は…気が向いたときにやります。今年は関西地区大会(例年7月開催)が9月開催なので急ぐ必要はなさそうですし。