#contents
*制作したロボット [#tce9e6f1]
以下の写真が私達が制作したロボットです。サンプルのロボットにペン固定アームを取り付けたシンプルな構造です。
&ref(ロボット1.jpg);
アームは本体正面から見て左側に取り付けました。
赤で示した部位でペンを固定し、青で示したモーターでペンの上げ下げを行います。
このアームのメリットはペン固定部位がレゴブロックのみでででいている為、、テープやゴムなどが必要ありません。
また、部品の数は最少限に抑えているので、非常にシンプルで微調整もしやすいです。
*似顔絵 [#aad8d3bc]
以下に今回ロボットで描いた似顔絵とその書き順を示します。
書き順としては、初めに輪郭から初めて、髪の毛、口、鼻、目の順に書き進めています。
wait時間などは何度か試行を繰り返し、調節しました。
髪の毛の描写の際には、調整をしやすくするためforの繰り返し文を使用しました。
&ref(似顔絵.JPG);
&ref(書き順.jpg);
*プログラム [#x801aeb5]
**定義 [#af3a23ff]
前進や、後退の際、一度にモーターの出力と、稼働時間を決められるようなdefineを作りました。
ペンの上げ下げはペンを下げる際の稼働時間を少し長めにとりました。
#define SPEED 75
#define turn_left(t,w1,w2) OnFwd(OUT_A,w1); OnRev(OUT_C,w2); Wait(t);Off(OUT_AC); //モーターA,Cがそれぞれw1,w2の出力で稼働時間tの間左に旋回する。
#define turn_right(t,w1,w2) OnFwd(OUT_C,w1); OnRev(OUT_A,w2); Wait(t);Off(OUT_AC); //モーターA,Cがそれぞれw1,w2の出力で稼働時間tの間右に旋回する。
#define pen_up OnFwd(OUT_B,5);Wait(1000);Off(OUT_B); //ペンを上げる動作。
#define pen_down OnRev(OUT_B,5);Wait(1010);Off(OUT_B); //ペンを下げる動作。
#define go_rev(t,s1,s2) OnRev(OUT_A,s1); OnRev(OUT_C,s2); Wait(t); Off(OUT_AC); //モーターA,Cがそれぞれs1,s2の出力で稼働時間tの間後退する。
#define go_fwd(t,s1,s2) OnFwd(OUT_A,s1);OnFwd(OUT_C,s2);Wait(t);Off(OUT_AC); //モーターA,Cがそれぞれs1,s2の出力で稼働時間tの前進する。
#define en1 OnFwd(OUT_A,20);OnFwd(OUT_C,50);Wait(5300);Off(OUT_AC); //輪郭を描く円周動作
**冒頭及び輪郭 [#z1728dfa]
輪郭は結局、始点と終点が完全に一致することはありませんでした。
task main()
{
pen_up ;
pen_down ;
en1 ;
pen_up ;
pen_down;
**髪の毛 [#z1728dfa]
int i;
for(i=1;i<=6;i++){
OnRev(OUT_A,30);
Wait(400);
Off(OUT_AC);
OnRev(OUT_C,30);
Wait(400);
Off(OUT_AC);
}
**口 [#z1728dfa]
pen_up;
turn_right(300,50,50);
go_fwd(500,50,50);
pen_down;
go_fwd(350,40,40);
pen_up;
**鼻 [#z1728dfa]
go_rev(500,50,50);
turn_left(300,30,30);
go_fwd(300,40,40)
pen_down;
turn_right(300,30,30);
go_fwd(200,30,30);
pen_up;
**目 [#z1728dfa]
go_rev(400,40,40);
turn_left(200,40,40);
pen_down;
turn_right(200,20,20);
pen_up;
turn_left(200,20,20);
go_fwd(600,50,65);
pen_down;
turn_right(200,20,20);
}
*反省点と感想 [#r1755b51]
床の状況や、紙の材質、ペンの種類などによって、できる似顔絵の様相が大きく異なった事から今後は、センサーなどを用いて様々な状況に対応できるロボットを作るべきだと思いました、
また、今回のプログラミングでは同時に1つの動作しか命令できなかったので、今後は同時に並列して複数の動作を行えるようなプログラミングをしていきたいです。
しかし、似顔絵自体は人の顔だと認識できるものが出来上がって良かったです。
しかし、似顔絵自体は人の顔だと認識できるものが出来上がって良かったです。