LEGO Mindstormsを用いたオープンキャンパスプロジェクト2006 #2
城所・村山チームのページ
はじめに
本チームで作成したライントレースカーの構成は以下のようになっています。
後輪部
+後輪モータ
+デフギア
前輪部
+前輪モータ・前輪タイヤ
+光センサ
+角度センサ
命令部
+RCX
+ライン
+プログラム
実際に動作している様子
後輪部
後輪部の構成は以下のようになっています。
後輪モータ
今回後輪のモータは前に進むために使用しています。ですから回転方向は一定の向きにしか動かしません。 また、回転のトルクもコースアウトを察知しない限りは最大になるように動かします。
デフギア
モータのトルクはデファレンシャルギア(通称デフギア)に伝わります。
(デファレンシャルギアの動作原理はここでは割愛させていただきますので
Wikipediaを参照してください)
デフギアによってモータから伝わったトルクは左右のタイヤに適切に分配されスムーズなコーナリングが可能になります。
前輪部
前輪部の構成は以下のようになっています。
前輪モータ・前輪タイヤ
前輪モータはハンドルの役目を果たしています。
すなわち前輪モータが回転することによって前輪タイヤが回転し、車の進む方向を定めます。
光センサ
光センサはタイヤの前方に取り付けられています。
また、光センサは前輪タイヤと連動して動くので、常に前輪タイヤの正面にセンサがある状態になります。
ラインの上にセンサを常に乗せるようにプログラムすることによってラインをトレースします。
角度センサ
前輪タイヤに連動して角度センサ(パルスカウンター)が反応します。
角度センサを取り付けることによってタイヤの角度を知ることができます。
LEGOの角度センサは精度が低いので、ギア比を変更し十分な制度でタイヤの角度を測定できるようにします。
命令部
以下にRCXの写真を示します。
RCXはPCで作成・コンパイルしたプログラムを赤外線により受信し実行することができるブロックです。
写真の右側が赤外線送受信部です。また、RCXは単三乾電池6本を内蔵してすることができます。
それによりモータやセンサのブロック、内蔵されているマイコンを動かします。
写真の「ABC」の端子にモータを「123」の端子にセンサを取り付けることができます。
今回は「A」「C」の端子に後輪モータ、前輪モータを「1」「3」の端子に角度センサ、光センサを取り付けています。
中央の液晶部には内部の変数の値などを自由に表示させることができます。
今回は光センサと角度センサの取得した値を表示させることにしました。デバッグなどで活用できます。
また、電源ボタン(写真の赤いボタン)以外のボタンは自由な機能を割り当てることができます。
ライン
次にライントレースカーが走るコースについて説明します。
一般的なライントレースのコースは上の写真のような白地に黒いライン(または黒字に白いライン)となっています。
しかし、このようなコースでは光センサがラインの上にいるかいないかでしかコースの状況を判断できないので
どうしてもライントレースカーは蛇行した走りになってしまいます。
これの解決方法としてはまずセンサの数を増やすことが考えられますが
RCXにはセンサは合計3個までしか取り付けることができません。
そこで、黒いラインではなく、次のようなグレースケールのグラデーションを用いたコースを使用します。
上のようなコースを用いることによって光センサ1つで
センサがラインの中央にいるか、右にいるか、左にいるかなどを細かく知ることができます。
このコースを使えばライントレースカーは蛇行せずにスムーズに走ることができるはずです。
プログラム
実際に走ることのできるプログラムのアルゴリズムを以下に示します。
試行錯誤の段階では角度センサを取り入れてPID制御(Wikipedia)を用いてプログラミングを行ったのですが
シンプルな上図のようなプログラムのほうが高性能だったのでこちらを採用しました。
実際の動作の様子
実際の動作の様子のムービーとなっております。以下から覧ください
実際の動作の様子(電池残量-中)
サイズ44.5MByte
実際の動作の様子(電池残量-大)
サイズ35.4MByte
WindowsMediaPlayer(MotionJPEG形式が再生できるもの)が必要です。