課題2に使ったコースを使います。
全体像
発射装置
レール上に押し出されたブロックは、レールを転がっていき高速で回り続けるタイヤの回転に巻き込まれ加速し、発射される。バーで打ち出す方法より優れている点はブロックが高速で発射され飛距離が長いこと。悪い点は、装置が大がかりになってブロックを消費しすぎ車体が重くなること。ブロックを装填する方法が、打ち出す方式ならば位置エネルギーを使えば簡単にできるが、回転するタイヤでは、静止しているブロックをタイヤに巻き込ませてもスピードが足りずにブロックがとまってしまう。そのためレール上を転がらせる必要があったので、レール上にブロックを押し出す方式を使わないといけなくなりとにかく面倒くさい。
装填装置
ラックギヤが写真左に動きブロックをレールに押し出す。最初はレールの上のほうにブロックを待機させておいて、上下するバーでブロックを1つずつ転がせようとしたが、ブロックが思ったより速く動きだしてしまい1度に2,3個同時に転がってしまった。押し出したブロックを上手くレール上に入れるのも大変で、レールに入る角度がきつくて詰まってしまったりしたので、台形のブロックで斜めの壁を作り、その壁を滑ってレールに入るようにした。
ディファレンシャルギヤ
今回はロボットが進むのに使えるモーターが一つに限られているのでディファレンシャルギヤを使用した。左右のタイヤにバーのブロックのストッパーがつけられており、それぞれ後ろに回転することのないようになっている。その結果左右いづれかの回転しかできず、前進するときはそれらを交互に繰り返すことによってジグザグに進む。
#define THRESHOLD 50 #define turn_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A); #define turn_light(t) OnRev(OUT_A);Wait(t);Off(OUT_A); #define RUN_TIME 75 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); //タイマー0をリセットする While(ture){ if(SENSOR_1<THRESHOLD){ //黒色の上にいるときは turn_left(3); } 白色の方にすすむ else_if(SENSOR_1<THRESHOLD){ //白色の上にいるときは turn_light(3);} 黒色の方にすすむ } off(OUT_A); }
#define TURN_TIME 150 sub shot() //ブロックを発射するプログラム { OnFwd(OUT_C); Wait(50); OnFwd(OUT_B);Wait(100); Off(OUT_C+OUT_B); } task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー1が光センサー ClearTimer(0); //タイマーをリセット int LM = 0; //光の明るさを変数でおく while(Timer(0)<=TURN_TIME) //時間になるまで繰り返す { OnFwd(OUT_A); if (SENSOR_2>LM) //光の最大値を測る { LM = SENSOR_2;} } OnFwd(OUT_A); until(SENSOR_2 == LM); ClearTimer(1); //タイマーをリセット while(Timer(1)<=50) //時間になるまで繰り返す { OnFwd(OUT_A); //前進 Wait(030); OnRev(OUT_A); Wait(030); } shot() //ブロックを発射する }
#define turn_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A); //左に回る sub shot() { //ブロックを発射するプログラム OnFwd(OUT_C);Wait(50); //ボールを押し出す OnFwd(OUT_B);Wait(100); //車輪を回転させる Off(OUT_C+OUT_B); } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1が光センサー int light_max=0; //光の明るさを変数でおく if(SENSOR_1>light_max){ //光の最大値を測る light_max=SENSOR_1; turn_left(380) //回転する OnFwd(OUT_A); until(SENSOR_1>=light_max); //光がもっとも明るくなるところまで回転する Off(OUT_A); shot(); //ブロックを発射する }
玉を一つずつ装填するのもプログラムも大変だったけど、ディファレンシャルギアを使って走らすのが得に大変だった。最初、車体が重いせいもあってギアがうまくかみ合わず、ギア比を調節したり苦労した。
一番大変なのはディファレンシャルギアだった。と思います。でも、ディファレンシャルギアと発射する装置は隣の人がやってくれたから僕は比較的ラクなとこだけですみました。それでも装填するやつは後付けな感じだったので、できうるかぎりコンパクトにしなければならず、そのうえ耐久性も兼ね備えたものにするのは結構大変だった。でも苦労の末に出来上がったロボはとても愛着がわいていて、ブロックを発射するのなんかもー実に快感で、ちょっといい思い出だったりする。