#contents
*課題2:黒い線に沿って動くロボット [#h67938aa]

各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空の空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)

   1. 空き缶をコース上に戻して再びコースに戻って進む
   2. 空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む
   3. 奇数回目に空き缶に遭遇したら、その場で反転して進み、偶数回目に遭遇したら、空き缶を押しのけて進む
*メンバー [#ed57a102]

・馬場将寿

・小笠原和貴
*コース [#rd30c042]
あまり複雑ではありません。
#ref(./100621_1650~01.jpg,100%,コース);
*ロボットの説明 [#t2343907]
土台に光センサー、タッチセンサー、アームをつけました。
光センサーは土台にのすぐ近くにつけ、安定させました。
#ref(./100621_1725~02.jpg,100%,光センサー);
タッチセンサーはダブルバンパーにしました。
#ref(./100621_1725~01.jpg,100%,タッチセンサー);
アームは缶をしっかり持てるようにし、シンプルに仕上げました。
#ref(./100621_1724~02.jpg,100%,アーム);
**問題点 [#w004bf99]
アームが不安定で、すぐに車体からとれてしまった。
また、重心が前に傾いてしまう。
**工夫した点 [#uf4f1bc3]
取れないようにアームを補強をして、さらに後ろに重りを付けた。
#ref(./100622_1057~01.jpg,100%,アーム補強);
車輪をつけたのがポイントです。
#ref(./100622_1059~01.jpg,100%,重り);
**完成したロボット [#c9a88ad2]
以上よりロボットが完成した。
#ref(./100622_1100~01.jpg,100%,ロボット完成);
#ref(./100622_1059~03.jpg,100%,ロボット完成);
*プログラム [#b13a8218]
**馬場のプログラム [#g6c76d65]
**小笠原のプログラム [#o40023ad]
 1. 空き缶をコース上に戻して再びコースに戻って進む
#define THRESHOLD 40
#define turn_180    OnFwd(OUT_A);OnRev(OUT_C);Wait(150);Off(OUT_A+OUT_C);Wait(100);

task main (){ 

      int i;
      i = 0;     
      SetSensor(SENSOR_1,SENSOR_LIGHT);     //光センサー
      SetSensor(SENSOR_2,SENSOR_TOUCH);     //タッチセンサー
      SetSensor(SENSOR_3,SENSOR_LIGHT);     //光センサー
      
     
      Wait(50);
      
     while (i < 3){
       if(SENSOR_1 > THRESHOLD){          //右折
                if(SENSOR_3 > THRESHOLD){
                  OnFwd(OUT_A+OUT_C);
                }
             else{   
                  OnFwd(OUT_A);
                  Off(OUT_C);
                }
       }
             else{
                if(SENSOR_3 > THRESHOLD){     //左折
                  OnFwd(OUT_C);
                  Off(OUT_A);
                }
                else{
                  OnFwd(OUT_A+OUT_C);              //停止
                }
             }
                      
    }               
        if(SENSOR_2 == 1){            //タッチセンサー反応
                  Off(OUT_A+OUT_C);
                  Wait(100);
                  OnFwd(OUT_B);         //つかむ
                  Wait(50);
                  Off(OUT_A+OUT_C);
                  Wait(100);                 
                  OnFwd(OUT_A+OUT_C);
                  Wait(120);
                  turn_180;
                  OnRev(OUT_B);
                  Wait(50);
                  OnRev(OUT_A+OUT_C);
                  Wait(80);
                  turn_180;
                  i = i+1;
         }
         
         if(i == 3){
                 Off(OUT_A+OUT_C);       //空き缶をつかむ動作を2回したら停止
         }
}
*反省点 [#n79e6e32]
とにかく前回よりロボット作成とプログラムが格段と難しくなっていたので
、かなり苦労した。
あまりよく缶がはさめなかったので、もっと確実に挟める工夫が必要だと思った。
プログラムをもっと簡略にできると思った。
*感想 [#z747a562]
今回は二人でも、チームでも集まれたのは良かった。
とにかく難しかったけど、やりがいがあったし、楽しかった。
*コメントをどうぞ。 [#ec06ff04]
#comment


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