詳しくは課題3を参照。
ロボットを移動用とアーム用に分けて組み立てた。
缶をタイヤで挟み、タイヤを回転させることで缶を持ち上げる機構にした。 缶を上げるための上と下のタイヤは輪ゴムでつながっており、下のタイヤを回転させる事よってと一緒に回転するようになっている。缶の上げる位置は、ロボットの上部に回転センサを付けることによって調節した。缶を積んだ状態では、缶がタイヤに挟まったままなのでフレームを前方に押し出す事でタイヤから外す。
ロボット本体が大きくのでいろいろな方法を試したが、ロボット前方の左右にタイヤを付け、後ろは底が丸くなっている部品で滑るようにした。元々ライントレースのために組み立てたが、旋回がしやすいのでこのまま採用した。
缶を上下に動かし、前方に押し出す。
#define SIGNAL_ARM 1 #define SIGNAL_GO 2 #define can_up OnFwd(OUT_A); //缶を上げる #define can_down OnRev(OUT_A);Wait(50);Off(OUT_A); //缶を下げる #define can_push OnFwd(OUT_C);Wait(50);Off(OUT_C); //缶を押し出す
sub can_catch() //回転センサが反応するまで缶を持ち上げる {until(Message() == SIGNAL_ARM); can_up; until(SENSOR_3 < -3); Off(OUT_A); SendMessage(SIGNAL_GO);}
sub can_release() //缶を下げて押し出す {until(Message() == SIGNAL_ARM); can_down; Wait(50); can_push; SendMessage(SIGNAL_GO);}
task main() { SetSensor(SENSOR_3, SENSOR_ROTATION); ClearMessage(); can_catch(); ClearMessage(); can_release(); }
ライントレースはしないで、Aからスタートして、E地点の方向に進みEの缶を上げ、約90度右回転し、缶を集めながらゴールに向かって前進しながら、F,EF間,Tの缶を集めゴールするように組んだ。
#define SIGNAL_ARM 1 #define SIGNAL_GO 2 #define senkai_l Wait(50);OnFwd(OUT_C);OnRev(OUT_B);Wait(80);Off(OUT_BC); //右旋回 #define go_forward OnFwd(OUT_BC); //直進 #define go_back OnRev(OUT_BC);Wait(100);Off(OUT_BC); //後退
sub can_catch() //缶の目の前まで進む {go_forward; SendMessage(SIGNAL_ARM); until(Message() == SIGNAL_GO); Off(OUT_BC);}
sub tyokushin() //缶を持ち上げて、右に90度旋回して直進する {go_forward; Wait(370); Off(OUT_BC); SendMessage(SIGNAL_ARM);}
sub can_release() //缶をおろして押し出したあと、後退する {until(Message() == SIGNAL_GO); go_back; }
task main() { ClearMessage(); can_catch(); senkai_l; ClearMessage(); tyokushin(); can_release(); }
基本点9点 技術点平均14.3点 合計23.3点 順位4位
2段積みを1つ、1段を1つゴールに持って行けた。
今回の課題は、本体を2つ使えたので今までより複雑な動きをすることが出来たので面白かった。本当は、光センサを使ってライントレースをしたり缶を見つけたりしたかったが、出来なかったのが悔しかった。しかし、缶を積むことが出来て、ロボコンではなかなか良い結果を残せたのでうれしかった。