8.コースを外れても元に戻る!
まえのプログラムでは、「道路から逸脱」すると停止します。
しかし、これだといちいち手でコースに戻してやらなければなりません。
以下が、逸脱しても道路に戻る方法の一つです。

Maqueenが止まる時は、つぎのふた通りがあります。
- 左右のカーブ途中で外れたとき
- 直進中に道路から外れたとき
- のカーブ途中の逸脱は、曲がりきれなくて両方センサーが黒線を見失った時です。
この場合は止まらずにまま走れば、元の道路に戻れそうです。
黒線が見つかれば、通常のライントレースに戻ります。
万が一、そのまま黒線が見つからなければ、いつまでもカーブを曲がる動作になります。
そのため、その場をぐるぐる回る動作になります。 - の直進の途中の逸脱は、突然黒線を見失ったときです。
この時点で道路が左右のどちらに続いいているのかわかりませんので、
このときは停止します。
道路に戻る方法で考えることにしますので、わかりやすい様関数にしておきます。
どちらの状態なのかを知るには、それまでの走行状態を変数「過去の状態」に記憶しておくことで、判断します。