Re: The history of "M&Y"

Team "M&Y" and "花鳥風月"
the soliloquy of the father
毎日更新!

CoSpace Rescue 2015 のプログラミングをしてみた その11

2016-01-17 | RoboCup2016

CoSpace Rescue のプログラムを作っていて、最初につまずくのが・・・

「シーケンシャルな動きはどうやって実現すればいいのだろう!?」だと思います。

シーケンシャルな動きというのは、たとえば、収集箱に入ったら、3秒間停止したあとに、ちょっとバックして90度左回転する・・・というような一連の動作のことです。

M&Yも、2011年に CoSpace Rescue に参加したときに、この課題に悩みました。

当時は、収集箱が袋小路の奥にあるマップが多かったので・・・

収集箱に行く ⇒ オブジェクトを格納する ⇒ 180度回転 ⇒ 収集箱を出る

こんな、一連の動作が必要でした。

 

で・・・これをどうやって解決したのか・・・

当時は、変数を使っていました。

例えば i という変数を定義します。

普段は i=0 で、収集箱に入ったら(左右のカラーセンサーがオレンジ色を検知したら)オブジェクトを格納する動作(Deposit)をする。その後に i=1 にする。

i=1 であれば、180度回転する動作をさせる。その後に i=2 にする。

i=2 であれば、ちょっと(ロボットがオレンジ色の領域から完全に出る位)前進する。その後に i=0 にする。

というように、一連の動作を3行のステートメントで実現し、変数の値によって、どのステートメントを実行するのかを制御していました。

まあ、今でもこの技は使えると思います。

 

さて・・・上のやり方を書いたのは、もっと簡単なやり方があったからです。 

前にも、紹介した CoSpace Rescue Flashcaed - 4 Feb 2015.pdf の中に

Deposit and Leave があります。

 

 

つまり、収集箱で格納した後に、収集箱を出る一連の動作です。

収集箱に入ったことを検知するのは、普通に左右のカラーセンサーで判断しています。ここまでは普通ですよね。で、右下の Advanced Action のところに、5行のコードを書いています。

if(Duration<=10)
if(US_Front<50)
{Wheel_Left=-5;Wheel_Right=-3;}
else
{Wheel_Left=5;Wheel_Right=5;}

確かに、この設定で、収集箱に入る ⇒ オブジェクトを格納 ⇒ 収集箱を出る の一連の動作ができます。

 

なぜ、これで出来るのか、の説明は次の記事で・・・

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする