AVE -1・ソフトウェアの秘密




高速走行


探索も終わった、スタートへ戻った・・・。そうしたら、お次は高速走行です。
一番短い経路であるにせよ、そうでないにせよ、一度ゴールしたのであれば、ゴールへの道のりは
当然分かっています。

後は、その道のりの中から無駄な道を無視して、ゴールへ一直線に向かうようにマウスを走らせることになります。


まずは、現状わかっている経路から、一番短い道を選び出す方法について。

「現状わかっている経路」だけを利用するのですから、まだ探索していない区画へ入ることがあっては困ります。
よって、「探索していない区画へ入り込むような経路はないもの」として扱います。
具体的には、経路計算中に未探索のエリアへ入りそうになったら、「そこには壁があるもの」として扱います。

これは、ロボコンマガジンに掲載されていたものと同じ考え方です。
(BASICMOUSEとも同じです。)

この考え方を元に、等高線を書いて、現地点からもっともゴールに近い区画を求め、進みます。
これを繰り返せば、最短経路で走らせることができます。


また、この計算をスタート地点であらかじめ行い、その結果を配列に収めそれにしたがって走れば、
走行中計算をする必要すらありません。

ただし今回は、H8の内蔵SRAMのみでやることにしたため、記憶領域の不安からこの方法は使いませんでした。
(デバッグボードレベルではほぼ実装済みだったんですが。)


方法さえ分かれば、探索より遥かに簡単な部分だと思います。
もっとも、もっと高度な判断に基づいて行う場合は、かなり手間だと思いますが・・・。

(具体的には、直進が旋回に比べて圧倒的に早いマウスや、斜め走行が恐ろしく正確に高速にできるマウス、
旋回と直進が同じ位の性能のマウス・・・などなど。
こういったマウスの場合は、経路選択時の価値判断が変わってくるので結構手間だと思います。)



ところで、高速走行において重要なのは、経路の選択よりも走行の安定性・高速性ではないか、と私は思います。
これらには以下のような点を重視する必要があるでしょう。

1.正確にセンサから情報を取れること。
2.取れた情報を利用して、車体を安定して走らせられること。
3.すばやく加速、減速できること。

・・・まあ、実は当たり前なことばかりですが・・・。

1は、センサがしっかりしたハードウェアでなくてはなりませんし、そこから正しくデータを取れなければ話になりません。
2は、さらっと書いてますが、まじめにやるととても難しいことです。

一言で書くと、「センサの情報を元に、安定して走るような方法を考え、それに従ってモータを制御する」
といった具合ですが。現実にこれを行うには、本当に本1・2冊分の文章量になる、といっても過言ではないでしょう。

もちろんこんな難しいことを私ができるわけがないので、ごまかし・適当・現物あわせで、騙し騙しやってます。
実際その程度でも、「超」高速走行でもない限り、なんとかなります。

3ですが、これまた当然なことです。
ハード的に優秀なモータ・モータドライバで、かつソフト的に正しい制御(台形加速等の加速手法)でないとうまくいきません。

うまくいかないはずなんですが・・・。
実は今回、「台形加速はやっておりません。」

かなり常識はずれなこと(らしい)ですが、いきなりモータを回してます。
しかも高速でまわそうとしてます。

実体験から、「よほど高速で回し始めない限り、うまく動かない(脱調や追従しきれずに蛇行する等の現象がおきない)
ことはない」のが判明していました。

なぜか分かっていませんでしたが、大会後調べてみると・・・
「KH39FM2-801がたまたまそのような特性のモータだった」のが原因のようです。
それまで使っていたモータ(ジャンクのステッピングモータ等)ではそのような無茶はできなかったので、多分このモータがならではものだと思います。



実際は台形加速(もどき)は、まあまあの完成度まで作ってあったのですが・・・

・そこまで高速で走ると、安定して走らない。(うまく制御できなかった)
・どうも加速の具合が悪い。(「もどき」だったのが原因)
・ひょっとすると、直線区画が少ないかもしれない。(実際はそうでなかったのですが。フレッシュマンですから直線は多いんです。)

という理由から、改良して採用するのはやめにし、「とりあえずいきなり高速でまわすかぁ」と
いい加減な状態で走らせることにしました。

実際、私の目指したところは「完走」であって、「運がよければちょっとだけ早い第2走」、程度のことを考えていました。



ただし、自律的に走らせることに興味があったので、「走るごとに少しずつ早くなる」程度の設定で、
自動的に5回トライするようにしておきました。

ま、何が幸いするか分からないもんで、この程度の設定で5位、しかも自律賞まで頂けたわけですから。
勝ち負けだけじゃなく、自分のポリシーを貫くのは重要なことなのかもしれません。
(私の場合は、「自律」というポリシーだったわけです。)



戻る