2024年11月21日
008-1.EV3ソフトウェア入門-第11回目「HiTechnic製カラーセンサについてその2」
新シリーズのレゴマインドストームである「教育用レゴマインドストームEV3」を使ったプログラミング環境「EV3ソフトウェア」について紹介していきたいと思います。(文/松原拓也)
◆ カラーセンサブロックの実行時間の違い

HiTechnic(ハイテクニック)社のカラーセンサ「NXT Color Sensor V2」を紹介したいと思います。名前に「NXT」が入っていますが、NXTだけではなくEV3でも使うことができます。
右側がHiTechnic社のカラーセンサ、左側がEV3基本セットに付属しているEV3カラーセンサ(レゴ製カラーセンサ)です。

今回はレゴ製カラーセンサとHiTechnic製カラーセンサの応答時間の違いを測定してみたいと思います。「応答時間」の考え方にもいろいろありますが、まずはプログラム内のブロックの動作時間を測ってみたいと思います。時間が短いほど性能が優れているはずです。
測定用のプログラム(speedtest1.ev3)を作ってみました。レゴ製カラーセンサを1秒間に読み取れる回数を求めます。動作のモードは「色」に設定しています。
結果、1秒間に1439回も呼び出すことができました。1回あたりの実行時間は1/1439秒=約0.69ミリ秒となりました。

続いて、HiTechnic社のカラーセンサで測定プログラム(speedtest2.ev3)を実行しました。
1秒間に1439回も呼び出すことができました。1回あたりの実行時間は1/98秒=約10.20ミリ秒となりました。
つまり、レゴ製カラーセンサはHiTechnic製カラーセンサよりも14倍も速く応答するということになります。
ただし、これだと測定方法にちょっと問題があって、センサの測定結果が変化していないのに応答だけが速いだけという可能性もあります。きちんと、カラーセンサの測定結果も比較しないと、正しい応答時間は測れないわけです。
その対策方法については、次項で紹介します。
◆ カラーセンサの応答時間を測る1

先ほどの問題点を改善すべく、カラーセンサの応答時間を測ってみたいと思います。 そのための装置を考えてみました。
まずはレゴ製カラーセンサを搭載しています。カラーセンサの上に光センサ(NXT用)を配置します。さらに、その上に赤色のブロックを配置します。
赤ブロックがカラーセンサの手前に落下するという仕掛けです。

測定の手順は次のとおりです。
(1)赤ブロックを決まった高さから落とす。
(2)赤ブロックが光センサを通過したら、それを合図にタイマをスタート。
(3)カラーセンサが「赤色」と判別したら、タイマをストップ。
これでカラーセンサの本当の応答時間が求まるはずです。正確には「光センサとカラーセンサの応答時間の差」ですが、、、。 レゴ製カラーセンサとHiTechnic製カラーセンサの結果を比べれば、性能の差を求めることができます。

応答時間を測定するプログラムです(speedtest3.ev3)。
長いので、分割して表示しています。こちらは前半部分です。 光センサが反応するまで待ちます。

プログラム(speedtest3.ev3)の後半部分です。 カラーセンサが赤色を検出するまでの時間を測ります。
◆ カラーセンサの応答時間を測る2

プログラムの実行結果は後回しにして、HiTechnic製カラーセンサの場合のプログラムも作成します。

赤ブロックを落とすとこうなります。レゴ製カラーセンサの場合とほぼ同じです。

応答時間を測定するプログラム(speedtest4.ev3)です。 HiTechnic製カラーセンサの場合、赤色の戻り値が7だったり、8だったり、9だったりするので、ここでは範囲ブロックを使ってみました。 ただし、これだと先のプログラム(speedtest3.ev3)とイコールのコンディションにならないので、正確に比較はできないかもしれません。

そこで、比較ブロックを使って、赤色の戻り値が9だけに限定したプログラムも作ってみました(speedtest5.ev3)。
◆ レゴ製カラーセンサのほうが3倍近く速い

プログラムを実行して測定してみました。レゴ製カラーセンサの応答時間(speedtest3.ev3)と、HiTechnic製カラーセンサの応答時間(speedtest4.ev3)を測定しました。 数値の単位は秒です。
念のため、範囲ブロックを使ったプログラム(speedtest4.ev3)と比較ブロックを使ったプログラム(speedtest5.ev3)を比較してみたのですが、結果はほとんど同じでした。範囲ブロックであることの影響はないようです。

応答時間を表計算ソフトに入力してみました。5回ずつ測定して、平均値を出してみました。
レゴ製カラーセンサの応答時間は約0.040秒。
HiTechnic製カラーセンサの応答時間は約0.114秒。
つまり、レゴ製カラーセンサのほうが、HiTechnic製カラーセンサよりも約2.8倍速く色を識別できることになります。
理由ははっきりしませんが、HiTechnic製カラーセンサはI2Cを使って通信していますので、応答に時間がかかってしまうのではないでしょうか。
[DOWNLOAD]今回作成したプログラム(教育用EV3ソフトウェア用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。