#author("2019-12-06T14:34:42+09:00","d7","d7") #author("2019-12-06T14:35:40+09:00","d7","d7") *課題2 [#c27393d7] 下の図のようなコースを各チームで作成し、「ミッション」を遂行するためのロボットを作成せよ。 ** コース [#cc5fc1d0] 黒線の幅は20mmでなるべく均等な濃さにすること (図の右半分は、文字や数字が上下逆さまになっています)。 #ref(2019b/Mission2/2019b-mission2.png,80%,課題2のコース) ** ミッション [#d3728238] A地点を出発し、次のいずれかの経路を黒い線にそって動くロボットを作成する (他のメンバーとは別の経路になるようにする)。 *** 1人目 [#bb641b70] + A地点から出発 + B + C (直進) + D (一時停止の後、直進) + E, F 通過 + G (一時停止の後、左折) + H (一時停止の後、左折) + I (ボール or キューボイドをつかんでUターン) + H (直進) + J (一時停止) + A地点に入る(ゴール) *** 2人目 [#m8644fff] + A地点から出発 + J + H (直進) + I (ボール or キューボイドをつかんでUターン) + H (右折) + G (一時停止の後、直進) + D (右折) + E, F 通過 + G (一時停止の後、直進) + C (一時停止の後、左折) + B (一時停止) + A地点に入る(ゴール) もう一つのチームは、A', B', ... とダッシュのついた交差点のコースを使うこと。 また、3名のチームの場合は、そのうちの1名は次のコースを選ぶこと。 *** 3人目 [#cfaccbc3] + A地点から出発 + J + H (直進) + I (ボール or キューボイドをつかんでそのまま直進) + I' (ボール or キューボイドを離してそのまま直進) + H' (右折) + G' (一時停止の後、直進) + D' (右折) + E', F' 通過 + G' (一時停止の後、直進) + C' (一時停止の後、左折) + B' (一時停止) + A'地点に入る(ゴール) 交差点では1秒間停止し、丁字路では直角方向に進入する時のみ一時停止すること。 ** 発表会、レポート締切りなど [#g7eb3279] - 次の2つの関数を作り、メールで提出 (下の例を参考に、12月12日締切り) -- ライン・トレースをして交差点で止まるという関数 (or サブルーチン) を follow_line() という名前で作る。 -- 直進して、前方のボール(or キューボイド)をつかみ、Uターンして戻ってくるという 関数を fetch_ball() または fetch_cuboid() という名前で作る。 - 12月20日の授業終了前までにロボット本体とプログラムを完成させる - 12月20日の授業で発表会 - レポート締切りは2020年1月10日 (木) メールでの提出するプログラムは、添付ファイルではなくてメールの本文に コピーすること。 また、次のようにmain関数も含めること。 (EV3のグループはpythonで) // // ボールを掴んで、Uターンし、次の交差点までライントレースするプログラム // 学籍番号 氏名 ... (定数やマクロの意義など) void follow_line(long tmin=0, long tmax=10000) { // long tmin: スタートからの時間がtmin以下では、交差点を無視してライントレースする // long tmax: スタートからの時間がtmax経てば、交差点に達しなくても停止 ... } void fetch_ball(long tmax=3000) { // long tmax: スタートからの時間がtmax経てば、ボールをつかめなても戻ってくる ... } task main() { ... fetch_ball(3000); // まずボールをつかんでUターンしてくる line_follow(0, 15000); // その後次の交差点までライントレース } 2019年12月6日からのこのページのだいたいの訪問者数: 本日&counter(today); 昨日&counter(yesterday); 合計&counter(total);