[[2010b]] #contents *課題3の内容とルール [#s4a61046] **課題内容 [#d85c2822] 今回は、コース上を走っているマシンを見つけだし、そのマシンの後ろを5秒間追尾して、その後マシン めがけてブロックを投げるというもの。 追われる側はマシンの後ろに光センサをつけ、追う側はその光を感知すればよい。 プログラムは追われるためにライントレースするだけのものと、光を見つけ出して5秒間光を追尾してブロックを 投げるという2つのプログラムを作る必要がある。 **ルール [#n128cb56] 車輪を動かすためのモーターが1つしか使えない。また、車体の後ろに光センサを付けなければいけないので、 光センサ1つでライントレースをしなければならない。 *メンバー [#bf3b5581] ○山本将大 ○水野悠太 *ロボットの紹介 [#ma7b2fba] **モーター1つでどうやって進ませるか? [#fc682978] 今までのように、タイヤに直接モーターをつけようとすると、モーターが2つ必要になる。 ここで、ディファレンシャルギアを使うことによってモーター1つで前進や曲がることができるようになる。 ただし、後退することはできない。また、直進はできない。左右にくねくねとさせることによって前進させる。 ***ディファレンシャルギア [#i1a2ffc3] #ref(./ディファレンシャルギア.JPG,70%) このようにディファレンシャルギアをつなげた。 ディファレンシャルギアはタイヤが必要以上に回転した場合空回りするというもの。 #ref(./ストッパー.JPG,70%) このように左右ともギアにストッパーをかける。 こうすることによって、タイヤが後ろ回転しないようにする。 これでディファレンシャルギアを作用させる。 **ブロックを打ち出す仕組み [#t0611a8e] &ref(./CA3C0295.JPG,50%); &ref(./CA3C0296.JPG,50%); 上の写真はボヤけて見えにくいと思うが、打ち出す前後を比較したものである。 初め、ピッチングマシンのようにタイヤにはさんで打ち出す方法やブロックを持って投げるような方法を考えたが、最終的にモーターにつなげたハンマーのようなものでブロックを打ち出すという方法をとった。 **ブロックを装填する方法 [#ed927be6] &ref(./CA3C0293.JPG,50%); &ref(./CA3C0294.JPG,50%); 上の写真は装填前後を比較したものである。 初め、ブロックはストッパーにより止められているが、モーターを少し始動させてストッパーを外すと ブロックが転がって自動的に装填される。 **完成形 [#xf2e54f1] #ref(./完成型.JPG,70%) *プログラム [#oc7e3190] **逃げるプログラム(ライントレース) [#s444b97a] #define THRESHOLD 45 //閾値 task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサを1に定義 while (true){ //whileの中が正しい場合繰り返す。 OnFwd(OUT_B); //モーターを正回転(左に曲がる) until((SENSOR_1 < THRESHOLD)); //センサ1が閾値より小さいとき(黒色を認識するまで) OnRev(OUT_B); //モーターを逆回転(右に曲がる) Wait(20); Off(OUT_B); Wait(20); } } 黒→白→黒→白というように左右にくねくねさせながらライントレースする。 黒を認識するまで左に曲がらせ黒を認識したら0,2秒間右に曲げることを繰り返す。このプログラムでコース上を走らせることはできたが、外枠しか走らすことができなかった。 *工夫した点、苦労した点 [#g175219e] *反省 [#f17eb0ce] *コメントをどうぞ [#m6d9b8fe]