◦競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。
◦図のA地点または(および)D地点からスタートする。ただし接地している部分はそれぞれの領域内
に収まるものとする(線上はOK)。上空部分は領域からはみ出していてもよい。
◦ピンポン玉をX地点に運び、割り箸で正方形に囲まれた領域に入れる。
◦紙コップをY地点がある黒線に囲まれた領域に運ぶ。
◦開始の合図から5秒以内にスタートボタンを押す作業を完了すること。
◦競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。
◦途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プログラムで起動してよい)。
◦フィールドは課題2で使用した紙を使用する。
◦図のマジェンタの円に逆さまにした紙コップを置き、その中にピンポン玉を2つずつ入れておく。
◦図の黄色い円に紙コップを通常の向きに置き、障害物とする。直径6cmの円の外周をペンまたは鉛筆でマークしておく。
◦紙コップには色をつけたり文字や記号を書いてもよい。
◦割り箸を使って一辺が14cmの正方形を作り、X地点を中心とした円に接するように置く。
最初はR34の班がやっていたような上下のアームを作っていたが完成はしなかった。R34の仕組みはほ んとにすごいと思った。
次に考えたのが斜めに上げてくるものである。しかしこれも失敗に終わった。アーム部分が重く、2つのモータを使っても上げることができなかった。
そして最後に考えられ本番に使用されたのが、これである。
アームは軽量化することで上げ下げをすることができた。アームの構造としてはギアを多めに使うことでモータの負荷を少なくしようと考えた。
アームで紙コップを持ちやすくするためにゴム製のタイヤを取り付け滑り止めにした。
また電源は2つ使った。2つのロボットを作ろうというアイデアは出てはこなかった。
モータはなるべく近くのところに設置した。繋げやすいからだ。
アーム用のルーチンがこの通りである。
#define up(t) OnRev(OUT_A);Wait(t);Off(OUT_AC);//アーム上げる #define down(t) OnFwd(OUT_A);Wait(t);Off(OUT_AC);//アーム下げる #define st(t) Off(OUT_AC);Wait(t);//待機
ロボット本体用がこの通りである。
#define rightSENKAI OnFwd(OUT_C);OnRev(OUT_A);//右旋回 #define rightMAGARU OnFwd(OUT_C);Off(OUT_A);//右折 #define leftSENKAI OnFwd(OUT_A);OnRev(OUT_C);//左旋回 #define leftMAGARU OnFwd(OUT_A);Off(OUT_C); //左折 #define carb 46//46でセット #define ch OnFwd(OUT_B);Wait(30);Off(OUT_B);//アームはさむ #define re OnRev(OUT_B);Wait(20);Off(OUT_B);//アーム開く #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//t秒間進む #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);//t秒間後ろへ #define cross_stop Off(OUT_AC);Wait(100);//交差点判断
task main () { Wait(870);//一つ目のコップに着くまでまで待つ up(30);//アーム上げ st(200);//円Xにたどり着くまで down(30);// アーム下げ }
sub r() { SetSensor(SENSOR_2,SENSOR_LIGHT);//センサー2に光センサーセット ClearTimer(0); while(FastTimer(0)<=24)//0.24秒以内はループ 超えると交差点判定 { if(SENSOR_2>carb+5) //センサーが51を超えると左旋回 { leftSENKAI ClearTimer(0); } else if(SENSOR_2>carb+3)//センサーが49を超えると左折 { leftMAGARU ClearTimer(0); } else if(SENSOR_2>carb)//センサーが46を超えると直進 { OnFwd(OUT_AC); ClearTimer(0); } else if(SENSOR_2>carb-3)//センサーが43を超えると右折 { rightMAGARU ClearTimer(0); } else//43以下は右旋回 { rightSENKAI } } Off(OUT_AC); }
task main () { go(30);//A地点の枠から出る r();//A〜Bトレース leftSENKAI;//左旋回 Wait(5); re;//アーム開く go(160);//マップ左上の紙コップに近づく cross_stop;//1秒間止まる ch;//アーム閉じる rightSENKAI;//右旋回 Wait(140);//1.4秒間右旋回して位置調整 cross_stop;//1秒間止まる ch;//アーム閉じる go(90);//X地点に近づく cross_stop;//1秒間止まる re;//アーム開く back(100);//後退して位置調整 leftSENKAI;//左旋回 Wait(30);//左旋回して位置調整 go(200);//直進して位置調整 rightSENKAI;//右旋回 Wait(40);//右旋回して障害物をよける re;//アーム開く go(250);//交差点Qの上にあるコップを本体で押しながらY地点に向かう }
本番ではうまくいかなかった。コップをつかむことはできたが、運ぶことができなかった。
今回の課題では機体を制作するのにかなりの時間を割いてしまったため、プログラミングがおろそかになってしまったと思われる。
機体自体は悪くはなかった。しかし本番の時上の電源が取れたので、もろさはあった。
もう少し固定するべきだった。
とてもワイワイできた。審判のほうをやらしてもらったが、皆とてもいい作品ばかりだった。
印象に残ったのはまず1位の班。RISであの完成度はすごいと思った。あの上下に動く仕組みよく考えたと思った。
次に二つのロボットを使用した班。その発想は思いつかなかった。特に一台目のロボットからの信号で二台目のロボットを動かす班にはとても驚いた。
他にも音にアレンジを加え始動でマリオの音楽にするなどユーモアあふれる班もいた。
個人的には、一度コップを引き寄せてロボットの中央に入れ、固定して運ぶという仕組みを作った班がとてもいいと思った。他の班とは違う発想だと思った。