2024年12月5日

010-1.ロボット競技に役立つEV3センサー入門-第8回「リトライ機能を追加する」

この連載では「教育版レゴマインドストームEV3」を使い、各種センサーをロボット競技に役立てるためのノウハウを紹介していきます。本当に役立てるためには実際に手足を動かすしかありませんので、これを参考に実践してみましょう。なお、使用するプログラミング環境は「教育版EV3ソフトウェア」です。(文/松原拓也)

今回がこのEV3センサー入門の最終回になります。基本セットの中にあるセンサー類の中でタッチセンサー以外は全部紹介してきました。タッチセンサーについては特に語ることがないので省略します。
このシリーズでは一貫してセンサーの「見える化」をおすすめしてきました。情報を目で見えるようにすることで、問題点を洗い出すという方法論です。
ただし、問題点が見つかってからどう解決するか?については特に触れてきませんでした。今回は最後なので解決方法のヒントを紹介したいと思います。
ロボットに接続するセンサーとモーターの構成は次のとおりです。
・入力ポート1:EV3カラーセンサー
・出力ポートA:Lモーター右
・出力ポートD:Lモーター左

実験用のフィールドを考えてみました。ロボットの手前に赤色のボールを置きます。
この状態で、ロボットを前進させて、ボールを検出したらロボットを止めてみたいと思います。

以前にも触れましたが、EV3カラーセンサーは距離に対してものすごくシビアに作られています。対象物とセンサーとの距離が正しくないとうまく測定できません。
たとえば、このような球体を測定する場合、図の赤色の部分にセンサーを置く必要があります。ここから遠すぎたり、近すぎると誤認識をしてしまいます。実際に試したところでは次のような結果となりました。
・距離が近すぎる場合 → 黒色:1(誤認識)
・適切な距離の場合 → 赤色:5(正解)
・距離が遠すぎる場合 → 黒色:1(誤認識)
・それ以外 → なし:0

ボールを探すプログラムを作ってみました。思い付く限り最も単純なプログラムです。
まず最初にモーターをオンにしてロボットを前進させます。そして、カラーセンサーの結果が赤色ならば、その時点でモーターを停止させます。カラーセンサーが正常に作動しているかは結果が赤色かどうかで判断しているだけです。赤色でない場合は誤作動しているか、ボールに到着していないと判断します。

プログラムの実行結果です。
カラーセンサーがボールの上を通りかかった瞬間でロボットが停止しました。 これは正常に作動した場合です。

正しく作動しなかった場合がこちらです。 ロボットの進路が少しズレていたためカラーセンサーがボールの上を通過していません。そのため、ロボットが止まらず 走りっぱなしです。これに似たような光景はロボット競技でよく見かけるのではないでしょうか。

ロボット競技の場合だと、ロボットはフィールドの柵に当たって止まりますが、この場合だとロボットはテーブルが落ちて壊れてしまいます。そこでロボットが壊れないような工夫をしてみたいと思います。

◆ センサーの読み取りをやり直す

それでは、ロボットがテーブルから落ちて壊れないようにします。先ほどのプログラムを改造して、タイムアウト機能を付けてみました。タイムアウトというのは。時間切れという意味です。
ループブロックとループの中断ブロックを置きます。それで、スタートしてからボールが見つからない状態が3秒以上続く場合は、プログラムを強制的に終了するようにします。

別の改良方法も紹介します。こちらではリトライ機能を追加してみました。リトライというのは再挑戦という意味です。
スタートしてからボールが見つからない状態が3秒以上続くと、スタート地点まで後退して、ボール探しをやり直します。

リトライ機能を搭載したプログラムの実行結果です。
一定時間ボールが見つからないと元の位置に戻ってやり直します。 これでテーブルから落ちなくなりました。
ただ、この場合、ロボットがいつまで経ってもボールを見つけられず往復を繰り返してしまいます。プログラムが終わりません。
ここからさらに改良が必要です。 たとえば、リトライ回数に上限を持たせて、一定回数以上のリトライをしたら、ループを中断してしまうという方法があります。
もしくはリトライ時にロボットの進路を変えてみてもいいかもしれません。進路を変えることで、運が良いとボールを発見できる可能性があります。

リトライ機能というのは、ライントレースロボットにも活用することができます。ロボットがコースアウトをしてしまった場合、元のラインに戻るようにプログラムを追加するのです。
このような工夫を積みかねて、本番に強い競技ロボットを作ってみましょう。

[DOWNLOAD]今回作成したプログラム(教育版EV3ソフトウェア用)

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