2016a/Member 目次
今回の課題はロボットで似顔絵を描くことです。
方針
プログラムをできるだけ簡単にし、また長い距離を走るにつれて大きくなる誤差を修正し、なるべく線どうしが離れないようにして似顔絵を描くロボットを製作する。
前後の動き
左右2つのモーターを前後のタイヤの間につけ、ギアを使い前輪と後輪が同時に動くようにした。
方向転換
左右どちらかのモーターだけを動かし、止まっているタイヤを軸として回転させた。
ペンの上下の動き
タイヤを4つ使い、ペンを挟むようにして上のタイヤの1つを正回転、負回転させてペンが上下に動くようにした。
本体の製作
車体全体を支えなければならないので、重心がなるべく中心にくるようにして車体のバランスがとれるようにした
アームの製作
4つのタイヤを使い、ペンを挟むようにして上のタイヤの1つを正回転、負回転させてペンが上下に動くようにし、ペンを必要に応じて上げたり、下げたりできるようにした。
#define GO_FORWARD(t);OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);//t秒前進 #define TUNE_RIGHT(t);OnFwd(OUT_A);Wait(t);Off(OUT_A); //t秒右回転 #define TUNE_LEFT(t);OnFwd(OUT_C);Wait(t);Off(OUT_C); //t秒左回転 #define COME_BACK(t);OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //t秒後退 #define UP(t);OnRev(OUT_B);Wait(t);Off(OUT_B); //t秒上昇 #define DOWN(t);OnFwd(OUT_B);Wait(t);Off(OUT_B); //t秒降下
task main () { DOWN(50); GO_FORWARD(65); // 輪郭1 UP(25); COME_BACK(76); TURN_LEFT(79); GO_FORWARD(40); DOWN(50); GO_FORWARD(40); // 輪郭2 UP(25); COME_BACK(76); TURN_LEFT(79); GO_FORWARD(40); DOWN(50); GO_FORWARD(27); // 輪郭3 UP(25); COME_BACK(76); TURN_LEFT(79); GO_FORWARD(40); DOWN(50); GO_FORWARD(40); // 輪郭4 UP(25); COME_BACK(76); TURN_LEFT(79); GO_FORWARD(40); DOWN(50); GO_FORWARD(65); // 輪郭5 UP(25); COME_BACK(130); TURN_LEFT(165); GO_FORWARD(25); DOWN(50); GO_FORWARD(25); // 左目1 UP(25); GO_FORWARD(15); DOWN(50); GO_FORWARD(25); // 右目1 UP(25); COME_BACK(164); TURN_LEFT(165); GO_FORWARD(13): DOWN(50); GO_FORWARD(14); // 左目2 UP(25); COME_BACK(117); TURN_RIGHT(165); GO_FORWARD(4); DOWN(50); GO_FORWARD(14); // 左目3 UP(25); GO_FORWARD(25); DOWN(50); GO_FORWARD(14); // 右目3 UP(25); COME_BACK(113); TURN_RIGHT(155); GO_FORWARD(7); DOWN(50); GO_FORWARD(14); // 右目4 UP(25); TURN_RIGHT(155); COME_BACK(100); TURN_RIGHT(150); GO_FORWARD(115); DOWN(50); GO_FORWARD(15); // 右目2 UP(25); GO_FORWARD(30); DOWN(50); GO_FORWARD(10); // 口4 UP(25); COME_BACK(120); TURN_LEFT(165); GO_FORWARD(15); DOWN(50); GO_FORWARD(22); // 口1 UP(25); COME_BACK(112); TURN_LEFT(165); DOWN(50); GO_FORWARD(10); // 口2 UP(25); GO_FORWARD(30); DOWN(50); GO_FORWARD(15); // 左目4 UP(25); COME_BACK(160); TURN_LEFT(165); GO_FORWARD(15); DOWN(50); GO_FORWARD(22); // 口3 UP(25); COME_BACK(70); TURN_RIGHT(152); GO_FORWARD(45); DOWN(50); GO_FORWARD(35); // 髪1 UP(25); COME_BACK(76); TURN_RIGHT(70); GO_FORWARD(35); DOWN(50); GO_FORWARD(35); // 髪2 UP(25); COME_BACK(76); TURN_RIGHT(67); GO_FORWARD(35); DOWN(50); GO_FORWARD(40); // 髪3 UP(25); COME_BACK(76); TURN_RIGHT(67); GO_FORWARD(50); DOWN(50); GO_FORWARD(35); // 髪4 UP(25); COME_BACK(76); TURN_RIGHT(65); GO_FORWARD(35); DOWN(50); GO_FORWARD(35); // 髪5 UP(25); COME_BACK(76); TURN_RIGHT(60); GO_FORWARD(35); DOWN(60); GO_FORWARD(35); // 髪6 UP(25); COME_BACK(100); TURN_RIGHT(155); GO_FORWARD(30); DOWN(60); GO_FORWARD(105); // 前髪 UP(25); }
感想
ロボティクスの最初の課題だったので、張り切って臨んだもののプログラム製作の難しさを味わった。特に、前進や後退、方向転換をする時間を計るのにすごく苦しめられた。自分の班は予定よりも遅れていて、終わるか不安だったが、友達と一緒に協力して作業し、なんとか終わらせることができた。次の課題では今回の反省を生かし、効率よく作業できるようにしたい。