[[NQC入門]]
*課題1 似顔絵を描くロボット [#n5b071c7]
*ロボット本体 [#b237cd36]
自分たちは、ロボットの構想を練る際に車タイプのロボットだとタイヤなどで紙が動いてしまったりと、不便な点が多いのでは? と思い、車からかけ離れたこのアームタイプのロボットを作りました。�,離◆璽爐肋絏爾瞭阿�をし、アーム全体を持ち上げ、ペンを上げ下げします。�△離◆璽爐郎険Δ貌阿�、大きくペンの位置を動かしたりと、大まかな動きをします。��のアームも左右に動き、細かな動きで線を描きます。この3つのアームを駆使して顔を描きました。
#ref(2012a/A4/Chako/M1/本体.jpg,10%,本体)
アームタイプはバランスをとるのが大変難しく、安定させるためにパーツを試行錯誤
しながら取り付けたらこうなりました。コンピュータも重し代わりにしました。
#ref(2012a/A4/Chako/M1/ロボ3.jpg,10%,ロボット安定)
&ref(2012a/A4/Chako/M1/ロボ2.jpg,10%,ロボット安定);
また、アーム部分がかなり重たくそのまま描こうとするとアームの角度が下に向きすぎてしまったりしてうまく描けないので、アームの支えを取り付けました。ただ、アームの動きを邪魔しない位置に支えを取り付けるのが大変だった。
#ref(2012a/A4/Chako/M1/ロボ1.jpg,10%,ロボット支え)
*プログラム [#ce9acaa5]
task main()
{
OnFwd(OUT_A,35);
OnRev(OUT_B,50);
Wait(1800);
Off(OUT_AB); //�ヾ蕕領愕�
Wait(500);
OnFwd(OUT_B,25);
Wait(800);
Off(OUT_B);
Wait(500); //�△�でこ
OnRev(OUT_A,30);
Wait(900);
Off(OUT_A);
Wait(500); //�F�の輪郭
OnFwd(OUT_A,45);
OnRev(OUT_B,25);
Wait(650);
Off(OUT_AB);
Wait(500); //�せ輿鞍�
Wait(500); //�ち鞍�
OnRev(OUT_C,40);
Wait(500);
Off(OUT_C);
Wait(500); //ペンを上げる
OnFwd(OUT_B,20);
OnRev(OUT_A,45);
Wait(300);
Off(OUT_AB);
Wait(500); //ペンを左眉の位置まで移動
OnFwd(OUT_C,20);
Wait(500);
Off(OUT_C);
Wait(500); //ペンを下げる
OnFwd(OUT_A,20);
OnRev(OUT_B,30);
Wait(300);
Off(OUT_AB);
Wait(700); //�ズ姑�
OnRev(OUT_C,40);
Wait(500);
Off(OUT_C);
Wait(500); //ペン上げる
OnFwd(OUT_A,20);
OnRev(OUT_B,15);
Wait(400);
Off(OUT_AB);
Wait(700); //ペンを右眉の位置まで移動
OnFwd(OUT_C,30);
Wait(700);
Off(OUT_C);
Wait(500); //ペン下げる
OnRev(OUT_A,30);
OnFwd(OUT_B,10);
Wait(300);
Off(OUT_AB);
Wait(500); //�Ρθ�
OnRev(OUT_C,40);
Wait(500);
Off(OUT_C);
Wait(500); //ペン上げる
OnRev(OUT_A,35);
OnFwd(OUT_B,27);
Wait(650);
Off(OUT_AB);
Wait(500); //ペンを口の位置まで移動
OnFwd(OUT_C,30);
Wait(400);
Off(OUT_C);
Wait(500); //ペン下げる
OnRev(OUT_A,30);
Wait(400);
Off(OUT_A); //�Ц�
Wait(500);
OnRev(OUT_C,50);
Wait(500);
Off(OUT_C);
Wait(500); //ペン上げる
OnFwd(OUT_A,55);
OnRev(OUT_B,20);
Wait(700);
Off(OUT_AB);
Wait(500); //ペンを右目の位置まで移動
OnFwd(OUT_C,30);
Wait(800);
Off(OUT_C);
Wait(500); //�┘撻鷁爾欧同μ椶鯢舛�
OnRev(OUT_C,50);
Wait(510);
Off(OUT_C);
Wait(500); //ペン上げる
OnFwd(OUT_B,40);
OnRev(OUT_A,40);
Wait(200);
Off(OUT_AB);
Wait(500); //ペンを左目の位置まで移動
OnFwd(OUT_C,30);
Wait(1000);
Off(OUT_C);
Wait(500); //��ペンを下げて左目を描く
}
#ref(2012a/A4/Chako/M1/完成品2.jpg,10%,完成品)
**完成品 [#mc84e0f0]
#ref(2012a/A4/Chako/M1/完成品.jpg,10%,完成品)
今までうまくいってたのに、本番では予想外の動きをしまくりでした。電池の残量のせいだと思われる。
**反省・感想 [#v35171da]
アームタイプのロボットなので、曲線は描きやすかったが直線を描くことが非常に困難だった。また、車タイプのロボットよりも電池の残量によって、かなり動きが変わってしまって毎回プログラミングを調整し直すのが大変だった。次回からは、電池の残量などもしっかりとあらかじめ考えてロボットの構想を練ろうと思う。