WonderWitch.Com
■TOP>ネタ |
Witchに迷路を解かせる。 先日、「マイクロマウス競技会」というコンテストを見させてもらったんですが、出場したロボット達の速いこと、かしこいこと、、、イロイロと感銘を受けましたので、今回はワンダーウィッチで「自動的に迷路を解くプログラム」を作ってみたいと思います(松原拓也)。 ◆まず、迷路情報のデータ化。壁の「ある」「なし」を文字列データにしました。壁は「-」「|」、柱は「+」です。 ◆とりあえず、作ってみました。 【Download】「その1」(01.lzh) ・前方に壁があったら右に方向転換。 ・壁が無かったら前に進む。 、、、。思いつく限り簡単なアルゴリズムです。実行してみると、スタート付近で行ったり来たりを繰り返すだけです。失敗です。 ◆さらに、「左側に壁がなかったら左に方向転換」する機能を追加してみました。 ◆ 【Download】「その2」(02.lzh) 、、、で、実行してみると、「その1」よりも行動範囲が一気に広くなったんですが、外側をグルグル回るだけでゴールに着きません。うーん、これも失敗です。 ただ、やみくもに通路を辿るのではなく、行ったことの無い場所に向かってくように、アルゴリズムを根本的に練り直してみました。 ・迷路の分岐地点を記憶する。 ・行き止まりに来たら、分岐まで戻る。 、、、というのを考えてみました。ただ、これだと変数が膨大な量に膨らんでしまいます。一体、どうしたらいいのか、、、む、難しい。 ◆一応、完成です。まったく資料を見ないで作ったので、結局、5時間ほど費やしてしまいました。 【Download】「その3」(03.lzh) 「その3」の実行結果です。ちゃんとゴールに辿り着きました。 原理ですが、1度通った道を記憶させ(「ルート情報」と名付けた二次元配列)、行き詰まると「戻りモード」、新たなルートを発見すると「いけいけモード」という2種類の行動パターンを考えました。あと、思わぬ発見ですが、ゴール到着後は一気にスタート地点まで戻ります。 *なお、今回、スクリーンショットの撮影にはWitchエミュレータ「MiracleMage」を使わせて頂きました。デバッグ効率も各段にアップできて、大変助かりました。大感謝です。 、、、で、ここからは、突拍子も無い空想ですが、駆動部分はAIモータにして、センサ部分をいろいろ頑張って(できればTreva)、ワンダースワンを使ってマイクロマウスを自作できないでしょうか。誰か作ってみてください。 |