[[2013a/Member]]

*ロボットの紹介 [#re7ed6d3]
制作時間は約12時間程度(失敗作2作含む)
~一号目:安定感を求め制作するも大きすぎるため失敗おそらく下の写真のロボットの2倍程度はあると思われる。
~二号目:タイヤの付いたモーター2つを地面に対して横ではなく縦に並べたが一作目よりは小さくなったもののまだ大きすぎるため失敗。
~三号目:後輪を付けずに棒による支えのみにし、更に無駄をなくしたところ満足のいく作品となった。



スリムにするために
~1、タイヤの付いたモーター2つを地面に対して横ではなく縦に並べた
~2、後輪を付けずに棒による支えのみにした
~3、光センサー、超音波センサーは場所をとるため、タイヤのモーターの間へ接続した
#ref(2013a/Member/R103/Mission1/robot4.png,20%,センサーの位置);
~4、アームを動かすためのモーターは大きくとても場所をとるためタイヤの付いた縦に並べたモーター2つの上に置いた
~5、小さくするためにできるだけ小さいギアを組んだ(動きが右と左では異なっていたがアームへの支障はなかった)
#ref(2013a/Member/R103/Mission1/robot3.png,20%,アームのギア);
~という工夫を施した。
~これ以上小型化しろと言われたらできない事はないが安定感がかなり失われると思われる。



#ref(2013a/Member/R103/Mission1/robot1.png,50%,横から見たロボット);
#ref(2013a/Member/R103/Mission1/robot2.png,50%,前から見たロボット);
縦:20cm、横:13cm、高さ:17cm程度
*コース攻略方 [#h58034e7]
缶を掴む場所と置く場所との間の時間を図り、その時間を利用して缶の移動をした。
*プログラム紹介(※不完全) [#j3a441c7]
 #define SPEED_H 50
 #define SPEED_L 20
 #define SPEED_A 7
 #define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
 #define go_forward  OnRL(SPEED_H, SPEED_H);
 #define turn_left1  onRL(SPEED_L, -SPEED_L);
 #define turn_left0  onRL(SPEED_L, 0);
 #define turn_right0 onRL(0, SPEED_L);
 #define turn_right1 OnRL(-SPEED_L, SPEED_L);
 #define STEP 1
 #define nMAX 300
 #define short_break Off(OUT_BC); Wait(1000);
 #define CROSS_TIME 200
 #define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break;
 #define cal OnRev(OUT_A,SPEED_A); Wait(100);
      Off(OUT_A); Wait(62000); OnRev(OUT_A,SPEED_A); Wait(100); OnRev(OUT_BC,SPEED_H);
      Wait(500); OnRev(OUT_B,SPEED_H);OnFwd(OUT_C,SPEED_H); 
      Wait(1200);
 
 
 
 task main()
 {
   SetSensorLight(S3);
   int nOnline=0;
   while (true) {
   while (nOnline < nMAX) {
      if (SENSOR_3 < 35) {
        turn_left1;
        nOnline++;
        } else {
        if (SENSOR_3 < 40) {
          turn_left0;
        } else if (SENSOR_3 < 50) {
          go_forward;
        } else if (SENSOR_3 < 60) {
          turn_right0;
        } else {
          turn_right1;
        }
        nOnline=0;
      }
      Wait(STEP);
    }
    short_break;
    turn_right1; Wait(nMAX*STEP);
    cross_line; 
    nOnline=0;
  }
 SetSensorLowspeed(S2);   while (true) 
 {
    if (SensorUS(S2) <= 7) { cal; }
  }
 }
*まとめ [#bac23bee]
プログラミングのセンスのなさが改めて分かった。
~考えは思いついたのにそれをまだうまく形にできないでいる。
~そこはただの勉強不足なのでしっかりと理解しなければならない。
~このプログラムでは不完全だった。
~スタートして初めての分かれ道でどちらにも行くことが問題となった。
~最後の分かれ道も同様である。
~その原因を突き止めて課題2に活かそうと思った。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS