JASALMAのプログラム解読Part6 左手法
今日は左手法についてまとめていきます。
これは多くの場合初心者が一番最初に導入する探索法だと思います!
その理由は後程。
まず左手法とはなんぞや、ってところから話していきます。
左手法とはスタートから常に左壁に沿って進んで行く、というごくごく簡単なものです。(←一番最初に導入する一番の理由!!)
メリットとしては簡単である、というところです。
一方デメリットもあります。(←このデメリットが大きい)
それが「迷路によっては永遠にゴールできない」というものです。
マイクロマウスにおいてスタートは左下(0,0)に固定されていてゴールは迷路の内側に存在しているためゴールが浮いている(?)、島になっている(?)と延々にクルクル外周し続けてしまいます。(下図参照)
どんな迷路でもゴールできるようになるには次回以降で紹介する「足立法」なりを導入する必要があるかと思います。
では以下左手法の導入についてです。
まず探索走行の大前提としてセンサーで壁の有無を調べてその情報を用いて進路を決めていく必要があります。
(ここではJASALMAの例を紹介しますがこれよりももっといい方法もあるかもしれません)
そこでセンサー値を読むタイミングを決めてしまいます。
ここではそれを区画の境界(区画の入り口)で行うものとしています。
ここで前壁、左右の壁の有無を判定します。
その結果生じるパターンは以下の4パターンであり、それぞれにおいてとる動作は決まっています。
- 左壁無し
→左折
- 左壁有り&前壁無し
→前進
- 左壁有り&前壁在&右壁無し
→右折
- 左壁有り&前壁有り&右壁有り
→Uターン
ここまでで左手法の大まかな流れが理解できたと思います。
のでここからは探索走行の実装についてまとめていきます。
(ここからの話は足立法等でも使えるものです)
まず初めの段階では区画の入り口で停止しセンサー値をよんで壁を判断する、というのがいいと思います。
以下ではセンサーを読むときに停止&超信地旋回のパターンを紹介します。
- 区画の入り口に進み停止
- センサー値を用いて進路を決定
- 90mm進み停止
- 左折or待機or右折or180°旋回(Uターン)
- 90mm進み停止(区画の入り口に進み停止)
これを実現するのに必要な動作は
- 停止状態→90mm進む→停止
- 90°右・左旋回
- 180°旋回
のみです。
とても少ないですよね!
以上のもので左手法は完成できると思います。
これが出来たらセンサーを読むときに停止しない、直進時に区画中心で停止せずスルー出来るようにするなどで速度向上を図っていきましょう!
最終的にスラロームを導入すればスタートからゴールまでノンストップで進むことができます。
センサーを読むときに止まらない、などを実装する際には方向距離のリセット(プログラム的な)のタイミングによっては適切に走れないので距離が合わない場合にはここも考えてみましょう。
(この考えはスラローム走行時のオフセットの際にも用いられる考え方です)
では、本日はここまで!
ではでは(^.^)/~~~
R
P.S.
書こう書こう思っていて遅くなってしまったのですが、先日NTFから正式発表があったようにマイクロマウスのクラス分け・名称の変更がありました。
したがってマイクロマウスを作っていた(作った)つもりだったのですがそれがクラシックマウスとなってしました。
なんとなく悲しさあります・・・
(↑マイクロマウス(旧ハーフ)やればいいじゃん!って指摘は現状受け付けてません(笑))