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

*&size(26){課題 : 光を追うロボット  }; [#t5e11335]
#contents

**課題概要 [#s370f461]
1、全方向から懐中電灯の方向を探しだし、懐中電灯の手前50cmまで進んで懐中電灯を狙ってブロック(白樽)を投げる。懐中電灯は動かさない。

2、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば50cmの距離まで近づいて懐中電灯を狙ってブロックを投げる。


*&size(25){ロボット〜本体編〜}; [#e2312b54]

**&size(20){制作過程}; [#ze215800]
***&size(15){動力部-before}; [#x5005b88]
&ref(F10.gif);
~今回は動力にモーターを一つしか使用してはいけないということで、複雑にギアを組むことで自由に動けるようにしなくてはならなかった。
~最初は写真のように組んだ。
~前進するにはモーターを正回転すれば両タイヤが回転するのでいつも通りである。
~方向を変えるにはモーターを逆回転させる。このストッパーが右タイヤの回転をとめ、車体は反時計回りの移動をする。
~ただし!!!直進と左回転!!これ以上の移動機能がない、、、、
~これで、光を追えとは無理がある。

~改良することにけってい(~_~)

***&size(15){動力部-after}; [#xa077777]
&ref(土.gif);
&ref(無題.jpg);

改良を施して完成したのがこちら。

~このスーパーダブルストッパー(笑)によってモーターを正回転させると右へ曲がるし、負回転させれば左へまがる。
~こちらも、これ以外の移動機能はないものの、左右の自由は初タイプよりあるため光を追いやすくなった。
~ただ、直進ができないので図のように「カクカク」進むことで前進をおこなう。



***&size(15){砲撃部-before}; [#mfa15310]
#ref(hougeki.gif)
白い樽をただ飛ばせればいいと思ってつくったのがこいつ。黄色いバーが矢印方向に回り、打ち出すことで飛ばす単純な仕組み。
~しかし、同じ方向に飛ぶことがない.......(威力は抜群www)
~精度に問題ありなので壱から再検討。

***&size(15){砲撃部-after}; [#q6710bcc]
&ref(akb2.gif); &ref(hougekikai22.jpg);
~我等は画期的な白樽発射装置の開発に成功した。
~(説明の為に左のゴムを「ゴム壱」右側のゴムを「ゴム弐」とする。)


~モーターを回転させると手前のワームギアがオレンジ矢印方向へゴム壱をたぐり寄せる。
~すると連動して青丸部分の黒棒も紅矢印方向に動き出す。
~この黒棒が白樽をとめるストッパーになっているため、
~黒棒が白樽から抜けるとゴム弐の弾性エネルギーによって青矢印方向に発射される。
~精度、威力ともに抜群!!!文句なしの発射機構となった。@(^^)@


**&size(20){完成体}; [#h32eec22]
&ref(完成.JPG);
~最後に苦労した点は車体のバランスだった。
~発射機構のスケールが大きくなってしまったことに原因がある。
~二つのモーターを使って直進するのに比べて、カクカク直進するのは急な発進、ストップをくりかえすのと変わらない。すると慣性力によって倒れやすくなってしまう。
~試行錯誤を繰り返した結果、同じくらいの重さのNQCを後ろにつける形が一番バランスがよかったので、最終的に図のようなロボになった。

*&size(25){プログラム}; [#b9297b3d]
その1
   #define THRESHOLD 55		//闘値
    task main()
      {
    SetSensor(SENSOR_1,SENSOR_LIGHT);		//光センサーをセンサー1にセット
    SetSensor(SENSOR_3,SENSOR_LIGHT);		//光センサーをセンサー3にセット
      SetPower(OUT_A+OUT_B,7);			//モーター出力を7に設定
      while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD))
      {
      OnFwd(OUT_B);		//センサー1、センサー3が光を感知していないときは右回転
      Off(OUT_A);		
      }
      Off(OUT_B);			//闘値を超えたら停止
      OnFwd(OUT_A);             //ホイールを投げる
      Wait(30);		
      Off(OUT_A);
      }
その2
   
      #define THRESHOLD 55		//闘値
      task main()
      {
    SetSensor(SENSOR_1,SENSOR_LIGHT);		//光センサーをセンサー1にセット
    SetSensor(SENSOR_3,SENSOR_LIGHT);		//光センサーをセンサー3にセット
      SetPower(OUT_A+OUT_B,7);			//モーター出力を7に設定
      ClearTimer(0);
      while(true){
      if(SENSOR_1 > THRESHOLD){    
      OnFwd(OUT_B);             //右の光が強いとき右に進む
      OnFwd(OUT_B);ClearTimer(0);             //右の光が強いとき右に進む
      }
      if(SENSOR_1 < THRESHOLD){
      OnRev(OUT_B);       //左に光が強いとき左に進む
      OnRev(OUT_B); ClearTimer(0);     //左に光が強いとき左に進む
      }
      if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) {
      if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) 
      {
      Off(OUT_B);
      if(Timer(0)>20)
      {
      OnFwd(OUT_A);                  //左右の光が闘値よりも強い場合ホイールを投げる
      Wait(30);
      }   
      }
      }
      }
*&size(25){苦労した点}; [#h4de4980]
&#8226;最初に苦労した点はモーター1つでロボを左右に動かさなければならなかったことでした。今まではモーターが2つだったので左右に曲がることは難しくなかったけどモーターが1つになると難易度がいっきに上がりロボを作るのにとても苦労しました。
*&size(25){コメント}; [#sbb0d45e]
何かコメントがありましたらお願いします。
- ロボットの説明は詳しくてよかったと思います。ただ、一つ目の課題ではロボットを50cmの位置まで近づけましょう。二つ目ではロボットが真正面に光を認識したときにも投げてしまいます。 -- [[FI]] &new{2009-02-02 (月) 20:01:05};

#comment

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