d-satoです。初日から在宅勤務のため、自宅でマイクロマウス研修に取り組んでいます。記事一覧はこちらです。
前回はパラメータ調整後の迷路走行の様子を紹介しました。とりあえず迷路内は走行できそうなことを確認できたので、今回からはよりスムーズな走行を目指してスラローム走行を実装していきます。これまでは基本的にはマニュアルに沿って進められましたが、ここから先はマニュアルに書かれていないことを多数含みます。自分の記録もかねてスラローム走行については複数回に分けて書いていきます。
今回はスラローム走行の実装方法を紹介します。実際に動かしてみた動画は次回紹介します。
スラローム走行
スラローム走行は曲がり角で曲がる際、止まらず、進みながら曲がる走行方法のことを言います。
現在では曲がり角に来るたびに停止して旋回しています。曲がる動作が多ければ多いほどゴールへたどり着くまでの走行時間の増加につながっています。
曲がり方の違いはshotaさんの記事で動画つきで分かりやすく紹介されています。
実装方法
run.c
の中にrotate(t_local_dir, int)
が定義されているのでこれを見ていくと、ここに停止や超信地旋回の処理が入っていることがわかります。
このrotate(t_local_dir, int)
を呼び出している、void fast_run(int x, int y)
を改造していきます。
具体的には、void fast_slalom_run(int x, int y)
という関数を作成して、この関数を使って走行する処理を走行前のモード選択の4番に実装します。
今後の進め方
スラローム走行を理解しながらvoid fast_slalom_run(int x, int y)
という関数を実装し、4×4迷路で走らせてみます。
4×4の迷路でうまく動いたところで会社においてある16×16の迷路で走行させてみます。
次回は実装する関数について中身の軽い紹介と迷路内でのロボットの動きを紹介します。