2024年12月5日
010-1.ロボット競技に役立つEV3センサー入門-第3回「超音波センサーの性能を見える化する」
この連載では「教育版レゴマインドストームEV3」を使い、各種センサーをロボット競技に役立てるためのノウハウを紹介していきます。本当に役立てるためのには実際に手足を動かすしかありませんので、これを参考に実践してみましょう。なお、使用するプログラミング環境は「教育版EV3ソフトウェア」です。(文/松原拓也)
今回使用するのはEV3用の「超音波センサー」です。超音波センサーについては過去に別の連載で紹介していますので省略します。NXT用の超音波センサーと違ってミリメートル(mm)単位で測定できるようになっていたりと、性能が向上しています。
結論から言いますと、超音波センサーは測定値の誤差が非常に大きいです。誤差が発生すると値の土台が根こそぎ崩れてしまいますので、いくらセンサーの精度が高くても意味がありません。
そこで、超音波センサーの誤差について検証してみたいと思います。どういう状況での利用がふさわしいかを考えてみましょう。
ロボットを用意します。
前回、使用したロボットをそのまま使います。 入力ポート1に超音波センサーを接続します。 超音波センサーは進行方向に対して90横向きに取り付けます。
実験用のフィールドを用意します。
空きの牛乳の紙パックを用意して、スタートから30cmの地点に置きます。スタートからゴールまでの中間の位置です。
ロボットを手で動かしてみた様子です。
紙パックと超音波センサーとの距離は15cmになりました。正しく測定できれば、測定値は「15.0」となるはずです。
◆ 誤差を見える化する
プログラムを作成してみました。
この連載では常に問題点を見える化することをおすすめしています。そこで、超音波センサーで測定を行ってグラフを描きます。プログラム2つの処理を並列的に動かしています。 1つはロボットを60cm前進させる処理です。もう1つはグラフを描く処理です。
グラフを描くには2つのセンサーから値を取り出します。 回転センサーの測定値をX座標に割り当てます。そして、超音波センサーの測定値をY座標に割り当てます。
では、プログラムを実行します。
ロボットが60cm進んで止まりました。
実行した結果です。 液晶ディスプレイにグラフが表示されました。
グラフのX座標がロボットの移動距離です。画面の左側端が0cm、画面の右端が60cmを示しています。
Y座標方向が超音波センサーの測定した距離です。1cmの長さが2ピクセルに相当します。
超音波センサーはX座標方向で11cmくらいの範囲で反応しています。ぴったり7cm(紙パックの幅)だけ反応するというわけではありませんでした。
Y座標方向を見てみると、測定した距離は15cm~19cmくらいを示しています。超音波センサーの値は安定していません。本来は15cmで安定していて欲しいです。
何度か同じ条件で測定してみましたが、結果は同じです。距離が安定していません。ガタガタとしたグラフが描かれます。
こうなる原因は、超音波が斜め方向に飛んでいて、はね返った距離を測っているものと思われます。誤動作というわけではないのですが、15cmだったり19cmだったりと、値が安定していません。
見たところ、紙パックを通過している幅7cmの範囲では超音波センサーの値は15cmで安定しています。しっかり対象物の正面から超音波を当てないと正確に測ることができないということが分かります。
◆ タイミングの見える化
先ほどの実験では紙パックを通過しているタイミングが分かりにくかったので、ロボットを改良してみました。
EV3用の入力ポート2にカラーセンサーを接続します。カラーセンサーの窓を床面に向けて、超音波センサーの近くに取り付けます。カラーセンサーについては別の機会に詳しく紹介します。
実験用のフィールドも改良します。
紙パックと同じ位置に幅7cmの白い紙を置きます。紙が動かないようにテープで固定しています。
これでロボットが通過すれば紙パックに向いているタイミングを確認することができます。
◆ プログラム作成その2
続いて、プログラムを作ります。 先ほど実験用のプログラムにカラーセンサーを測定する処理を追加しました。カラーセンサーは反射光モードに設定します。グラフは反射光の値をY座標に割り当てています。値の1%が1ピクセルに相当します。
プログラムを実行しました。 先ほどと同じく、ロボットが60cm前進して停止します。
プログラムの実行結果がこちらです。
2本のグラフが描かれました。2種類のグラフが重なるため、棒グラフではなく、点のグラフに変更しました。上が超音波センサーが測定したグラフです。
下がカラーセンサーが測定したグラフです。台形が描かれました。正確には台形ではなく、角(かど)には丸みがあります。斜面のX座標の幅はLEDが照射する円の直径に当てはまります。
斜面の中間地点がカラーセンサーが紙の上を通過している境目です。この境目の2点間の距離を測るとぴったり7cmになります。
以上の結果をまとめると、 超音波センサーには使用に適した場所と適していない場所があります。
幅7cmの対象物が15cm手前にある場合ですが、黄色は超音波センサーを使って問題のない「OK」のエリアです。このエリア内ならば正しい距離を取得できます。
赤色は超音波センサーの値が不正確な「NG」のエリアです。超音波センサーの反応はありますが、正しい距離が取得できません。
超音波センサーが対象物から離れると「NG」のエリアは広がります。OKとNGの範囲を描き加えると写真のようになります。
残念ながら、超音波センサーの測定値だけを見て、それが「正しい」か「正しくない」かを判定する方法が思いつきません。なにか別のセンサーを使って、超音波センサーが対象物にしっかり当たるように工夫すればいいかもしれませんが、それ以外では打つ手がありません。正解値が最初から分かっていれば、それと比較すればいいのですが、それだと測定する意味が必要ないことになってしまいます。
そのため、ロボット競技のようにシビアな環境の場合、超音波センサーの使用は不利です。ただ、ここで使うのを止めましょうという結論を出すのは気が早すぎるかもしれません。超音波センサーは多少の誤差が出ても問題ない場面で使用したほうがいいでしょう。
[DOWNLOAD]今回作成したプログラム(教育版EV3ソフトウェア用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。