[[2016a/Member]]

*はじめに [#v6313bcc]

■課題

ロボット2台を用いて枠Cと枠Dに置いてある紙コップを交互に重ね合わせ、地点Qの円内に置くことが正規の課題であった。

■当初の計画

これを達成するため、当初は1台に対して2機の本体を設置して紙コップを重ねる役割を充て、残りの1台には紙コップを重ねる際に壁として機能する役割を充てる計画であった。

そこで最初に作成したロボットが以下のようなものである。

画像の赤枠で囲った部分に紙コップを掴む機構を取り付け、それを黄枠で囲った歯車で機構ごと鉛直方向に持ち上げたかった。

しかしながら、実際に作動させてみると重心の関係上歯車で機構を上下させることが困難であると分かり、構造とプログラムを全面的に見直す必要があるという結論に至った。

■「3点を狙う」計画

課題としては上に書いた通りであったが、発表中の他チームの完成具合を見ているとロボットを2台使っているチームは僅かであり、また紙コップを重ねられているチームはほぼ皆無であったことから、急遽僕らのチームも「枠Dから紙コップを取って地点Qの円内に置いて3点を取る」ことだけを目標にしたロボットに変更した。

■最終的に仕上がったロボット

本体下部にライントレース用のセンサーを取り付け、さらに前面上部に超音波センサーを取り付けて紙コップを認識できる仕組みとした。


*プログラミング [#oc07eb3f]

 #define BLACK 35
 #define strait(p,t) OnFwd(OUT_AB,p);Wait(t);Off(OUT_AB);
 #define roal RotateMotor(OUT_A,-60,360);RotateMotor(OUT_B,40,300);Off(OUT_AB);
 #define turn_migi OnFwd(OUT_B,40);OnRev(OUT_A,20);
 #define turn_hidari OnFwd(OUT_A,40);OnRev(OUT_B,20);
 #define blecfast Off(OUT_AB);PlaySound(SOUND_UP);Wait(1000);

 sub trace() 
 {
  SetSensorLight(S4);
    int nOnline=0;
    int k=0;
 
       while(k==0)
  {
          while (nOnline < 200)  
   {
             if(SENSOR_4 < BLACK)
    {
                turn_migi;
                nOnline++;
    }
             else if (SENSOR_4 < BLACK+15)
    {
                turn_hidari;
                nOnline=0;
    }
             Wait(1);
   }
          
          k++;
          nOnline=0;
  }
 }
 
 sub shaja()
 {
  roal;
  strait(40,500);
   trace();
    OnFwd(OUT_A,40);
    OnFwd(OUT_B,20);
    Wait(350);
   trace();
 }
 
 task main()
 {
  shaja(); 
 }



 #define BLACK  34
 #define WHITE 70
 #define LEFT OnFwd(OUT_B,60);OnRev(OUT_C,36);
 #define RIGHT OnFwd(OUT_C,60);OnRev(OUT_B,36);
 #define nMAX 230
 #define short_break Off(OUT_BC);Wait(1000);
 #define STEP 1
 #define GO OnFwd(OUT_BC,40);Wait(400);Off(OUT_BC);
 #define GO2 OnFwd(OUT_BC,40);Wait(500);
 #define LEFT2 OnFwd(OUT_B,60);OnRev(OUT_C,20);Wait(500); 



 sub normal ()
 { 
   SetSensorLight(S2);
   int nOnline=0;
   int k=0;
 
   while(k==0){
    while(nOnline < nMAX){
    if (SENSOR_2<BLACK) {
      RIGHT;
      nOnline++;
     } else 
    if (SENSOR_2<WHITE) {
      LEFT;
      nOnline=0;
    }
    Wait(STEP);
   }
   short_break;
   k++;
   nOnline=0;
    }
   
 }
 
 sub normal2()
 { 
   SetSensorLight(S2);
   int nOnline=0;
   int k=0;
 
   while(k==0){
    while(nOnline < nMAX){
    if (SENSOR_2<BLACK) {
      LEFT;
    nOnline++;
     } else 
    if (SENSOR_2<WHITE) {
      RIGHT;
      nOnline=0;
    }
    Wait(STEP);
   }
   short_break;
   k++;
   nOnline=0;
    }
   
 }
 
 
 task main()
 {
  normal2();
  LEFT2;
  normal();
  LEFT2;
  normal();
  GO2;
 }
 
上に書いた通り発表ギリギリで計画を変更してしまった為、プログラミングを全てmiyakeiに任せてしまったのが今回のチームワークとしての反省点である。


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