課題2で用いたコースを利用し、C地点、D地点にそれぞれ3つずつ置かれた紙コップを下の図の星の地点に運搬する。コップを積み重ねると得点が上がる。得点等の詳細なルールは2016年前期/課題3を参照していただきたい。使用するロボットは2体で、1体は紙コップを積む役(以下ロボA)、もう1体は紙コップを運ぶ役(以下ロボB)を担う。ロボAはA地点からスタートし、Pの交差点、SP間のある地点(上図のコースの青い三角形)へとライントレースを行う。青い三角形の地点でロボBが運んできたコップを積み、積み終わったコップを星の地点に運ぶ。ロボBはB地点からスタートし、Rの交差点、Pの交差点、Sの交差点へとライントレースし、まずC地点へ向かいコップを1つ回収し、Sの交差点を通り青い三角形の地点へ運ぶ。その後D地点へと向かいコップを回収し青い三角形の地点へと運ぶ。これを繰り返し全てのコップを青い三角形まで運ぶ。†ロボAについてコップを持ち上げる役を担うので、コップを持ち上げる機構を考えた。上図(持ち上げるところ)の赤い矢印の向きにアームが動きながら、それと同時に上図(持ち上げるところ2)の機構でアーム部分が丸ごと上昇するようになっている。下降の際はアームが開くようになっている。アームは上昇、下降するため輪ゴムを介して可動するようにした。ロボBについてライントレースをするように機体の中央部分に光センサを取り付けた。コップを運ぶために前方部にパーツを付けた。以下はロボA、ロボBともに使った基本の定義である。次に2体のロボット間での通信で用いたメッセージを示す。†おおまかな流れは、A地点からスタートし交差点Pまでライントレース、その後ロボBから送られたメッセージcloss_Pを受け取るまで交差点Pで停止、closs_Pを受け取った後は青い三角形の地点まで進みコップを積み重ねるである。参照していただきたい。以下にプログラムを示す。Wait(100);}これは交差点で停止するプログラム。}}これは永遠にライントレースをするプログラム。}}これは交差点Pでメッセージcloss_Pを受け取ったら交差点Pを左折するプログラム。コップを積むサブルーチンコップが届いたことを知るために下図のようにタッチセンサを取り付けた。アームを昇降させる時間について定義した。//上げたり下げたりする時間コップを積むサブルーチンは、Cからのコップを受け取った時とDからのコップを受け取った時の2つのサブルーチンを組んだ。Wait(100);}これはCのコップを積むプログラムである。役割はコップを積む作業が終わったら次の動作(サブルーチン)に移るようにすることである。あるが、これは下図のようにコップを積むためである。これは全て積み終わったあとにコップをゴール地点へ運ぶことを簡単にするためである。役割を含めCのコップを積むプログラムと同じである。†おおまかな流れは、ライントレースで青い三角形とC、D地点を往復するだけである。コップを取る工夫はしていない。コップはエリア内であれば自由に置けたので下図の星のように置きロボットの動きにコップを合わせるようにした。ライントレースについてライントレースの仕組みはロボAと同じく2016a/Member/maccha/Mission2を参照していただきたい。今回は黒線の右側をトレースする(課題2と同じ)だけでなく、左側をトレースするよう、サブルーチンと定義を作った。Wait(100);}これは右側をトレースし、交差点で止まるプログラム。Wait(100);}これは左側をトレースし、交差点で止まるプログラム。なっているものは左側をトレースするときに用いるものである。}}は交差点Sから青い三角形までライントレースをするプログラムである。Wait(130);これらは上から交差点を直進(右側と左側の2パターン)、右折、左折するプログラムである。(90°ぐらい回転)これらはプログラムの右に書いてあるように、トレースする部分を変える、または変えないように回転する時間である。C地点とD地点への往復についてここではサブルーチンではなく、タスクを作成した。これは他のサブルーチンを組み入れたいからである。repeatの外でとることで、C(D)のコップの何個目を持ちに行くかを判断することに用いることができ、1・2・3個目でそれぞれ違う動きをするようにした。while文の制御に用いた。コップを取る順番を下図に示した。Cの1個目はこのタスクとは別に取りに行くので、このタスクはDの1個目から取りに行く。本番前日の午後9時時点でロボットと上記のプログラムは出来上がっていたが、通信等の調整が間に合わないため、ロボBのみでCのコップを1つ運ぶプログラムを組むという苦渋の決断を下した。今回の課題では、ロボットの作成とプログラムの作成は出来ていたが、それを試すだけの時間が足りなかった点、また最初にグループで意見がまとまった作戦に固持しすぎた(頭が固かった)ことが問題だったと思う。その結果本番では別のプログラムを用いたわけだが、これも失敗に終わってしまった。他の班の作品を見ていると、なかなか興味をそそられるものが多く、自分の班のロボットを改良するヒントが多く見つけられた。問題は頭が固かったことであったと感じた。確かに今回の課題は失敗に終わってしまったが、得るものは多かったと思う。これからの学習に役立つと思う。