#author("2019-11-14T16:38:35+09:00","minami","minami")
#contents
*課題1 [#oc041ff5]
パートナーの似顔絵を描くロボットの作成。
*ロボットの説明 [#k66d10b7]
今回作ったロボットはx軸y軸上を動き、さらにz軸でペンが上下するといったものである。~
以下はロボットの各構造と全体の画像である。(左からx軸、y軸、z軸、全体)~
さらに詳しい説明は各構造ごとに下で行う。
**X軸 [#ecf6fdca]
モーターを1つ使いX軸上を動けるようにした。~
後で説明するペンを上下するためのモータ−とくっついているため、2つのモーターを大小4つの歯車で連動させた。~
歯車の内側には小さなタイヤがついており、棒で作ったレールを進むといった仕組みになっている。

**Y軸 [#rf02f59f]
他の2つのモーターを上にのせ動くので、ブロックを複数個使い強化した。~
タイヤは大きいものを4つ使い、そのうち1つにモーターをつけた。~
作成時、モーター側が重くなり動きに支障が出ることが予想されたが動かしてみると以外とスムーズに動いた。

**Z軸 [#j1bc3bdc]
#ref(./IMG_E1726.JPG,400x400,ペンを上下させる構造);
ペンを上げ下げする部分を簡単に図示すると上図のようになる。~
モーターが回転することにより、モーターに固定された棒、棒に固定されたペンが上下する仕組みとなっている。~
特に輪ゴムを使って固定するなどはしなかったが、使えばより安定したかもしれない。
*プログラミングの説明 [#e0af6618]
**defineの定義 [#nc507ada]
 #define pu OnFwd(OUT_A,30);Wait(2700);Off(OUT_A);        //ペンを上げる(z成分)
 #define pd OnFwd(OUT_A,-25);Wait(2700);Off(OUT_A);       //ペンを下げる(z成分)
 #define go_b OnFwd(OUT_B,s,t);Off(OUT_B);                //左右に動かす(x成分)
 #define go_c OnFwd(OUT_C,s,t);Off(OUT_C);                //上下に動かす(y成分)
defineを定義することでプログラミングが綺麗になるようにした。~
また変数は速度(s)と時間(t)の2つ使った。最初は速度を固定していたが変数を用いた方が容易だと考え変更した。

**輪郭 [#ae00f723]
 pd;                                                      //ペンを下げる
 go_c(-25,250);                                           //左側
 RotateMotorEx(OUT_BC,18,45,70,true,true);                //左顎
 go_b(27,270);                                            //顎
 RotateMotorEx(OUT_BC,18,43,-22, true, true);             //右顎
 go_c(25,270);                                            //右側
 pu;                                                      //ペンを上げる
速度と時間を調節した。~
以下は輪郭から眼鏡に移る際のプログラミングである。

 go_b(27,250);go_c(-27,250);

**眼鏡 [#p7d68f02]
 go_b(18,330);go_c(18,200);go_b(-18,320);go_c(-18,200);    //レンズ右側
 pu;
 go_c(18,115);
 pd;
 go_b(-18,260);                                            //真ん中
 pu;
 go_b(-18,340);go_c(-18,150);     
 pd;
 go_b(18,340);go_c(18,210);go_b(-18,330);go_c(-18,210);    //レンズ左側
 pu;
 go_c(18,115);
 pd;
 RotateMotorEx(OUT_BC,18,25,-65,true,true);                //左耳かけ
 pu;
 go_b(30,270);go_c(20,220);
 pd;
 RotateMotorEx(OUT_BC,18,27,23,true,true);                 //右耳かけ
 pu;
パートナーの象徴である眼鏡に1番力を入れた。~
以下は眼鏡から鼻と口に移る際のプログラミングである。
**鼻と口 [#y2e9565f]
 go_b(-30,160);go_c(15,90);
 pd;
 RotateMotorEx(OUT_BC,18,36,55,true,true);                  //鼻
 RotateMotorEx(OUT_BC,18,26,23,true,true);                  //鼻
 pu;
 go_b(25,200);go_c(-22,340);
 pd;
 go_b(20,350);                                              //口
 pu;
輪郭の中に収まるように調節した。~
輪郭を先に描いたので、その中に上手く収まるようにするのに苦労した。

*まとめ [#h6352cc5]
**反省 [#ae7423fc]
同じプログラミングで動かしても、お絵かきの出来に差が出たことから正確さに難点があったと言える。~
重心やロボットの動き方を考慮する必要があったと感じた。次回はより安定したものが作れるように考えていきたい。~
プログラミングについては、綺麗に書けるように意識し、初めてにしてはそれなりに分かりやすいものが出来たと感じた。~
しかし、サブルーチンを使うなど、まだまだ完全の余地があると感じ、改良できたと考えた。~
x軸とy軸で使ったタイヤの直径が異なったため計算するさい苦労した。
**感想 [#l1b8cf82]
想像以上に時間がかかり苦労したが、それなりに分かる顔を描けた時は非常にうれしかった。~
特に線と線が綺麗に繋がったときは感動した。~
次回の課題では今回の反省点を活かしてよりよいものを作りたいと感じた。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS