*課題:缶ころがしロボット [#kbccbb18]
350ml の中身の入ったアルミ缶を所定の場所から所定の場所まで移動させる。
*	フィールドについて [#ocf0f2cb]

-フィールドは160cm×80cmの長方形である。
-ゴールは、正面が幅40cm×高さ30cmの長方形、側面が直角をはさむ2辺の長さが30cmの直角二等辺三角形の形をした三角柱で、枠はゴールラインを含め19mm角の木で組まれており側面と上面にはネットが張られている。
-運ぶ3本の缶の後ろには長さ42cmの19mm角の木がフィールドに固定されている。
-運ぶ3本の缶のうち、最も壁よりの缶の前には長さ12mmの19mm角の木がフィールドに固定されている。
-図で黄色い障害物は350mlあるいは500mlの中身の入ったアルミ缶である。
-黒いラインの幅は25mmである。
*ルール [#f9fba28c]
基本ルール
*ロボット [#t854e2b1]

-所定の時間内に缶を所定の場所に運ぶ。
-競技時間は3分とする。ただし1個缶を運ぶごとに時間を30秒延長する。(暫定)
-缶を同時にいくつ運んでもよい。
-スタート時のロボットは2体2体または1体とする(スタート後はいくつに分裂してもかまわない)。
-フィールド中央の所定の場所からスタートすること(接地部分が枠内に入っていればよい)。
-開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。
-途中でうまく動かなくなった場合、1回限り再スタートすることができる。
-すべてのチームの競技が一通り終った後、再チャレンジを認めるか(?)
*プログラム [#ib783cec]

基本得点
**一号機 [#i88e3e43]

-缶を1本だけゴールに運ぶと5点
-缶を2本だけゴールに運ぶと15点
-缶を3本ともゴールに運ぶと30点
-障害物の缶を倒すと-7点 (もとの位置に戻すと減点なし)
-障害物の缶を円(直径8cm)の外に出すと-5点 (もとの位置に戻すと減点なし)
-障害物の缶の一部を円(直径8cm)の外に出すと-2点 (もとの位置に戻すと減点なし)
 #define front(j) OnFwd(OUT_A+OUT_C);Wait(j);Off(OUT_A+OUT_C);	//直進マクロ
 #define back(j) OnRev(OUT_A+OUT_C);Wait(j);Off(OUT_A+OUT_C);	//後退マクロ
 #define right(j) OnRev(OUT_C);OnFwd(OUT_A);Wait(j);Off(OUT_A+OUT_C);	//右回転マクロ
 #define left(j) OnRev(OUT_A);OnFwd(OUT_C);Wait(j);Off(OUT_A+OUT_C);		//左回転マクロ
 #define tomaru(j) Off(OUT_A+OUT_C);Wait(j);		//停止マクロ
 
 task main()
 {
 
 tomaru(2400);	//二号機が缶を持ってくるまで待機
 
 front(140);tomaru(150);		//缶を受け取る
 back(395);tomaru(150);	//後退
 front(50);tomaru(150);		//缶の速度を落とすため、前進
 
 right(80);tomaru(150);	//右回転
 front(280);tomaru(150);		//直進
 back(50);tomaru(50);	//缶の速度を落とすため、後退
 left(83);tomaru(150);	//左回転
 front(250);		//直進
 
 right(30);left(60);right(30);	//首を振って、木に対して本体を平行に
 front(100);tomaru(150);		//缶を押し入れる
 
 back(160);tomaru(150);left(71);tomaru(150);front(240);tomaru(150);
 right(71);tomaru(150);front(220);tomaru(100);
 front(165);tomaru(150);back(395);tomaru(150);front(50);tomaru(150);
 right(80);tomaru(150);
 front(280);tomaru(150);back(50);tomaru(50);
 left(83);tomaru(150);front(250);right(30);left(60);right(30);
 front(100);tomaru(150);
 back(160);tomaru(150);left(71);tomaru(150);front(240);tomaru(150);
 right(71);tomaru(150);front(220);tomaru(100);
 }

技術点
**二号機 [#u99a284e]

以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について全てのチーム(自チームを含む19チーム)およびTAが20点満点で採点し、その平均点を求める。 得点の目安: 
 #define front(t) OnFwd(OUT_A+OUT_C);Wait(t);
 #define right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);
 #define left(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);
 #define back(t) OnRev(OUT_A+OUT_C);Wait(t);
 #define up(t) OnFwd(OUT_B);Wait(t);
 #define down(t) OnRev(OUT_B);Wait(t);
 #define ACoff Off(OUT_A+OUT_C);
 #define Boff Off(OUT_B);
 #define ABCoff Off(OUT_A+OUT_B+OUT_C);
 
 task main() {
 
       SetSensor(SENSOR_2,SENSOR_TOUCH);
       SetSensor(SENSOR_3,SENSOR_TOUCH);
       SetPower(OUT_A,7);
       SetPower(OUT_C,7);
       SetPower(OUT_B,3);
       
       OnFwd(OUT_A+OUT_C);
       
       while (true)
       {
              if(SENSOR_2==1)
              {
                   ACoff;down(100);
                        right(45);ABCoff;
                   front(50)ABCoff;
                   Wait(100);up(150);Boff;Wait(100);
                   
                   back(120);left(14);
                   OnFwd(OUT_A+OUT_C);
                         while (true)
                         {
                         
                                  if(SENSOR_2==1)
                                  {
                                      ACoff;
                                      down(200);Boff;
                                      back(210);
                                      until (SENSOR_3==1);
                                      ACoff;Wait(100);down(25);Boff;
                                      right(10);ACoff;Wait(200);
                                      front(15);ACoff;Wait(10);
                                      up(250);Boff;right(70);ABCoff;
                                      Wait(100);
                                      up(20);left(70);ACoff;Wait(200); 
                                      front(300);Boff;
                                      back(120);right(20);ACoff;
                                      OnFwd(OUT_A+OUT_C);
                                     
                                      while (true)
                         {
                         
                                  if(SENSOR_2==1)
                                  {
                                      ACoff;
                                      down(450);Boff;
                                      back(210);
                                      until (SENSOR_3==1);
                                      ACoff;Wait(100);
                                      back(100);ACoff;
                                      front(15);ACoff;right(10);ACoff;Wait(200);
                                      up(200);Boff;right(50);ABCoff;
                                      Wait(100);
                                      back(24);ACoff;
                                      left(14);ACoff;Wait(200); 
                                     
                                      OnFwd(OUT_A+OUT_C);
                                                         while(true)
                                                             {
                                                                  if(SENSOR_2==1)
                                                                     {
                                              down(50);back(100);ABCoff;Wait(200);
                                                 up(100);Boff;
                                                                               }
                                                           }
                                 }
                           }
                     }
                }
                           
       
                                                          
              }
       }
    }

-缶を引っ張り出す動作 (3点)
-缶を運搬する動作 (3点)
-缶をゴールに入れる動作 (3点)
-2台の RCX の連係 (3点)
-自立型のロボットとしての形や動作の美しさ、斬新さ(3点)
-動作の機敏さ、スピード(3点)
-その他 (2点)
*工夫した点・苦労した点 [#ka8b9356]

*ロボット [#t854e2b1]
**ロボット本体 [#da50f98e]

*プログラム [#ib783cec]
**プログラミング [#g11718bc]
光センサをまったく使わず、ウェイトのみでタイミングを取りました。~
そのため、電池の消費により旋回速度が変わってしまうと、そのたびにプログラミングを変更するハメに:(~
何とかしてマクロを使う。行動ごとにコメントを逐一書く。等のことをしていたら、多少楽だったかもしれません:)~

*工夫した点・苦労した点 [#ka8b9356]
-ロボット本体作成

-プログラミング
走らせたり、止めたりする時間を決めるのが大変でした、。また、何回もロボットを動かして、プログラムを確認している途中で、ロボットがまっすぐに走らなくなってしまい、それを修正するのに苦労しました。

*感想 [#ucab513b]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS