[[2006b/MemberOnly/進行状況A]]

[[ロボティクス入門ゼミ]]

[[2006b/A2]]



CENTER:&color(blue){&size(50){ロボコン};};

#contents

*ロボコンのルール [#s21e915e]
**フィールド [#h7c352bd]
 
&ref(ロボコン・コース);

&ref(robocon-2006b-1.jpg);
 
&size(15){フィールドの説明};
 
-フィールドは約180cm×80cm
-運搬する500mlの紙パック(以下単に紙パックと呼ぶ)は約7cm×7cm×10.3cm
-紙パックはすべての面に緑色の画用紙がはられている。
-アルミ缶は350mlで側面にのみ緑色の画用紙がはられている。


**ルール [#zf408ee5]
&size(15){基本ルール};

-所定の時間内にアルミ缶と紙パックを分別して所定の場所に運ぶ。
-競技時間は2分とする。ただし紙パックあるいはアルミ缶を1個運ぶごとに時間を30秒延長する。
-中央のサークル内からスタートする。ただし地面に接していない部分はサークル外にあってもよい
-スタート時のロボットは3個を越えないこと (スタート後はいくつに分裂してもかまわない)。
-開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。
-途中でうまく動かなくなった場合、1回限り再スタートすることができる。

&size(15){基本得点の計算方法};

-紙パックあるいはアルミ缶を一個運ぶと+2点
-間違ったカゴに入れると-1点

&size(15){技術点の計算方法};
~以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について全てのチーム(自チームを含む7チーム)が10点満点で採点し、その平均点を求める。得点の目安:

-紙パック・アルミ缶を集める動作 (2点)
-紙パック・アルミ缶を運搬・分別する動作 (3点)
-自立型のロボットとしての形や動作の美しさ、斬新さ(3点)
-その他 (2点)


*作戦 [#uc20c5b3]


*ロボット [#c636733f]
**ロボット完成までの道のり [#k131635f]

**完成したロボット [#vb425367]

**工夫したこと・苦労したこと [#me417824]


*プログラム [#q8c065a0]
**紙パック専門のロボットのプログラム[#sfe4924f]
 #define  go_straight(t)  OnFwd(OUT_A+OUT_C);Wait(t);Off   (OUT_A+OUT_C);         //進む
 #define  back(t)         OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);         //バック
 #define  turn_right(t)   OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C);  //右に曲がる
 #define  turn_left(t)    OnRev(OUT_A);OnFwd(OUT_C);Wait (t);Off(OUT_A+OUT_C);  //左に曲がる
 #define THRESHOLD 40  
 #define run_time 80
 
 #define Do 523                     //音階の周波数を定義する
 #define Do_s 554
 #define Re 587
 #define Re_s 622
 #define Mi 659
 #define Fa 698
 #define Fa_s 740
 #define Sol 784
 #define Sol_s 831
 #define La 880
 #define La_s 932
 #define Si 988
 #define Do_up 1047
 #define Re_up 1175
 
 task play_music()                      //大塚愛の『さくらんぼ』の音楽を演奏する
 {
  while (true)
  {      PlayTone(La,15);Wait(20);
     PlayTone(Si,15);Wait(20);
 	PlayTone(La,15);Wait(20);
 	PlayTone(Sol,15);Wait(20);
 	PlayTone(Sol,50);Wait(60);
 	PlayTone(Si,25);Wait(30);
 	
 	PlayTone(Re_up,25);Wait(30);
 	PlayTone(Fa_s,15);Wait(20);
 	PlayTone(Fa_s,50);Wait(55);
	PlayTone(Sol,50);Wait(55);
	PlayTone(Sol,15);Wait(20);
	
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(Si,25);Wait(30);
	PlayTone(Re,15);Wait(20);
	PlayTone(Re,50);Wait(55);
	PlayTone(Mi,25);Wait(30);
	
	PlayTone(Sol,25);Wait(30);
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(La,15);Wait(20);
	PlayTone(Re,15);Wait(20);
	PlayTone(Si,25);Wait(30);
	
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,25);Wait(30);
	PlayTone(Re,15);Wait(20);
	PlayTone(Do,25);Wait(30);
	PlayTone(Re,25);Wait(30);
	PlayTone(Mi,25);Wait(30);
	
	PlayTone(Sol,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(La,15);Wait(20);
	PlayTone(La,15);Wait(20);
	
	PlayTone(La,15);Wait(20);
	PlayTone(Si,15);Wait(20);
	PlayTone(La,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(Sol,50);Wait(55);
	PlayTone(Si,15);Wait(20); 
	
	PlayTone(Re_up,25);Wait(30);
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Fa_s,50);Wait(55);
	PlayTone(Sol,50);Wait(55);
	PlayTone(Sol,15);Wait(20);
	
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(Si,25);Wait(30);
	PlayTone(Re,15);Wait(20);
	PlayTone(Re,50);Wait(55);
	PlayTone(Mi,25);Wait(30);
	
	PlayTone(Sol,25);Wait(30);
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(La,15);Wait(20);
	PlayTone(Re,15);Wait(20);
	PlayTone(Si,25);Wait(30);
	
	PlayTone(Do_up,25);Wait(30);
	PlayTone(Si,25);Wait(30);
	PlayTone(La,25);Wait(30);
	PlayTone(Mi,25);Wait(30);
	PlayTone(Sol,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,15);Wait(20);
	PlayTone(La,15);Wait(20);
	PlayTone(Fa_s,15);Wait(20);
	PlayTone(Sol,25);Wait(30);
	Wait(50);
	}
  }
      
 task main()
 { 
  start play_music; 
   
   SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサー1が光センサーと定義
   SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサー3が光センサーと定義
  
 go_straight(170);   
 turn_left(85);  
 go_straight(585);
 turn_left(90);  
 go_straight(80); 
 turn_left(95);  
 OnFwd(OUT_B);
 go_straight(1100);          //1個目の箱を入れる動作
 
 
 if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD))
 {OnFwd(OUT_C);OnRev(OUT_A);}
 ClearTimer(0); 
 while(Timer(0)<=run_time)
   {if(SENSOR_1<THRESHOLD)
    {OnFwd(OUT_A);
    Off(OUT_C);}
    if(SENSOR_3<THRESHOLD)
    {OnFwd(OUT_C);
      Off(OUT_A);}}                    //黒い線に沿って進むプログラム 
 
 repeat(2)
 {Off(OUT_B);
  back(450);
  turn_right(180);
  go_straight(500);
  turn_right(100);
  go_straight(50);
  turn_right(90);
  OnFwd(OUT_B);
  go_straight(1200);      //右側  right
 
  Off(OUT_B);
  back(400); 
  turn_right(180);
  go_straight(600);
  turn_left(100);
  go_straight(50);
  turn_left(100);
  OnFwd(OUT_B);
  go_straight(1200);     //右側  left
 
 
 
  back(200);
  turn_right(90);
  turn_left(90);
  go_straight(150);     //左側に移動
 
 
  Off(OUT_B);
  back(450);
  turn_left(180);
  go_straight(500);
  turn_right(100);
  go_straight(50);
  turn_right(90);
  OnFwd(OUT_B);
  go_straight(1200);      //左側  right
 
  Off(OUT_B);
  back(400); 
  turn_right(180);
  go_straight(600);
  turn_left(100);
  go_straight(50);
  turn_left(100);
  OnFwd(OUT_B);
  go_straight(1200);}     //左側  left
 }

**缶専門のロボットのプログラム [#w85f2708]

 task main()
 {
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 Wait(1250);
 while(true)
 {OnFwd(OUT_A+OUT_C);
 until (SENSOR_2 ==1);
 OnRev(OUT_A+OUT_C);
 Wait(30);
 OnFwd(OUT_C);OnRev(OUT_A);
 Wait(140);
 OnFwd(OUT_A+OUT_C);
 until(SENSOR_2 ==1);
 OnRev(OUT_A+OUT_C);
 Wait(90);
 OnFwd(OUT_A+OUT_C);
 until(SENSOR_2 ==1);
 OnRev(OUT_A+OUT_C);
 Wait(30);
 OnFwd(OUT_B);
 Wait(80);
 Off(OUT_B);
 OnFwd(OUT_A);OnRev(OUT_C);
 Wait(180);
 OnFwd(OUT_A+OUT_C);
 until(SENSOR_2 == 1);
 Off(OUT_A+OUT_C);
 OnRev(OUT_B);
 Wait(85);
 OnFwd(OUT_B);
 Wait(80);
 Off(OUT_B);
 OnRev(OUT_A+OUT_C);
 Wait(20);
 OnFwd(OUT_A);
 Wait(175);
 OnRev(OUT_B);
 Wait(85);
 Off(OUT_B);
 }
 }


*感想 [#j9a6534a]

#comment

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