MIRS2009 例外時の回避・補正動作

MIRS0901-SOFT-0003

 

 版数

最終更新日

作成

承認

改訂記事

A01

2009/2/7

坂代

武藤

初版


1.目的

2.仕様

3.概要

4.フローチャート

5.まとめ


1 目的

  本ドキュメントは、MIRS0901の各種例外動作についてまとめたものである。

2 仕様

  各種例外動作には以下のものが挙げられる

 

              1,タッチセンサー反応時                                                               ・・・・・・角度・位置補正を行う

              2,ロータリーエンコーダーがしばらく変化しなかった時              ・・・・・・MAXスピードで前進or後退を行う

 

次から、各種例外動作について解説していくが、そこで表現される角度とは、電子コンパスを用いて算出された角度である。

なお、白線センサー反応時の動作については、別ドキュメントに示す。

 

3 概要

  例外動作12まで順に解説していく。

 

 

  1,タッチセンサー反応時

              タッチセンサー反応時には、そのまま直進することが困難であるので、直進できるように角度補正をする。

   しかし、ただ角度補正するだけでは、道の中央にもどれないので、同時に位置補正を行う。

 

              タッチセンサー反応時の例外動作には、状況に応じて3つのパターンがある。

 

                            @直進すべき角度から右()0度〜45度ズレた状態で右()タッチセンサーが反応した場合

                            A直進すべき角度から右()46度〜90度ズレた状態で右()タッチセンサーが反応した場合

                            B直進すべき角度から右()0度〜45度ズレた状態で左()タッチセンサーが反応した場合

 

              言葉だけでは非常に分かりにくいと思うので、各場合の一例を図で示す。

 

                                      

                                                                                                                              fig.1

                                          (a)場合@                                                                     (b)場合A                                                         (c)場合B

 

 

                                          各場合の具体的な補正動作を説明していく。なお、これからの図では左のタッチセンサー反応時の行動を例に示す

 

                            @右()のタッチセンサー反応後、

1,cm後退

2,壁に対して45°を向くように右()回転

3,道の中央に行くように後退する。理論値は (×(道幅−MG3の幅)÷2)

4,進むべき角度になるように左()回転(45°左()回転)

5,通常動作へ戻る

 

                            A右()のタッチセンサー反応後、

1,cm後退

2,壁に対して45°を向くように左()回転

3,道の中央に行くように後退する。理論値は (×(道幅−MG3の幅)÷2)

4,進むべき角度になるように右()回転(45°左()回転)

5,通常動作へ戻る

 

                            B右()のタッチセンサー反応後、

1,cm後退

2,壁に対して90°を向くように左()回転

3,道の中央に行くように前進する。理論値は状況により変化するので無し

4,進むべき角度になるように右()回転(45°左()回転)

5,通常動作へ戻る

 

                            以下に、@〜Bの場合の補正動作の一例を示す 枚数の都合上、GIFアニメーションを用いている

 

                                                        

                                                                                                                                                          fig.2

                                          (a)場合@                                                                                                 (b)場合A                                                                                 (c)場合B

 

以上のようにして、タッチセンサー反応後の補正動作を行う。

この方法は一見時間がかかるように思えるが、補正後しばらくは壁に再び衝突することは少なくなるので、結果的に時間節約になっているはずである。

 

 

2,ロータリーエンコーダーがしばらく変化しなかった時

ロータリーエンコーダーがしばらく変化しない場合に考えられる状況は、ロータリーエンコーダーの通信失敗か、何かしらの障害物にMG3が引っかかって動けなくなっているか

である。前者の場合、競技はそこで失敗という形になるだろうが、後者の場合は、モーターの急加速で突破できる可能性が大いにある。そこで次のような動作を行う。

 

              ロータリーエンコーダーが一定時間(一定周期)変化しなかった場合の動作には、状況に応じて2つのパターンがある。

 

              @タッチセンサーのいずれかがHIGHになっている状態で、ロータリーエンコーダーが一定時間(一定周期)変化しなかった場合。

              AタッチセンサーのいずれもLOWになっている状態で、ロータリーエンコーダーが一定時間(一定周期)変化しなかった場合。

 

              @の場合には、先にも述べたタッチセンサー反応時の動作が実行されると思うが、一部先のタッチセンサー反応時の動作を意図的に使っていない場所もあるので、@の状況も十分ありえると考え、作成した。

 

              @の場合              MAXスピードで少し後退する

              Aの場合              MAXスピードで少し前進する

 

              特にAの場合は、ステップ時にタイヤが引っかかって動かなくなってしまった時に非常に有効な動作である。実際この動作を用いてステップを突破した。

 

              この例外動作自体をモーターを前進・後退させる関数の中に組み込んでいるので、どんな状況でもこの動作を行ってくれるので、非常に有効である。

 

4 フローチャート

  以下に、12までの例外動作のフローチャートを示す。

 

  1,タッチセンサー反応時

 

                                                                      fig.3 タッチセンサー反応時のフローチャート

 

 

2,ロータリーエンコーダーがしばらく変化しなかった時

 

 

              fig.4 急加速のフローチャート

 

5 まとめ

 

  今回の競技のような、壁のある未知の道()を通る際に重要なのは、以下に例外動作を綺麗にこなすかということだと思った。

これら例外時の補正動作を行わないと、最悪そこで半永久的に同じ動作を繰り返してしまうかもしれない。なのでMIRS0901では、これら例外時の補正動作にも力を大いに入れた。

今回作成した2つの例外動作の他にも、必要となる例外動作が今後見つかるかもしれない。その際にも気づいたらすぐ作成するように心がけていきたい。

 

 


 

関連文書