LEGO Mindstormsを用いたオープンキャンパスプロジェクト2012 #3
ライントレースカー(小池)
目次
目的
制御の概要
プログラムの概要
デモンストレーション
目的
バイラテラル(相互に反応を一致させる)の技術は,医療の現場での高精細なものから,工事現場などで用いられる大出力のものまで様々なものがありその用途は多種多様です. 今回は,このバイラテラル技術の一端に触れつつ,制御を学ぶことを目的としてロボットアームの双方向制御を行いました.
制御の概要
本プロジェクトでは,ロボットアームの双方向制御を行いました.
このプロジェクトでは,LEGO Mindstormsに付属している多様なセンサ類は一切使用せず,モータとモータに内蔵されたエンコーダのみを用いて制御を行っています.
制御部分は大きく二つに分けることができるので一つずつ順に紹介していきます.
一つ目の制御の概要を次の図を用いて説明します.
制御1では,上の図に示すようにアームAを角度θだけ動かしたとすると,アームBがそれに追従する形で同じく角度θだけ動くような位置制御を行っています.
次に,二つ目の制御の概要を次の図を用いて説明します.
制御2では,上の図のようにアームBが,角度θ1で物体と接触したとき,アームAを角度θ1からさらに角度θ2だけ動かそうとするとアームAはアームBと同じ角度θ1でとどまろうとします.
そのためアームAを操作している手にはあたかも物体を触っているもしくは掴んでいるかのような感覚が伝わります.
このように,ロボットの動作が一般的なラジコンのようにリモコンから一方向というのではなく,ロボット側とリモコン側で双方向のやりとりをすることがバイラテラル制御の基礎となります.
プログラムの概要
本プロジェクトでは,MathWorks社が開発しているソフトウェアMATLAB/Simulinkを使用してプログラミングを行いました.
また,Simulink上で作製したブロック線図から,プログラムの大きな流れは次の図のようになります.
① 操作者が,アームAを動かすことでアームAの回転軸に接続されたモータAが回転する.
② モータAの回転角度をモータAに内蔵されたエンコーダAで読み取る.
③ エンコーダAで読み取った角度をアームBの角度目標値として使用する.
④ アームBの回転軸に接続されたモータBの回転角度をモータBに内蔵されたエンコーダBで読み取る.
⑤ ②,④において各エンコーダで読みよったモータA,Bの回転角度について偏差をとる.
⑥ ⑤で得たモータA,Bの回転角度の偏差をモータBの入力として使用し,位置(角度)制御系のフィードバックループを構成することでモータBを制御する.
⑦ アームBが何かに接触するなどして,⑤で得られる各モータの回転角度の偏差が一定値を超えた場合に限りモータAに対して,
アームAの操作方向とは逆方向にモータAが駆動するような入力をフィードバックし手元のアームAがあたかも実際に接触しているかのような力感を操作者に伝える.
デモンストレーション
デモンストレーション動画(WMV)を再生する.