はしもとのマイクロマウス研修

スラローム走行を理解して迷路完走を目指す – はしもとのマイクロマウス研修 Part2

はしもとのマイクロマウス研修

こんにちは、はしもとです。
前回は、Pi:Co Classic3のハードウェアを制作しました。
今回は、Pi:Co Classic3に付属のサンプルプログラムを動かしながら、迷路完走させてみました。
さらに今回の4日間の研修の目標であるスラローム走行での迷路完走にも挑戦し、無事達成することができました。

サンプルプログラムで迷路完走させてみた

組み立てていきなりですが、サンプルプログラムを使って迷路を完走させてみました。
ここで一言で完走させてみたと書きましたが、実際は組み立ててプログラム実行して終わりではなく、センサで壁を認識する際の閾値、通路の中央にマウスを置いたときの左右のセンサ値など細かいパラメータ調整をする必要があります。

それらの調整については、ともに研修を行った方々のブログが参考になると思います。
また、自分は作業に夢中になりすぎてこの部分の作業の記録を全然残せていなかったので、サンプルプログラムを使って迷路完走を行う様子についても下記のブログをご参照ください。
YUUKIのマイクロマウス研修-Part2(Pi:Co Classic3)
パラメータ調整で筋肉痛になる – マイクロマウス研修(鍬形)Part 3

スラローム走行で迷路完走

スラローム走行とは?

スラロームと聞いて何が思い浮かびますか?
バイクをよく運転する方だと障害物を交わしながらくねくね走行するバイクのスラローム走行とかが思い浮かぶと思います。
マイクロマウス競技で使われているスラロームは、ロボットの向きを停止せずに曲げることです。従来の方法だと、ロボットが曲がるときに一度停止して、90°向きを変えてから走行していたため、その停止している時間が余分にかかってしまいます。スラローム走行を実装することで、その停止している時間がなくなるため、より早く迷路を走行できるのです。

スラローム走行を理解しよう

下図のようにスラローム走行では、曲がり角を弧を描くように走行することで、停止せずに曲がることができます。この動作を実現するために、右車輪、左車輪それぞれにどれくらいの速度を与えるのか求める必要があります。まずは各車輪の速度を高校物理を使って求めていきましょう。

今回は曲がり角を右回りするときの各車輪の速度を求めていきます。
\(ω\)をロボットの角速度、\(r_1\), \(r_2\), \(r_3\)をそれぞれ曲がり角の中心から右車輪までの距離、ロボットの中心までの距離、左車輪までの距離とします。また、\(v_r\)を右車輪の速度、\(v_l\)を左車輪の速度をすると、以下の式が成り立ちます。

\[v_r=r_1×ω\]
\[v_l=r_3×ω\]
したがって、ロボットの角速度\(ω\)\(r_1\), \(r_3\)がわかれば、ロボットを旋回させたときの各車輪の速度を求めることができます。今回扱う迷路の幅は180[mm]であり、左上図のように、\(r_1\)は、\(r_2\)に車体の幅の半分である37[mm]を引くことで求められます。一方\(r_3\)は、\(r_2\)から37[mm]を足すことで求められます。

次に、ロボットの角速度\(ω\)を求めます。左上図のように、ロボットのスラローム時の走行速度を\(v\)とすると、以下の式が成り立ちます。
\[w = \frac{v}{r_2}\]
\(r_2\)は既知で、\(v\)はスラローム走行時にどれくらいの速度で走行してほしいかを自分で設定します。今回自分は\(v\)を0.3[m/s]としました。ここまでで、欲しい情報は出揃いました。あとは、先ほどの各車輪の速度を求める式に代入していけば、スラローム走行時の各車輪の速度を求めることができます。

また各車輪のスラローム走行距離は、\(2×\frac{π}{4}×r_1\), \(2×\frac{π}{4}×r_3\)より求めることができます。
具体的にどうやってスラローム走行距離をロボットに与えるかについては岩本さんのブログで詳しく解説されているので、ご参照ください。
マイクロマウス研修 Part12(岩本)

ここまででスラローム走行の理論的な話が終わり、いざ実装しようとするのですが、このままでは理論通りうまくスラローム走行できない場合があります。理由は、以下の図のように直線区間と円弧区間で車輪の速度が急激に変化することによってタイヤがスリップしてしまうからです。スリップすると正確に90°旋回できないため、補正が必要です。
また、90°旋回できたとしても回転の慣性モーメントにより、綺麗に中央に戻れずそのまま壁に衝突してしまうことがあります。それを打ち消すためにも、旋回前後に少し直線を設けて調整した方が安定します。今回は、\(d\)=5[mm]の直線を設けてスラローム走行を実装しました。

迷路完走

ここまでスラローム走行の理論的な部分について書いてきましたが、実際自分でやってみるとなかなか理論通り動作してくれなかったです。そのときは、旋回速度を変えてみたり、スラローム走行前に直進する距離を変えてみたりなど試行錯誤を繰り返しました。そして、研修最終日にようやくスラローム走行で迷路完走することができました!

まとめ

今回、4日間の研修でPi:Co Classic 3を使ってマイクロマウス競技を体験してみました。最初の組み立ての段階で躓くことが多かったので、最後の迷路完走までたどり着けるか不安でしたが、ドキュメントが非常に充実していたおかげで、マイクロマウス初心者でも4日間で迷路完走することができました。

次回から自作マウスに入っていき、これまで以上に躓くことが多いと思いますが、楽しんでマイクロマウスを続けていけたらなと思います。今後ともよろしくお願い致します。

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