今回は、mBot2プログラミングシリーズ(mBlock編)の第8回です。
前回は、クアッドRGBセンサーを活用したライントレースプログラムについてご紹介しました。
今回は、前回紹介しきれなかった、クアッドRGBセンサーで自己定義の色を認識させる方法や、キャリブレーション方法をご紹介します。

ライントレース用の黒色ラインの作成には、反射の少ない黒色マスキングテープがお勧めです。
(黒色マジックペンでは、反射してセンサーが黒色を認識しないことがあります)
この記事で分かること
- フィルライトの発光方法
- 色を認識する方法
- キャリブレーション方法
クアッドRGBセンサーとは
クアッドRGBセンサーに関する説明は、前回の記事をご覧ください。
クアッドRGBセンサーの使用用途を次の6つに分類して、前回は1~3のライントレースでの使い方を解説しました。
今回は、残りの4~6について解説します。
- 【初級】L1とR1(中央の2つのセンサー)でライントレースする場合
- 【中級】4つ全てのセンサーでライントレースする場合
- 【上級】『偏差』を用いてライントレースする場合
- フィルライトを発光させる場合
- 色を認識させる場合
- キャリブレーションする場合
mBlockとは?『スクラッチ(Scratch)』との違い
mBlockは、小学校や学習塾で取り入れられている『スクラッチ(Scratch)』をベースとしたビジュアルプログラミングツールです。
スクラッチの基本的な操作感を引き継ぎながら、ロボットやハードウェアの制御に特化しているため、mBlockを使えば、プログラミング初心者でも簡単にロボットプログラミングを始めることができます。
フィルライトを発光させる場合
mBlockで使用するブロック
4つ目のケースで使用するブロックは次の通りです。
『クアッドRGBセンサー』パレットを使います。


フィルライトを発光、および消灯するブロックです。
[緑▼]をクリックすると、発光する色(赤/緑/青)を選択できます。

色を認識させる場合
色のRGBとは
色の認識には、RGBの数値を用います。
RGBは光の三原色で、赤(Red)、緑(Green)、青(Blue)の3つの値を組み合わせて色を作ります。
各値は0から255の範囲で指定します。

mBlockで使用するブロック
5つ目のケースで使用するブロックは次の通りです。
『クアッドRGBセンサー』パレットを使います。

指定した色を検出したかの真偽を返すブロックです。
[R2▼]をクリックして、検出するセンサー位置を選択できます。
「ランダム」はR2~L2のうちどれかのセンサーが色を検出したら『真(Ture)』を返します。

[線▼]をクリックして、検出する色を選択ができます。


指定した色の数値を返すブロックです。
[R2▼]をクリックして、検出するセンサー位置を選択できます。

[オブジェクトのR値▼]をクリックして、検出する色を選択できます。

R値/G値/B値は赤(Red)、緑(Green)、青(Blue)の度合いを数値化した値です。
「色」を選択すると、センサーが検出した色を文字列で返します。

0~255のRGB範囲で色を定義できます。
許容値は例えば次のように使います。
許容値=10とした場合 | R | G | B |
---|---|---|---|
設定 | 255 | 50 | 50 |
RGB値の上限 | 255 | 60 | 60 |
RGB値の下限 | 245 | 40 | 40 |
定義した色は、他のブロックで「自己定義の色」として使用できます。

設定した許容値の範囲内であれば、自己定義した色と判定します。
特定の色を認識するプログラム

mBot2のセットに付属されているコースには、赤・黄・緑・青のポイントがあります。
これらを認識するためには、以下のようにブロックを設定します。

上記ブロックを使用して、センサー位置を『ランダム』に設定することで、4つのセンサーのうちのどれかが『赤』を検出すると、任意の動作をさせることができます。
自己定義の色を作成するプログラム
自己定義の色を作成するといっても、そもそも定義させたい色のRGB値が分からなければ、自己定義できません。
ここでは、定義する色のRGB値をセンサーで読み取った後に、そのRGB値で定義するプログラムをご紹介します。

定義させたい色の上にmBot2(このプログラムではセンサーL1)を置き、Bボタンを押すことで色を定義できます。
例題:自己定義した色でmBot2を動作させる
- 例題
- 解答例
任意の色のRGB値をクアッドRGBセンサーで読み取って、その値を自己定義してみましょう。
自己定義した色を認識して、mBot2を動作制御するプログラムを自由に作ってみましょう。
自己定義した色のRGB値はCyberPiのディスプレイに表示させてみてください。


『色の自己定義プログラム』は例で示したプログラムに、CyberPiディスプレイへの表示処理を追加しています。
『自己定義した色での動作プログラム』は、L1,R1が「自己定義した色」を検出したらmBot2を停止させます。

キャリブレーションする場合
キャリブレーションとは
キャリブレーションとは、センサーが正しい値を計測できるように調整する作業のことです。
クアッドRGBセンサーの性能は、周囲光、背景、対象物との距離などによって大きく影響を受ける場合があります。
したがって、センサーを使用する条件でキャリブレーションを実行すると、検出精度を向上させることができます。
mBlockで使用するブロック
キャリブレーションで使用するブロックは次の通りです。
『クアッドRGBセンサー』パレットを使います。

キャリブレーション方法
- 強い光ではなく、一般的な部屋の光の場所で行ってください。
- mBot2を白紙(mBot2ライントレースマップの白い部分)に置きます。
- 以下のプログラムを実行して、キャリブレーションを開始します。

- キャリブレーションが完了すると、CyberPiのディスプレイに完了した旨のメッセージが表示されます。
まとめ
今回は、クアッドRGBセンサーのフィルライトの発光や、色の自己定義、キャリブレーション方法を解説しました。
これらは、基本的なプログラミングでの使用頻度は少ないかもしれませんが、応用的なプログラムを作成する際には、覚えておいて損のない内容です。
必要に応じて使用できるよう覚えておいてください。
次回は、CyberPiのセンサーについて解説します。
mBlockを使ったmBot2のプログラミング方法を丁寧に解説していておススメです。
CyberPi単体でもプログラミング教育に非常に役立ちます!
