ライントレースでは、同じカラーセンサーを「反射光モード」と「色モード」で使ってきました。部品はまったく同じで、変えたのは使い方だけです。
センサーは、白い光を出している
まず、センサーの窓をのぞいてみてください(目を近づけすぎないように)。光っています。
カラーセンサーは、まわりの明るさをただ眺めているのではありません。自分で白い光を出して、それが返ってくる量を測っています。
ここは2つのモードで共通です。出している光は、どちらも同じ白い光。ちがうのは、返ってきた光の受け取り方だけです。
センサーを床から離すと読めなくなるのも、これが理由です。出した光が広がってしまい、返ってくる量が減ります。
反射光モード ― 明るさを1つの数字にする
返ってくるのは 0〜100 の数字が1つだけです。色は見ていません。白い床なら大きく、黒い線なら小さくなります。
あとは白と黒を分けるしきい値を、自分で決めるだけ。それより大きければ白、小さければ黒。ライントレースは、これで走らせました。
測るのは1回で済むので速い。何十回も読み直すライントレースでは、この速さが効いてきます。
色モード ― 3つに分けて、色の名前を出す
第1回で使ったのがこちらです。出している光は同じ白い光ですが、返ってきた光をそのまま1つの数字にはしません。3つに分けて測ります。
| 記号 | 色 | 英語 |
|---|---|---|
| R | 赤 | Red |
| G | 緑 | Green |
| B | 青 | Blue |
この3色を光の三原色といいます。混ぜればあらゆる色が作れます。テレビもスマホの画面も、近づいて見ると赤・緑・青の点だけでできています。
赤・緑・青の光を順番に出しているわけではありません。出す光は白のままで、分けているのは受け取る側です。白い光を1回当てて、返ってきたものを3つに仕分けています(技術仕様 ↗)。
これは市販のカラーセンサーICでも同じ作りです。よく使われる TCS3200 や TCS34725 も、受光部に赤・緑・青のフィルタが並んでいます。白い光+受け取る側で分けています。
ここで1つ、勘違いしやすいところがあります。赤いりんごは、赤い光を出しているわけではありません。当たった白い光のうち赤だけを返して、残りを吸いこんでいます。だから赤く見えます。人の目で見ているときも、起きていることは同じです。
白い光を当てるからこそ、紙がどの色を返すかがわかります。もし赤い光だけを当てていたら、緑の紙も青の紙も「返ってこない」としか言えません。
色によって、3つの数字はこう出ます。
| 色 | R | G | B | |
|---|---|---|---|---|
| 白 | 大 | 大 | 大 | 全部返ってくる |
| 黒 | 小 | 小 | 小 | 全部吸われる |
| 赤 | 大 | 小 | 小 | 赤だけ返す |
| 緑 | 小 | 大 | 小 | 緑だけ返す |
| 青 | 小 | 小 | 大 | 青だけ返す |
この3つの組み合わせから、センサーが「これは緑」と名前を決めて返します。3つ測ったうえで、最後に何色かを決める手間が加わります。色モードが少し遅いのは、これが理由です。
返ってくるのは名前だけではありません。赤・緑・青の数字そのものを読むこともできます。SPIKEでは「RAWカラー」というブロックで、赤・緑・青それぞれを 0〜255 の数字として取り出せます。センサーが名前を決める前の、もとの数字です。
読み方は3つ ― 反射光・色・RAWカラー
ここまでに出てきたものを並べます。同じセンサーから、3通りの読み方ができます。
| 読むもの | 測っているもの | 返ってくるもの |
|---|---|---|
| 反射光 | 返ってきた光の量だけ | 明るさの値(0〜100) |
| 色 | R・G・B の3つ | 色の名前 |
| RAWカラー | R・G・B の3つ | 赤・緑・青それぞれの値(0〜255) |
同じセンサー、同じ白い光。返ってきた光を1つにまとめるか、3つに分けるかだけのちがいです。そして3つに分けたあと、名前にするか、数字のまま受け取るかを選べます。
速さは、反射光がいちばん速くなります。測るのが1回で済むからです。色は3つ測ったうえで名前を決めるぶん、時間がかかります。
人の目も、同じことをしている
人の目も、同じやり方で色を見ています。目のおくには色を感じる錐体細胞(すいたいさいぼう)が3種類あり、それぞれ青(約420nm)・緑(約530nm)・赤(約560nm)に反応します。センサーの受光部と同じ分け方です。
分け方のしくみまで同じでした。錐体細胞の中のオプシンというタンパク質が、決まった波長の光だけを通すフィルタとして働きます。
| カラーセンサー | 人の目 | |
|---|---|---|
| 色を見る | 赤・緑・青のフィルタ付き素子 | 錐体細胞 3種類 |
| 明るさだけ | 反射光モード | 桿体細胞(かんたいさいぼう) |
| 光 | 自分で白い光を出す | まわりの光を使う |
| 決める場所 | センサーの中の計算 | 脳 |
黒と緑は、反射光では見分けられない
授業では、白・黒・緑・赤・青・銀の6色を用意して、両方のモードで自分で測ります。
| 色 | 反射光の値 | 色モードの答え |
|---|---|---|
| 白 | ・・・・・ | ・・・・・ |
| 黒 | ・・・・・ | ・・・・・ |
| 緑 | ・・・・・ | ・・・・・ |
| 赤 | ・・・・・ | ・・・・・ |
| 青 | ・・・・・ | ・・・・・ |
| 銀 | ・・・・・ | ・・・・・ |
測ってみると、黒と緑は反射光では近い数字になります。どちらも光をあまり返さないからです。
この差で「いま緑の上にいる」と言い切るのは無理があります。つまり、反射光だけでは緑を見つけられません。ここで色モード(RGB)の出番になります。
紙が返す赤・緑・青をスライダーで動かすと、反射光モードの数字と色モードの答えが、その場で両方変わります。ここで出てきた「黒と緑が重なる」も、自分の手で確かめられます。
緑の印 ― 救出エリアの人か、曲がる方向か
レスキューラインのコースには、黒い線のほかに色のついた目印が出てきます。代表的なのが緑の印と銀色のテープです。
緑の印はカテゴリによって違います。
レスキューライン エントリー ― 救出エリアの人が緑
黒い線をたどっていくと、その先に救出エリアがあります。そこで助ける人が緑です。緑が見つけられれば、人を見つけたことになります。
レスキューライン ワールド ― 交差点の緑が曲がる方向
上のカテゴリでは、同じ緑が別の意味で出てきます。分かれ道に置かれた緑が、どちらへ曲がるかを指示します。ライントレースのときに「黒・黒」の場所をわざと空けておきましたが、その答えがこれです。
同じ緑でも、置かれている場所で意味が変わります。見分け方そのものは、どちらも同じです。だから今回ここをやっておくと、上のカテゴリへそのまま持っていけます。
ただし、印の意味や置かれ方は年度ごとに変わります。実際に組むときは、その年のルールブックで必ず確かめます。
緑を見分ける ― 色の名前か、RGBの数字か
① 色の名前で判定する
「色が緑なら」と書きます。簡単です。ただし、センサーが「緑」と認めてくれないと使えません。
② RGB の数字で判定する
「G が大きくて、R と B が小さければ緑」と自分で決めます。少し色が薄くても、印刷が多少ちがっても拾えます。反射光モードでしきい値を自分で決めたのと同じ考え方で、センサーの判定にまかせず、数字を見て自分で線を引きます。
大会会場では②のほうが頼りになることが多いです。照明も紙も、教室と同じではないからです。
うまくいかないとき
センサーが床から離れすぎている(離れると全部の値が下がります)。モードが目的に合っていない。緑と認識されない場合は、紙の緑が薄いか、暗すぎるか。緑と青をとりちがえる場合は、RGBの数字で判定する方式に切りかえます。
ロボカップジュニア2027 に向けて、レスキュー(災害救助)とサッカーの2種目に取り組みます。プログラミングと電子工作の経験は問いません。