今回は自動運転ミニカーでバック運転をさせる方法をご紹介していきます。前回の「S字カーブを通過させよう」と合わせて、途中で止まることのないスムースな走行を実現できます
バックを使わなくても、カーブをスムーズに走行できるようにプログラムを最適化していけば、完走することは可能です。ただし、何かしらの条件で壁の前で止まってしまったときに、バック運転の条件分岐を入れておくことで、リスタートが可能です。
停止時の現象を解説
サンプルプログラムである「02_togikai_sample.py」では、Fr側距離が30mm未満になると走行を停止してしまいます。

この時の動作をプログラムを合わせてみていきましょう
![]()
・・・
途中省略
・・・

FrがCshort(30cm)未満になると、バック走行を0.1秒行い、停止することがわかります
バックさせる方法
それではバックさせる方法を解説していきます。

上記のような状態からバックして再スタートさせるためには、スペースの大きな右側に車両が向くよう、左バックをさせる必要があります。
Rr側のセンサーを利用し、RrLHが80cm未満、RrRHが80cm以上の時に左バックをするようにプログラムしてみましょう(80cmは任意です)
プログラムを追加する
距離センサーのパラメータを定義する
Rr側の距離センサーのパラメータを追加します。

この後に[middle=80]を追加します。この距離は動作を見ながら調整していきます。
モーター出力のパラメータを定義する
続いてバック時のモーター出力のパラメータを追記します。

この後に[jyaku_back=55]を追加します。この出力は動作を見ながら調整していきます。
バック動作を追記する
続いて、バック動作のプログラムを追加します。

この後ろに、下記プログラムを追記していきます

#RrRHdisとRrLHdisを定義
#もし左後ろが80cm以下かつ右後ろが80cm以上なら
#後退(弱)
#操舵(左最大)
#0.7秒
#commentに左バックを代入
同様に、[elif]コマンドを用いて右バックも追記することで、スペースが左側にある場合にも対応できます。
バック運転をマスターすることで、途中で止まることのないスムーズな運転ができると思います。今回のやり方を是非トライしてみてください


コメント