私たちの班は2つのロボット(1つは紙コップを積み上げるロボット。1つは紙コップを集めてくるロボット。)を最初に作っていたのですが、通信をする際にちゃんと向き合っていないとうまく通信できないことがわかり、ライントレースをしているとたとえば時間で止めたときに真っ直ぐ向き合う確率はとても低かったので、1つのロボットに変更しました。1つのロボットにモーターと光センサーを2つずつ使いました。積み上げた紙コップをルールに従い、ロボットに接していない状態でQ地点に置くために、紙コップが抜けられるように片側を空いた状態にしました。紙コップを本体と持ち上げるためのアームとの間に入れるために、ライントレース用の光センサーを本体の外ではなく、内部につけました。†もう一つの光センサーは紙コップをつかんだ(正確に言えば挟んだ)かどうかを判断するために使いました。下の写真のように、紙コップがあるときの光センサーの色判別の値を設定して、その値の間にあるとき紙コップをつかんでいるアームを持ち上げるという仕組みにしました。†アームを動かす仕組みは、1つのモーターを重心の関係でロボットが倒れないようにするために、本体のやや中心に置き、先端のアームを動かすために歯車をいくつもつなげて調節しました。最終的に下の写真のように積み上げていく感じになります。光センサーが黒部分の判定をしている時にカウントをして、0.4秒以上続いたら交差点として判別する。黒部分以外の時はClearTimer(0)でFastTimer(0)を初期化する。ここで、指定秒数を変数としてl_timeをグローバル変数として定義する。ライントレース開始時にClearTimer(1)でFastTimer(1)を初期化する。境界部分を判定して、ロボットが線に対して真っ直ぐ向くようにするものである。向くまでライントレースを繰り返すようになっている。ライントレースできる範囲が決まっているので、一定時間内に真っ直ぐになれなかったら、一度後退してまた再びライントレースするようになっている。†Q地点までライントレースをしてたどり着いたら、次のように積み上げた紙コップを置くQ地点の交差点判別のあと、機体の姿勢を戻さずにそのまま前進する。その後、アームを紙コップから外す。その場で右回転させて、紙コップをロボットの外に出す。紙コップがロボット本体に触れないようにするために、後進する。最初は6個積み上げようと思っていたがうまくいかず、進路変更で確実に積み上げられる4個までにしたのがうまくいき、しっかりコップ4個積み上げた分の得点が獲得できた。†1回目が光センサーの関係でうまくいかなかったし、他のグループよりもロボット本体の形が小さくシンプルすぎたので技術点が低めになってしまった。今回は最初のロボットの形を作るところから苦戦しました。やって紙コップを持ち上げるかをみんなで考えました。プログラミングの方は、最初は通信することを考えてやっていてうまくいかないのでとても大変で、最終的には1台でする方法にみんな合意の上で変更しました。みんなと話し合いながらいろんな意見をまとめたりするのが大変で、また逆に全然意見が出てこないこともあって大変でした。テスト週間とかぶっていたこともあってみんなと時間を合わせるのは大変だったけど、みんな積極的に集まってくれたので、班員には感謝しています。いろんな良いことがあって、みんなの知恵があったから今回の課題3は優勝できたんだなと思いました。プログラミングは難しかったけれど、とても有意義な時間でした。ありがとうございました。