黒ラインをトレースするプログラム ~レゴマインドストームEV3~
Contents
トレーニングロボットでライントレース
教育用レゴマインドストームEV3のトレーニングロボットを使って黒ラインをトレースするプログラムを作成する。
黒ラインの判別にはカラーセンサーを利用する。
カラーセンサーは主に
の機能があり今回は2つ目の反射光の強さの判別を利用して黒ライン上か(そうで無いか)を判別してトレーニングロボットの車輪のLモーターを制御しながら黒ライン上をトレースさせる。
黒は光を吸収するので反射光が弱くなりカラーセンサーで測定をすると10~20程度の数値になる。
一方、白紙上は60~70の数値になるのでその差でラインを判別する。
使用するブロック
使用するブロックは以下の3種類。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
無限に繰り返す
|
スイッチブロック
条件を判定して処理を分岐をするブロック
カラーセンサーで反射光の強さを判定して50未満(黒ライン上)であれば上の分岐、そうでなければ下の分岐を処理する
|
Lモーター
トレーニングロボットの車輪のLモーターを制御して黒ライン上に乗るようにする。
ポートB:左車輪
ポートC:右車輪
使用するLモーターは以下の4パターン
左車輪を停止する
| |
左車輪を回転させる
| |
右車輪を停止する
| |
右車輪を回転させる
|
プログラム全体
カラーセンサーの反射光の強さの判定で黒ライン上か、そうで無いかを判別してライン上であれば右に旋回、ラインから外れると左旋回を連続的に繰り返す事により蛇行をしながら黒ラインをトレースするプログラムとする。
トレースラインとしては非常に無駄が多いがまずはこのロジックで組んで見ることにした。
ライントレース図
プログラム
1 | プログラム開始 |
2 | 3~7を繰り返す(無限) |
3 | カラーセンサーで反射光の強さを判定して50未満(黒ライン上)であれば4,5の処理、そうでなければ6、7を処理する |
4 | 右車輪を停止する |
5 | 左車輪を回転させる 4,5で右に旋回する |
6 | 左車輪を停止する |
7 | 右車輪を回転させる 6,7で左に旋回する 2へ戻る |
手を加えたプログラム
先程のプログラムだと黒ラインの上を蛇行して進むので動きに無駄が多い。※下記の動画参照
トレースするラインが左回りの円と決まっている場合は下記の様なプログラムにすればスムーズに黒ラインをトレースする。
尚、右回りの円周の場合はこのプログラムは通用しない。
コースが分からない時は最初のプログラムの方が汎用的に使える。
- 先程のプログラムとは赤枠の部分だけが異なる
- 黒ライン上の時は直線運動
- ラインから外れた時は左旋回(必ず左側にラインが存在する前提)
イメージ図
更に手を加えたプログラム
時計・反時計回り両方に対応しながらもう少しスムーズにライントレースをする様にプログラムを改良した。
改良したライントレースの記事はこちら。
プログラミング動画
プログラミングと実際のトレーニングロボットの動きを動画にしている。
特に最初のプログラムと後のプログラムの動きの違いに注目して欲しい。
文字と画像だけでは分からない部分は動画を参照すれば分かりやすい。
データロギング
上記の黒ライン上をトレースするプログラムを使って、トレーニングロボットにジャイロセンサーを取り付けてLモーターやジャイロセンサーの値をロギングしてグラフ表示を行った。
データロギング&グラフ表示は実際のモーターやトレーニングロボットの姿勢を数値化して分かりやすく表示するメリットがある。
最近のコメント