2008年7月31日木曜日

LQGによる倒立振り子の制御実験

久しぶりにロボット的なものを作りたくなったので
どうせなら制御理論の検証ができるものを…
というわけで、Segway的な倒立振り子を作ってみた。

全体図



機械部分は入手性がよくて組み立て簡単な田宮模型の部品で固めました。
本体はユニバーサルプレートで、たまたま手に入った透明プラスチックバージョンを使ってます。
車輪はナロータイヤセット、ギアはハイパワーギアボックスHEだったと思います。
もうちょっとギア比が低いハイスピードギアボックスの方がベターかもしれません。

電池ボックスは熱に強い金属のやつを買ってきました。
一度熱で端子付近のプラスチックが溶けたことがあるので…

回路を実装する基板はSunhayatoのICB-88

電池ボックスも基板もいい感じにユニバーサルプレートにくっつきます。

回路


回路も今後の補修のために部品の入手性がいいやつで…

右の緑色の基板はトランジスタ技術の付録についてたR8C/Tinyの基板です。
これはSunhayatoからも互換性のあるものが出てますね。

真ん中の青色はSunhayatoの加速度センサーモジュールMM-2860

左の青い基板は同じくSunhayatoのモータードライバモジュールMM-531です。
電流容量0.7Aは心もとないので、2回路をパラレルにして使っています。
同じチップなら特性もわりとそろっているので問題ないと思いますが
あんまり誉められたもんじゃないですね。

左下のディスクリート部品的な部分で2.4Vの電源から3.3Vの電源を作ってます。
モーターの電源は電池直結です。

右端のコネクターはE8aエミュレータを接続するためのもので
上の3線は角速度ジャイロ(KRG-3)
下の2線はデバッグ用のブザー
左の4線は電池とモーターです。

側面




機械部分にあんまりこりたくないのでユニバーサルプレートと
ねじとスペーサーでしのいでいます。
基板を固定するビスがかなり長いのは転倒時に基板が地面に当たるのを防ぐためです。

モーター



モーターについてるセラミックコンデンサはブラシで発生するノイズを
吸収するためのものです。
マイコンと一緒にDCモーターを使う場合には必須らしいです。
たしかに昔PICマイコンを使ってたときにはこれで誤作動しなくなりましたが
最近のマイコンでも必要なのだろうか…

ちなみにエンコーダはついてないので
車輪の回転角は制御していません。角速度のみの制御です。

制御

video

最初は適当にPID的な制御でも立つかなーと思っていたのですが
意外とチューニングに苦戦したので
おとなしくモデルを構築してLQGを使ってみました。
制御器が不安定システムになるようなので
まぁなるべく極が左の方に来るように調節しています。
制御器は3次のシステムで制御周期は10msです。
R8Cでこの制御周期だと5次くらいまでなら何とかなるかな〜という感じでしょうか。

やっぱりモーター周りのモデルが怪しいのですが、
ロバスト制御の代名詞であるH∞制御とかだとこの手の怪しさは扱いにくいですね。
そのあたりを扱える理論が必要なのだろうか…