青と赤のボールを運搬して、空き缶の上に載せる。競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。図のA地点または(および)A'地点からスタートする。接地している部分はそれぞれの領域内に収まるものとする(線上はOK)。上空部分は領域からはみ出していてもよい。開始の合図から5秒以内にスタートボタンを押す作業を完了すること。競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プログラムで起動してよい)。競技終了後、ロボットが、空き缶に触れていてはいけない。今回の課題では、ボールを掴むロボットと缶を掴むロボットの二台に分け、中央で缶にボールを乗せて、元の位置に戻すように計画した。(私は缶を掴むロボットを担当した)また、2人1組になってそれぞれ別のロボットを担当し、効率よく進められるように努めた。今回は缶を掴むロボットとボールを掴むロボットの二台を用いた。†このロボットはC,E,Fにあるボールを掴み、I付近で缶を掴むロボットに渡すことができるようにつくった。三つ目のモーターをボールを掴むアームの部分に用い、うまく歯車が合うように調節した。アームはボールの下のほうを掴むように高さを定め、ボールをすくい上げるような形にした。光センサーの調子が少し良くない時があったので、光センサーをできるだけ固定し、地面からの高さが一定になるようにした。超音波センサーが缶を感知する距離が6cmより小さい値では反応せず、缶を掴むには少し遠かったので、センサー自体の位置をできるだけ缶から遠くなるよう調節した。†C',E',F',にある缶を取って、I付近でボールを掴むロボットからボールを受け取り、缶を元の位置に戻すようにつくった。空き缶の位置は上部についている超音波センサーではかり、取れるようにした。アームが缶を離す際、開きすぎてアームがタイヤに接触することがあったため、開きすぎないようにストッパーのようなものを取り付けた。缶がアームから離れないようにアームの形をくの字にした。turn_right0;}nOnline=0;}Wait(STEP);}short_break;cross_line;nOnline=0;cross++;}}課題2と同じように交差点を認識するようにした。while(SensorUS(S1)>=6.1){//ここの()の中身で、超音波センサーと缶の距離が6.1cm以上になるまで以下のプログラミングを続けるようにした。}}超音波センサーが缶を感知するまで黒線をライントレースし、缶を感知したらアームを閉じるようにプログラミングした。}short_break;turn_left1;Wait(800);nOnline=0;cross++;}}課題2と同じように交差点を判断し、交差点を認識するまでライントレースをして、交差点を認識した後は右左折するようにプログラミングした。turn_right0;}}Wait(STEP);}short_break;OnFwd(OUT_A,20);Wait(500);Off(OUT_A);catch++;}}I付近で待っているもう一方のロボットが掴んでいる缶を認識するまでライントレースし、缶を認識したらアームを開くようにプログラミングした。GetAngle(60);catch_balll();u_turnl2;Cのボールを掴みUターンfollow_stop();OnFwd(OUT_BC,25);Wait(200);I付近で受け渡しするため、右トレースに切り替えcatch_releaser();Wait(6000);ボールを離して待機u_turnl1;Wait(500);OnFwd(OUT_BC,25);Wait(100);Uターンして左トレースに切り替えfollow_liner();catch_ballr();u_turnr1;Fのボールを掴みUターンfollow_line2();受け渡しのために右トレースに切り替えcatch_releaser();Wait(10000);ボールを離して待機u_turnl2;Wait(500);OnFwd(OUT_BC,25);Wait(100);Uターンして左トレースに切り替えfollow_stop();turn_right1;Wait(1000);follow_line1();follow_stop();turn_right1;Wait(1000);catch_ballr();u_turnr1;Eまでたどり着き、ボールを掴んでUターンfollow_line2();follow_line2();catch_releaser();}I付近でボールを離して終了。CurrentTick();}Wait(STEP);}Off(OUT_BC);}課題2と同じように交差点を認識するようにプログラミングした。}Wait(STEP);}Off(OUT_BC);}t秒経過するまでライントレースするようにプログラミングした。RotateMotorEx(OUT_BC,SPEED,2.0,-50,true,true);}}}}各缶の位置まで近いづいたとき、超音波センサーが缶に反応するまでライントレースするようにプログラミングした。back(300);}I付近でボールを受け取った後、Eまで移動し缶を離し、缶から離れて終了。今回の課題では、ボールを掴むロボットのアームの部分をつくるのが難しく、大変だった。光センサーの値の変動が激しく、ロボットの動きが同じプログラミングでも違う挙動をしてしまい、調整するのに苦労した。本番の日は、直前の調整まではうまくいって3つのボールを運ぶことができていたが、本番ではボールを1つしか運ぶことができず、残念であった。このような結果になってしまったが、班のメンバーと協力して効率よく活動できたので良い経験になったと思う。最後にこのゼミでは、自分の所属する学科では学ぶことができないことを学ぶことができ、とても良い経験だった。ロボットをつくり、プロブラミングすることの大変さがよくわかり、この仕事に携わっている人たちはとてもすごいと感じた。この講義で得たことを活かしてこれからも努力していきたい。