それでは、ロボットがテーブルから落ちて壊れないようにします。先ほどのプログラムを改造して、タイムアウト機能を付けてみました。タイムアウトというのは。時間切れという意味です。
ループブロックとループの中断ブロックを置きます。それで、スタートしてからボールが見つからない状態が3秒以上続く場合は、プログラムを強制的に終了するようにします。
別の改良方法も紹介します。こちらではリトライ機能を追加してみました。リトライというのは再挑戦という意味です。
スタートしてからボールが見つからない状態が3秒以上続くと、スタート地点まで後退して、ボール探しをやり直します。
リトライ機能を搭載したプログラムの実行結果です。
一定時間ボールが見つからないと元の位置に戻ってやり直します。 これでテーブルから落ちなくなりました。
ただ、この場合、ロボットがいつまで経ってもボールを見つけられず往復を繰り返してしまいます。プログラムが終わりません。
ここからさらに改良が必要です。 たとえば、リトライ回数に上限を持たせて、一定回数以上のリトライをしたら、ループを中断してしまうという方法があります。
もしくはリトライ時にロボットの進路を変えてみてもいいかもしれません。進路を変えることで、運が良いとボールを発見できる可能性があります。
リトライ機能というのは、ライントレースロボットにも活用することができます。ロボットがコースアウトをしてしまった場合、元のラインに戻るようにプログラムを追加するのです。
このような工夫を積みかねて、本番に強い競技ロボットを作ってみましょう。