[[2016a/Member]] 目次 #contents *課題 [#pea1d0a0] http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&refer=2016a%2FMission2&openfile=2016a-mission2.png 今回の課題は2カ所にある紙コップを運び、交互に重ねるロボットを作ることです。 **ルール [#u8fd261a] 紙コップをC地点、D地点にそれぞれ3個(合計6個)置き、2台のロボットの場合はA地点とB地点からスタート、一体型の場合はA地点とB地点のいずれかからスタートする。 最終的に黒線で囲まれた輪の中にC地点からの紙コップとD地点からの紙コップを交互に重ねていく。 **得点の計算方法 [#afe49950] スタートしてから紙コップの地点まで移動する速さ、正確さ (2点) 紙コップをつかむ動作 (3点) 紙コップをゴールまで運ぶ動作の速さ、正確さ (2点) 紙コップを重ねる動作 (3点) 2台のロボットの連携の良さ (3点) 自立型のロボットとしての形や動作の美しさ、斬新さ (3点) ロボコン出場ロボットとしての完成度 (2点) その他 (2点) *ロボットの説明 [#s126b665] *プログラムの説明 [#s8d8b81d] **定義 [#wd046d0f] #define BLACK 42 これより小さいと黒 #define WHITE 50 これより大きいと白 #define RIGHT_H OnFwd(OUT_A); OnRev(OUT_C);//右旋回 #define LEFT_H OnFwd(OUT_C); OnRev(OUT_A);//左旋回 #define RIGHT_L OnFwd(OUT_A); Off(OUT_C);//右回転 #define LEFT_L OnFwd(OUT_C); Off(OUT_A);//左回転 #define GO_FORWARD(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);//t秒間前進 #define GO_BACK(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);//t秒間後退 #define STEP1 **サブルーチン [#l4bf1e25] ライントレースする定義で交差点で1秒間止まり、音が鳴るサブルーチン。 whileを繰り返し、黒が0.5秒を超えると交差点と判断するようになっている。↓ sub LINE() { ClearTimer(0); while(FastTimer(0) <= 50) { if (SENSOR_2 <= BLACK) { RIGHT_H; } else if (SENSOR_2 < BLACK){ RIGHT_L; // } else if (SENSOR_2 > WHITE) { LEFT_H; ClearTimer(0); } else if (SENSOR_2 >= WHITE) { LEFT_L; // ClearTimer(0); } else { OnFwd(OUT_AC); ClearTimer(0); } Wait(STEP); } Off(OUT_AC); ClearTimer(0); PlaySound(SOUND_UP); Wait(100); } 交差点で左折するプログラム↓ sub LEFT() { ClearTimer(0); while(FastTimer(0) < 250) { LEFT_L; } } 交差点で右折するプログラム↓ sub RIGHT() { ClearTimer(0); while(FastTimer(0) < 100) { RIGHT_L; } } **メインプログラム [#hd1d8d5b] *まとめ [#g57efa27] 感想&反省点