読者対象
- プログラミングについて学びたい人・教えたい人
- プログラムが動く楽しさを知りたい人
- プログラムでロボットを動かしたい人
目指すプログラムの概要
前回の記事でも説明しましたが、改めて簡単に課題を説明します。
商品を購入したときの箱に印刷されているルートを使って、図1のようにスタート地点からカラーセンサーを使ってゴールまで走行するプログラムを作成します。
実際に走行するルートは、赤枠内であればよく、任意のタイミングでバックしてもよいこととします。
色や光の特徴とその技術的応用
カラーセンサーを使う前に、色や光にはどのような特徴があり、またセンサーではその仕組みをどのように応用しているのかについて、簡単ではありますが説明します。
例えば一般的に、コンピューターで色を扱う場合には、赤、青、緑の情報を利用しています。このような知識を持つことで、利用する上での注意点を知ることができ、応用範囲が広がるでしょう。
色や光を判断する難しさ
色を判別する際、例えばカメラから取得した画像情報を使っても色を識別することができます。その場合には、人が目で見たときと同じような判断が可能ですので、処理もイメージしやすいと思います。
しかし、コンピューターで情報を制御する場合、人が直感的に行うように対応しようとしても、どうしてもうまくいかないケースが出てきてしまいます。
例えば、暗い部屋の中にいる場合、赤と緑があると、どちらも黒っぽくなってしまいます。このように、ある程度まで暗くなると色の違いがわからなくなり、画像情報からのみ判断しようとすると難しくなってしまいます。
一方、照明で明るくすれば、先ほどの赤と緑の違いはわかるようにはなります。しかし今度は、照明で照らされた部分の白と、もともと白いものの違いはどうやって判断すればよいかという問題が出てきてしまいます。
このように、人が認識している色はデジタル画像内の色情報だけではないことがわかると思います。
人が色を認識する仕組み
先ほど、人が一般的に認識している色と、デジタル色情報が違うと言いましたが、そもそも色とは何なのでしょうか?
色を説明する際によく使われる一例として図2(左)のように「虹が見える理由」があります。虹が七色に見えるのは、光の屈折が影響しています。このような現象は「プリズム」を使えば確認できます。
このように虹やプリズムを知ると、一般的に光といわれるものには、さまざまな色の要素が合成されているということがわかります。
トマトが赤く見えているのも、トマト自体が赤く光っているわけではなく、図2(右)のように太陽など別の光が反射した際に、赤い光だけが目に入っているから、トマトが「赤い」わけです。
つまり、人が多くの場合に「色」として認識しているのは、光の反射した情報を利用しているものなのです。
Note:色が持つ波長の特徴
色の違いを正確に理解することは難しいですが、それぞれに異なる波長を持っていて、図3のように赤の波長が長く、青の波長は短いという特徴があります。
波長はその長さに特徴があり、波長が長い赤の方がまっすぐ進みやすく、反対に波長が短い青の方が拡散して反射しやすくなっています。
そのため、カラーセンサーで「反射光の強さ」を計る際には、この「赤」の特徴を利用した方が精度が高くなるため、「赤い」LEDを使い、「周辺の光の強さ」を計る際には、反対に「青」の特徴を利用した方が精度が高くなります。
前回、利用した「赤外線」は、この「赤」より外側の波長の光であり、より光がまっすぐ進みやすいという特徴があります。まっすぐ進むということは、その光がある方向に光源(ビーコン)があるという精度が高いわけです。また、拡散もしづらいので、その反射する強さを調べれば、距離もわかりやすいということです。
カラーセンサーの仕組み
LEGOのカラーセンサーが色を識別する仕組みも、反射する光の特徴を使っています。そのため、図4のように赤、青、緑のLEDを使って発光し、その反射する情報を利用します。
例えば、赤い色であれば、赤の光は反射しますが、青の反射は弱くなります。コンピューターでは赤、青、緑の情報として色の処理をしていると前述したように、それらの色の光をLEDから発することでより正確に判断できます。
ただし、反射する情報を使っているために、センサーが識別するものに近い位置にないと、周りから入り込む光に影響されるので、注意する必要があります。
このような仕組みがわからなくても多くの場合、カラーセンサーを使うには問題ありません。しかし、どのようなケースでカラーセンサーが使えるのか、または使えないのかを判断する必要が生じた際には必要となる知識です。