MakeXのタスク攻略には欠かせないRGBラインフォロワーセンサー
MakeXは、黒い背景に白い線が描かれたマップ上で、mBotを走行させながら、各所に設定された課題をクリアすることによって得点を競う競技です。
MakeX2019_Starter_Autmatic area イメージ ※出典:2019MakeX-Challenge-Technical guide
白い線の上に沿って走らせるという事は、通常のラインフォロワーセンサーでも可能ですよね。ただ、mBotをスムースに走行させるためのプログラムをチューニングすることが非常に大変です。
その為、MakeXに出場する人の為に、ライン追従用に特別に設計された「RGBラインフォロワーセンサー」というものがあります。MakeXに出場する際に、利用することがMUST要件では無いのですが、限られた競技タイムの中で、よりスムースに課題をクリアしていくためには、是非、使いこなしたいセンサーです。
mBotの基本セットに同梱されているラインフォロワーセンサーは、白い線と、黒い線を区別するように、2つの赤外線送信LEDと受信器がついていますが、RGBラインフォロワーセンサ-は、4つのRGB補助ランプと4つの受光部を備えています。
このRGBラインフォロワーは、暗い背景時の明るい色の線、または、明るい色の背景の暗い色の線を識別しながら、ラインを追従、走行することが出来ます。
Makeblock社のモジュール説明のページには、以下の記載があります。
多分、簡単に、咀嚼して言うと、
「RGB(レッド・グリーン・ブルー、色の三原色)で構成されるどんな色でも、背景とラインの色(暗い色・明るい色)が区別できれば、ライン追従が可能になり、背景とラインの境界線がクリアであればあるほど、ライン追従の精度が高くなる」
という事だと思います。
まあ、この辺はふーんという程度で良いと思いまが、通常のラインフォロワーと大きな違いとして、使う前に、走らせる床(背景)とラインの色を認識(学習)させる設定作業が必要という点を最初に理解しておく必要があります。
RGBラインフォロワーの原理・特徴
原理
下の図に示すように、センサーに続くRGBラインには、4対のRGBトランスミッターと感光性レシーバーがあります。
例えば、白いラインを追従走行している際に、白色とは異なる背景(例えばMakeXであれば黒い背景にはみ出したりして)を通過すると、受光レシーバは受信した光情報を電気信号に変換し、センサーモジュールに内蔵されたアンプを通過した後に、特定の値を、アナログポートに出力します。
アナログポートから出力された4つの受光レシーバーのそれぞれ異なるアナログ値を使って、4つの受光レシーバーの位置の偏差を最終的に計算するアルゴリズムが(おそらくモジュール内のICに)内蔵されています。
mBlock5では、その位置のオフセットデータを直接使用するブロックがあり、そのデータをもとに、左右2つのモーターの回転速度を制御するようなプログラムを組むことが出来るようです。
あー、ちょっと、しんどいと思いますが、↓には、結局、プログラムではどのように使えばよいか書きますので、ここも、フーンという感じで良いと思います。
理解しておきたい特徴
・走行フィールドの背景とラインの色を識別・学習させる設定作業が必要
・設定した学習データはモジュールのeepromに保存されるので、再学習させない限り、ずっと同じ背景⇔ライン識別となる。もし背景やラインの色が違う場所で使用する場合は、再学習設定が必要になる
・モジュール部にある切り替えキーを2秒間押すと、発行するLED色が赤、緑、青に切り替えられ
・ラインフォローの感度は調整可能
原理はさておき、特徴の部分は、必ず把握して、↓の設定に進みましょう。
RGBラインフォロワーセンサーの設定方法
RGBラインフォロワーセンサーを使うためには、いくつかステップがあります。
STEP1:mBlock5で拡張ブロックを追加
まずは、mBlock5でRGBラインフォロワーセンサーの拡張ブロックを追加しましょう。以下の動画を参考にしてみてください。
STEP2:RGBラインフォロワーの学習をさせる
1.補助ランプの色の調整
切り替えキーを長押しして補助ランプの「赤・青・緑」の中から、好きな色を選択します。このLEDの色は、自分の好みでいいです。
2.背景色の学習
RGBセンサーを所定の位置に取り付け、4つのRGBランプを背景に向け、キーをクリックして4つのLEDをゆっくり点滅させます。学習は2〜3秒で終了し、その間LEDは点滅を停止します。
3.トラック(走行ライン)の色を学習する
RGBセンサーを所定の位置に取り付け、トラックに対して4つのRGBライトを正しく点灯させ、キーをダブルクリックして4つのLEDをゆっくり点滅させます。学習は2〜3秒で終了し、その間LEDは点滅を停止します。
4.テストと確認
モジュールを所定の位置に保ち、4つのセンサーの位置を調整して、背景と線の色を正しく検出できることを確認します。背景を検出すると、対応するセンサーのLEDが点灯します。そしてラインを検出するとき、対応するLEDは消えます。
STEP3:RGBラインフォロワーのプログラムを作る
冒頭のようなMakeXマップ(背景が黒・ラインが白)で、白線の上を走行させるプログラムですが、以下が基本のプログラムです。
このプログラムは、Makeblock社のTechサポートから直接アドバイスをもらったもので、こちらでも実際に動作確認を取ったプログラムです。
プログラムの意味合いまでは、理解しなくても、まずは、このプログラムを組んで、あとは、センサーの感度と、BasePawerで走行スピードを調整していけば、MakeXのタスクに活用するという用途であれば、支障はないはずです。
尚、BasePowerが小さすぎたり、電池残量がすくなっている場合などでは、うまく動かないケースも確認しております。従って、まずは、十分な電池残量で、BasePowerを50以上に設定して動作確認してみましょう。
↓の動画は、RGBラインフォロワーセンサーと通常のラインフォロワーセンサーのライン追従比較動画です。通常のラインフォロワーセンサーでも、動画よりもう少し精度よく追従できるようなプログラムを組むことは出来るとは思いますが、RGBラインフォロワーセンサーのほうが、より簡単に精度良いライントレース走行を実現できます。
STEP4:実際の構造化したプログラムに組み入れる
STEP3の基本プログラムを、実際の各タスクのクリアの為のプログラムに組み入れる場合は、まず、「RGBラインフォロワー」という定義ブロックを作っておくのが、分かりやすいプログラム作成のコツです。
上の定義ブロックでは、「ずっと」のループ条件のブロックがありません。理由は、ここでずっととしてしまうと、そのループから抜け出ることが出来なく、次の動作に進むことが出来なくなります。
なので、例えば、「一定の距離をRGBラインフォロワーを使って白線上を追従走行させた後、動きを止めて、右回転する、動きを止める」といった動作をさせたい場合は、タイマーなどを使ってループから抜け出せる条件を設定する必要があります。
RGBラインフォロワーセンサーをタスクに組み入れた解説記事も参考にしていただけたらと思います。
参考記事:MakeX攻略ーmBotと障害物の距離と同じ長さを走行させる
また、より細かく・有効にRGBラインフォロワーセンサーを活用したいという方は、RGBラインフォロワーセンサー活用方法・上級編もご覧ください。
■このページの動作環境
※Makeblock社は随時ソフトウェアのアップデートが行われています。ご自身のPCと本ページのブロック表記が違う場合もあります。本ページは、以下の環境下で動作チェックをしました。
ハードウェア:mBot_v1.1
ソフトウェア:mBlock5_v5.1
利用PCのOS:Windows10
ソースコード確認日:2019年8月7日