LEGO Mindstormsを用いたオープンキャンパスプロジェクト2006 #1
飯野・木村チームのページ
はじめに
7月15日に行われたオープンキャンパスで紹介したライントレースカーをここで明らかにする。
ライントレースカーの構造
Large version
このライントレースカーの構造を説明する。
光センサが前方に一つ、両側面にLEGOBOXに入っていた中で一番大きなタイヤが2つとそれを個々に動作させるモータが2つ、それからタイヤ2つだけでは車体は安定しないので、後方に支えがついている。
ここでタイヤを4つ、または3つにしてしまうとデフギアでない限り、カーブが曲がれない。
急なカーブともなると後輪のタイヤが邪魔をしてそれでも曲がれなくなってしまう。そこで、後輪のタイヤの変わりに支えを取り付けた。
Small version
このライントレースカーの構造を説明する。
光センサが前方に一つ、両側面に少し大きめのタイヤが2つとそれを個々に動作させるモータが2つ、それからタイヤ2つだけでは車体は安定しないので、後方に支えがついている。
こちらはタイヤが大きいマシンと比べて、トルクと慣性力の関係でタイヤへの動力をよりダイレクトに伝え、制御入力に対して俊敏に動作する。従って、カーブに対して良い動きが期待できる。しかし、同じ制御入力の場合、タイヤが小さい分速度は遅くなる。
プログラム
P制御のフローチャート
このP制御のフローチャートの説明をする。
まず、光センサにより現在マシンがいる位置情報としてラインの色を識別する。ラインの色の情報は数値として取り込む。
(目標とするラインの位置情報をあらかじめ取得しておいて、)目標ラインと現在の位置との差を計算させる。その目標ラインとの差がある範囲内であるかどうかで処理を分岐させた。
どちらもP制御であるが、タイヤが前進後退両方できることを利用して、YESの方は前進で対応、NOの方は後退で対応してトレースさせた。この間反対側のタイヤはある一定速度で前進している。
デューティ比のフローチャート
このデューティ比を用いたフローチャートの説明をする。
まず、光センサにより現在マシンがいる位置情報としてラインの色を識別する。ラインの色の情報は数値として取り込む。
(目標とするラインの位置情報をあらかじめ取得しておいて、)目標ラインと現在の位置との差を計算させる。その目標ラインとの差を百分率で表し、High状態とLow状態とに処理を分けた。
先ほどのP制御に比べ、プログラムは簡単になっているが、小回りは効く。
PD制御,PI制御を実行したところ、ラインに対して上手く追従できなく、よりふら付きが大きくなるかコースアウトするかだった。 そこでP制御だけでトレースするようにした。その結果、トレースはするものの、滑らかには走行できなかった。 そこで、滑らかさを求めるため、デューティ比を採用した。high状態が前進、low状態が停止として走行させた。 その結果、デューティ比による微振動はあるものの、ある程度滑らかに走行できた。しかし、速度は出せなかった。
動作説明
次にライントレースカーの動作を説明する。
コースはグラデーションとなっていて、白から黒に変わるあたりを目標軌道としている。
目標軌道に対して、上記の2つの状態2つの方法で行った。
large versionとは、タイヤが大きいマシンで、small versionとはタイヤが小さいマシンである。
タイヤが大きい方が速いという単純な考えであったが、その反面マシンへの反動が小さいタイヤより大きく、その反動を打ち消すことができなかった。
それに対して、large versionの場合、マシンの後方に重りとして電池を牽引させると滑らかさを増し走行速度を上げることができ、早く走ることができた。
牽引なしだと、マシンのふら付きが大きくなってしまい、コースアウトしやすくなる。また牽引でなく固定だと後方のタイヤによる横滑りに対する摩擦で曲がれなくなってしまう。
この牽引によって物理的に車体の揺さぶりを抑えることができた。それらの結果と動画を次節に示す。
余談であるが、コースがグラデーションでなくて、黒白の2つの情報のみのコースでも走行可能である。
small versionでのP_controlプログラムで黒白の2値のコースを走らせた結果と動画もまた次節に示す。
動作結果
このコースを走った結果を以下に示す。
構造 | プログラム | 1周あたりの走行時間 |
---|---|---|
large version(牽引) | P_control | 13.9sec |
large version | P_control | 21.1sec |
large version(牽引) | duty | 28.4sec |
small version | P_control | 13.8sec |
small version | duty | 32.8sec |
small version(黒白) | P_control | 20.0sec |