2024年11月19日

005-2.カラーセンサ入門-第4回「ストロボ光の対策」

教育用レゴ マインドストームNXT用センサの一つ、「カラーセンサ」を使ったロボットの作り方を紹介します(文/松原拓也)。

◆ 光センサモードの誤動作

まずは、次のセンサを用意しましょう。
左側が「光センサ」で、左側がレゴ社純正の「カラーセンサ」です。 「カラーセンサ」は「光センサ」よりもずっと後になって発売されていて、「光センサ」の同等の機能も内包しています。 今回はこれらのセンサがストロボ光にどれくらい誤動作するかと検証してみたいと思います。

このようにインテリジェントブロックNXTにカラーセンサを取り付けます。

センサの取り付け位置は次のとおりです。
センサを床面(下方向)から5ポッチぶんくらい離して、そこから15cmくらい離れた場所にカメラのストロボを配置してみました。ストロボを発光させると、その光は床面を反射して、センサが誤動作を起こすはずです。

最初に、カラーセンサの「光センサモード」での検証用のプログラムを作ってみました(program-1.rbt)。
光センサの値を読み取って、その値をグラフとして描きます。

実行すると、10秒間ほど測定を行って、グラフが描かれます。
そして測定中に、4~5回ほどストロボを光らせてみました。 すると、2か所ほどグラフに変化が見られました。値が大きくなって、ヒゲのようなものが飛び出しています。 およそ、50%くらいの確率ですが、センサが誤動作してしまうようです。
グラフを見たところ、最後のほうでは測定値がY座標の範囲(0~59)を突き破っていました。ライントレースロボットを作った場合では、 こういう誤動作は困ります。

◆ 色センサモードの誤動作

続いて、モードを切り替えて、「色センサ」モードに変更してみました (program-2.rbt)。

今度はカラーセンサで色を測定してグラフ化します。 床面が白色だとストロボの色を同じになってしまいますので、 床面に赤い紙を敷いてみました。

10秒間の間に「色センサ」モードでストロボ光を4~5回、浴びせてみました。その結果、グラフには変化がありませんでした。
意外にも誤動作は起きないようです。特に対策の必要はなさそうです。

◆ 光センサの誤動作

最後に、センサを「カラーセンサ」から「光センサ」に付け替えて、測定を行うプログラムを作ってみました(program-3.rbt)。

測定中に4~5回ほどストロボを発光させてみました。グラフを見たところ、発光させた時に1つくらい値が高くなっているようです。これくらいの変化ならば問題ないと言えそうです。

以上のことから考えると、結論としてストロボで誤動作が起きるのは、 カラーセンサの光センサモードの場合だけ(他の場合では問題なし)ということになります。
次のページではカラーセンサの光センサモードで誤動作をしない方法を考えてみたいと思います。

◆ ストロボ光の対策プログラム

ストロボ光の対策を行ったプログラムを作ってみました(program-4.rbt)。
対策の方法はいくつかありますが、ここでは「2度読み(にどよみ)」という方法を使っています。

2度読みの方法を図にしてみました。
変数を3つ作って、センサの「現在の測定値」と「ループ1周前の値」と「確定した値」を格納します。 変数の「現在の測定値」には最新のセンサの値を代入します。そこに、代入する前にあらかじめ、「ループ1周前の値」には「現在の測定値」を代入しておきます。そして、「現在の測定値」と「ループ1周前の値」を比較して、その値の差がない場合だけ「確定した値」とします。
これによって、ストロボ光のように急激な変化のある値は無視されるわけです。

さっそく、プログラムを実行させて、ストロボを4~5回発光させてみました。

実行結果です。 グラフを見ると一目瞭然ですが、 先ほどのような誤動作はなくなりました。成功です。
ただし、この方法には落とし穴があって、センサの値が確定するまでに、最低にもループ1周ぶんの遅れが出てしまいます。 速い応答が求められるような場面では使えません。
あと、センサの測定値の変化の激しい場合には、なかなか値が確定できないということが起きてしまいます。 その場合には、確定するための条件を少しゆるくして、 比較する値に幅を持たせるといいと思います。
カラーセンサについてのテーマはほとんど語りつくした感じがしますので、カラーセンサ入門は今回で終わりにしようと思います。 次回には別のテーマをご紹介したいと思います。

[DOWNLOAD]今回作成したプログラム(教育用レゴマインドストームNXT2.0以上推奨)

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。