2006b/MemberOnly/進行状況A

ロボティクス入門ゼミ

2006b/A2

ロボコン

ロボコンのルール

フィールド

fileロボコン・コース

robocon-2006b-1.jpg

フィールドの説明

ルール

基本ルール

基本得点の計算方法

技術点の計算方法

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

作戦

作戦1:積まれたまま三つ同時に運び、振り分ける。→断念

作戦2:一つずつ物を判別し、確実に振り分ける。→断念

作戦3:ロボを二台にして、役割を決めて振り分ける。これが最終的な作戦でした。

ロボット

ロボット完成までの道のり

 ロボットが完成するまでには、様々な試行錯誤が行なわれました。

作戦1  まず初めに、私たちは缶と牛乳パックを積まれているまま一度に三つ運べるロボットを作ろうと試みました。しかし、一度に三つすべてを掴む確率が悪いということで、そのロボットの製作は断念しました。

作戦2  次に考えたロボットは、缶と牛乳パックを光センサーで見分けて、一つずつ確実に運べるロボットでした。アームにタイヤを利用し、そのアームで物を左右から挟み取るロボットにした。さらに、物を掴んだら、もう一つのモーターでアームを上に持ち上げられるようにして、最後の籠に入れる際の段差をもろともしないロボットを作り出した。 robocon 3.JPG                   

↑これが缶と牛乳パックを両方掴むことが可能なアーム。タイヤを利用したことで、物をつかんだ後に落とさないように工夫した。

 ここまでで出来たロボットがこちらです。

robocon 1.JPGrobocon 2.JPG

 この後、私たちは、RCXを二つ利用して、缶か牛乳パックかを見分ける光センサーの他に、ライントレースをするための光センサーと、積んである缶がどこにあるか、また、壁に当たった時の為のタッチセンサーを取り付けようと試みました。しかし、それ以前に、アームを上下させることがあまりに困難であったので、このロボットでも缶を確実に運べないという結論に至った。そこで一からロボットを作り直すことが決定したが、ロボコンまで残り二日、正直行き詰った。

作戦3  最終的に考えたのが、ロボットを二つ作り、一つは牛乳パック専用ロボット、もう一つが缶専用ロボットにすることです。

牛乳パック専用ロボットは、物をつかんで運ぶのではなく、ロボットの前方に囲いを設けて、そこに入れて押しながら運ぶといったロボットにしました。

robocon 6.JPG

↑囲いに注目!!このスペースに牛乳パックを入れて運ぶ。

また、缶専用ロボットは缶しか入らないネットを前方に設けたロボットにしました。

robocon 11.JPG

↑缶しか取ることが出来なく形作ったアーム。

完成したロボット

 前の項目で述べてきたように、苦労して出来上がったロボットがこちらです↓

robocon 9.JPG←牛乳パック専用ロボ robocon 15.JPG←缶専用ロボ

工夫したこと・苦労したこと

牛乳パック専用ロボット

牛乳パックを籠に入れるときに持ち上げられるように、ロボット前方に一つキャタピラを付けた。

robocon 7.JPG←キャタピラに注目!!

ここでさらに工夫したことがあります。まずこちらの写真をご覧下さい。

robocon 4.JPGrobocon 5.JPG

キャタピラの赤く囲ってある部分に注目してください。最初はキャタピラの角度を垂直に近いくらに取り付けたが、試しにやってみたところ、牛乳パックが分別スペースに入らないことがあったので、キャタピラの角度を初めより鋭角にして、牛乳パックが分別スペースに入りやすくなるようにした。このことで、牛乳パックを運ぶ際の安定性もアップした。

また、牛乳パックを運ぶ際の囲いが長いブロック一本が一対だけで、ロボットが壁にぶつかったときにすぐ壊れてしまうから補強しました。

robocon 8.JPG

缶専用ロボット

robocon 14.JPG

↑缶を取るアームの上げ下げが非常に早かったので、その動作を遅くするために、モーターからの力が直接行かないようにしました。

プログラム

紙パック専門のロボットのプログラム

#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
}

缶専門のロボットのプログラム

task main()
{
SetSensor(SENSOR_2,SENSOR_TOUCH);  //タッチセンサーを定義
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);                        
}
}

アームをやわらかくしたため、接触したときなど破損しにくくなっている。そして、アームの後ろにタッチセンサーがあるので、アームが曲がることによりセンサーが反応しやすくなっている。

robocon 12.JPG

運ぶものを壁におしてアームに乗せるというプログラムにしてるため、缶以外は運ぶことが出来ない。この特徴を利用して缶専用のロボットになった。

最初に待ち時間を設けたため、仲間のロボットとの接触を避けた。もし接触しても、タッチセンサーがついているため避けることが出来る。

アームが少しでも浮いているとタッチセンサーに接触せず、センサーが反応しなかった。これを解決するために、アームの上げ下げの時間の調節を何度も行った。

このアームは、缶がアームの真ん中に来ないと運ぶことができない。これを解決しようといろいろなことを試してみたが、解決することができなかった。

結果

 結果は4位でした。本番はロボットを動かし始める位置がとても重要で、一回目はリスタートした。しかし二回目はうまくいき、三点をゲットすることができました。ロボコンのときのようすです↓

robocon 16.JPGrobocon 17.JPG

感想

ロボコンのテーマは分別ロボットということだったが、なかなかうまく分別は出来なかった。プログラムで分別するのではなく、缶なら缶しか運べないロボットを作って分別したことは工夫したと思う。もっと缶や牛乳パックを分別したかったが、本番で牛乳パックが分別スペースに入ったときはとても嬉しかったです。

robocon 18.JPG

最後に、ロボコンを頑張ってくれたロボット達ありがとう。お疲れ様でした。

robocon 19.JPG

そして、ロボットを共に完成させたグループのみんなもありがとう。本当にお疲れ様でした。



添付ファイル: filerobocon 19.JPG 436件 [詳細] filerobocon 18.JPG 432件 [詳細] filerobocon 17.JPG 455件 [詳細] filerobocon 16.JPG 414件 [詳細] filerobocon 15.JPG 405件 [詳細] filerobocon 14.JPG 456件 [詳細] filerobocon 13.JPG 206件 [詳細] filerobocon 12.JPG 400件 [詳細] filerobocon 11.JPG 402件 [詳細] filerobocon 10.JPG 212件 [詳細] filerobocon 9.JPG 382件 [詳細] filerobocon 8.JPG 398件 [詳細] filerobocon 7.JPG 412件 [詳細] filerobocon 6.JPG 421件 [詳細] filerobocon 5.JPG 403件 [詳細] filerobocon 4.JPG 416件 [詳細] filerobocon 3.JPG 396件 [詳細] filerobocon 2.JPG 380件 [詳細] filerobocon 1.JPG 408件 [詳細] filerobocon-2006b-1.jpg 369件 [詳細] fileロボコン・コース 569件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-02-16 (金) 01:53:54