キット製作研修ブログ(移行中)マイクロマウス研修(hara)

マイクロマウス研修(hara)その5

走行イメージ キット製作研修

こんにちは。haraです。

在宅でのマイクロマウス研修の2回目になります。
ようやく迷路も設置でき、以前のプログラムの動作も確認できましたので、スラロームの実装を行っていきます。

スラローム走行を考える

以前は、90度または180度旋回を行う場合には、一旦停止してから向きを変えるという「超信地旋回」を使っていました。
この方法では一旦静止する必要があり、角や突き当りが増えるにしたがって時間のロスが増えていくことになります。
これに対してスラローム走行は、旋回時に静止する必要はありません。そのため、迷路探索および最短走行時にも大きく時間短縮することが
期待できます。

では、スラローム走行をどうやって実装するかになるのですが、今回は、旋回時の内輪と外輪の速度差を付けることで実現することにしました。
このやり方は等速円運動スラローム走行になり、走行イメージとしては下の図のような感じになります。

走行イメージ

スラローム走行のための速度の計算(理論値)

迷路の幅は180㎜と決まっており、ロボットの外寸は下のようになっていますので、カーブの中心を走行していると仮定して走行時間と速度差を見積もっていきます。

ロボットの外寸今、走行イメージの図のとおりに、右カーブの入口から出口までを1つの円弧として移動すると仮定すると、ロボットの中心は半径90㎜の円弧を描くように進むことになります。
この場合の移動距離は、(π/4 × 180)㎜になることがわかります。
また、ロボットの横幅は 74㎜ですので、外輪(左側)は、(90+37)mm の円弧を走行し、内輪(右側)は、(90-37)mmの円弧を走行することになります。
従って、外輪と内輪の速度比を 127/53 = 2.396 にすればよいことがわかります。

以上のことにより90㎜の円弧を描くように走行させるには、走行時の速度を400mm/secとすると、

外輪: 400 ⁺ ((127-53) * 400 / (90 * 2) ) = 564.4 mm/sec
内輪: 400 - ((127-53) * 400 / (90 * 2) ) = 235.6 mm/sec

の速度を(π/4 × 180) /400 = 0.353 秒間走行すれば良いことがわかります。

この速度調整は、interrupt.cの割り込み処理で移動速度処理を行っているint_cmt0関数を少し修正すれば良いようです。

ただし、上記のような速度差をいきなり与えた場合には、タイヤの滑り等を考えると理論通りには動かない可能性もありますので、
短い走行テストを行いながら、調整をする必要があると思います。

走行テスト

次に簡単走行テストを行います。
走行テストは、

  •  60㎜直進した後に右にスラローム走行
  • 1区画直進、左にスラローム走行×2、
  • 1区画直進、左にスラローム走行し、10㎜直進して停止。

を行ってみたいと思います。

まず最初に、上記の方法をそのまま実装して動作させてみました。結果は、下の動画のように回りすぎの部分があって失敗です。

どうやら回りすぎということですので、旋回時間を若干短め(10%減)で動作させてみます。
すると下のように、問題なく動作しました。

この結果になったのは色々原因が考えられるのですが、速度の差分を設定するのみの場合には、超信地旋回の時とは異なり急激な速度の変化が起こります。このためロボットの機体にブレが生じているのかと思います。

今回は、単に10%減で速度を変更して試してみましたが、この設定で16✕16のフルサイズの迷路で走破できるかどうか疑問に残ることろです。

実際の走行では、右や左のスラロームが連続になったりしますので、走行半径を小さくしたり、走行速度を調整したり、スラロームの時間を調整したりできるように、実装を追加していった方が良いと思います。

色々な手法が考えられますので、次回は、走行半径を変更させて実際の迷路走行を試してみたいと思います。

タイトルとURLをコピーしました