MakeX2019のミッションクリアのカギは、RGBラインフォロワーセンサー活用にあり!

前回、RGBラインフォロワーセンサーの活用方法の基本編では、RGBラインフォロワーセンサーが白線を自動で認識して走行していき、時間で止まるなどの制御をする方法をご紹介しました。

ただ、MakeX2019の競技用アリーナ(マップ)をよく見ると、ミッションのポイントごとに、白線が分岐しているのが分かります。

MakeX2019_Starter_Autmatic area イメージ

 RGBラインフォロワーセンサーは、mBotに標準で搭載されているラインフォロワーセンサーよりも、2つ多いライン検出センサーを搭載しているので、ラインの分岐を見分けることが可能になります。

4つのRGBセンサーを駆使してラインの分岐を見分ける

RGBラインフォロワーセンサー受光部説明イラスト

RGBラインフォロワーセンサー受光部イラスト


RGBラインフォロワーセンサーは、RGB1~4、それぞれで、ホワイトラインか?マップの背景色かを検出することが可能です。どのように検出し、どうやってプログラムにセンサーの値を組み込んでいくかを、このページで説明して行きます。

STEP1:背景色とホワイトラインを検出できるように学習させる

RGBラインフォロワーセンサーは、まずは、どの色が床面(マップ面)の背景色で、どの色がライン面(ホワイトライン)なのかを、学習させてあげる必要があります。学習のさせ方の順序は、以下の通りです。

1.補助ランプの色の調整

切り替えキーを長押しして補助ランプの「赤・青・緑」の中から、好きな色を選択します。このLEDの色は、自分の好みでいいです。

2.背景色の学習

RGBセンサーを所定の位置に取り付け、4つのRGBランプを背景に向け、キーをシングルクリックして4つのLEDをゆっくり点滅させます。学習は2〜3秒で終了し、その間LEDは点滅を停止します。

3.トラック(走行ライン)の色を学習する

RGBセンサーを所定の位置に取り付け、トラックに対して4つのRGBライトを正しく点灯させ、キーをダブルクリックして4つのLEDをゆっくり点滅させます。学習は2〜3秒で終了し、その間LEDは点滅を停止します。

尚、この2と3の設定の順番は関係ありません。
より正確に言うと、
シングルクリックしたときに学習させた色は「1」という数値を送信し、
ダブルクリックしたときに学習させた色は「0」という数値を送信されるように、
設定をすると理解しておきましょう。

4.テストと確認

モジュールを所定の位置に保ち、4つのセンサーの位置を調整して、背景と線の色を正しく検出できることを確認します。背景を検出すると、対応するセンサーのLEDが点灯します。そしてラインを検出するとき、対応するLEDは消えます。

 

STEP2:mBlock5でセンサーの値を取得できるブロックを確認する

mBlock5で、RGBラインフォロワーセンサーの値を取得できるブロックは3種類あります。

1:RGBラインフォロワーセンサーの4つ数値の組み合わせを条件とするブロック

RGBラインフォロワー_プローブの値4桁検出1

このブロックは、RGB1~4で検出したホワイトラインか、背景色かを0か1の数字で表し、4つRGBセンサーの検出している状態を条件として設定するブロックです。
※ブロックの日本語としては、「設定する」よりも「プローブの状態が」の方が自然な気がしますが(笑)

RGBラインフォロワーセンサーのRGB1~4の位置と、上記のブロックの4つの数値の関係を見てみましょう。

RGBラインフォロワーセンサーのRGB4~1とブロックの対応説明画像

↑の画像を見て頂くと分かるように、ブロックの4桁の数値は、左からRGB4・RGB3・RGB2・RGB1の状態を表しています。

この時、センサーが検出している床面の色(白線か背景か)と、数値の関係は、以下のようにまとめることが出来ます。
 
1=LED点灯=学習時シングルクリックの時の色を検出。今回の場合「背景色」
0=LED消灯=学習時ダブルクリックの時の色を検出。今回の場合「白線」
 
上記の画像の場合、白線を検出しているRGB3・RGB2のセンサーのLEDは消灯していて、この場合、RGB3・RGB2は共に「0」の数値をmBlock5に送ります。
 また、RGB1・RGB4は背景色を検出しているので、LEDは点灯しており、「1」という数値を、mBlock5に送信します。
 
従って、mBlock5でプログラム組む時は、制御ブロックパレットにある条件ブロックに組み入れて、「もし、RGBラインフォロワーセンサーの値が「1001」のならば、50%のパワーで前進する」というようなプログラムを組むことが可能になります。
 

2:バックグラウンド(背景色)を検出したかどうかの条件設定ブロック

RGBラインフォロワー_背景の取得_日本語
 
こちらのブロックは、RGB1~4が、バックグラウンドの色を検出したかどうかを条件設定するブロックです。
 

3:RGB1~4の検出数値を取得するブロックです。

RGBラインフォロワー_プローブの戻り値_日本語
 
こちらの数値が、RGB1~4の検出数値(0か1)を取得するブロックです。センサー数値を意味するブロックなので、演算ブロックなどに組み入れて使う事がかのうです。

STEP3:スクリプトに組み入れて、mBotを制御する

あとは、MakeXのミッションに合わて、思った通りの振る舞いをmBotがするようにプログラミングするだけです。例えば、以下のようなスクリプトを組めば、動画のような挙動をします。

MakeX用RGBラインフォロワーセンサーのサンプルスクリプト_日本語

 

通常のラインに沿った走行は、基本編で解説したサンプルプログラムを利用し、RGB1~4全てでホワイトラインを検出し「0000」の数値を取得した場合は、走行を止めるというプログラムです。
因みに、BasePowerを「50」に設定すると、一度止まって、また動き出してしまうプログラムなので、プログラムの処理としては不完全であることはご容赦下さい。

参考記事:MakeX攻略ーmBotと障害物の距離と同じ長さを走行させる

■このページの動作環境
※Makeblock社は随時ソフトウェアのアップデートが行われています。ご自身のPCと本ページのブロック表記が違う場合もあります。本ページは、以下の環境下で動作チェックをしました。
ハードウェア:mBot_v1.1
ソフトウェア:WEB版(ブラウザ版)mBlock5_v5.1
利用PCのOS:Windows10   
ソースコード確認日:2019年8月8日