この連載では常に「見える化」することで問題点を解決することをおすすめしています。まずはセンサーの特性を視覚的に確認ましょう。 教育版EV3ソフトウェアを使ってプログラムを作りました(color1.ev3)。
プログラムの処理は2つに分かれます。一つは100mm前進する処理です。
もう一つはカラーセンサーで反射光の強さを測り、液晶ディスプレイにグラフを描く処理です。
では、ここでクイズです。このプログラムを実行するとどのようなグラフが描かれるでしょう? 答えは三択です。
・A:値がハッキリと変化する。
・B:値が少しずつ変化する。
・C:AでもBでもない。
あとで正解を発表しますので、自分の答えを考えておきましょう。
実行後、液晶ディスプレイにグラフが表示されました。
グラフのX座標がロボットの移動距離です。縮尺は画面の幅が100mmです。Y座標方向がカラーセンサーの測定した反射光の強さです。値の1つぶんが1ピクセルに相当します。
先ほどの三択クイズの正解は「B」に似ているようですが、このグラフには丸みがあるので、ちょっと違います。正解は「C」ということになります。
では、なぜこのグラフには丸みが出ているのでしょうか?
その理由を図にしたものがこちらです。
赤い円がライトの光で、黒い四角形が床面のラインを表しています。ライトの光にラインが重なると反射しなくなり反射の量が落ちます。
円は中心から離れるほど面積が少なくなります。このため、距離に対して光量は比例しません。結果、グラフに丸みが出てしまうのです。
さらにこのグラフを見ると、ラインを通過するタイミングが分かります。
反射光の最高値と最低値の中間が「しきい値」です。 このしきい値と測定値の交差している場所がラインの「白」「黒」の境界です。 グラフに黒線を書き込んでみると、ラインの幅が25mmであることが確認できます。
赤い円はライトが照らしていると思われる範囲です。 測定値の変化が始まる地点を円の中心位置として、そこから白黒の境界までの距離を円の半径と当てはめました。その結果、円の直径は26mmくらいです。 結果として、ライトの直径とラインの幅がほとんど同じのようです。