[[2016a/Member]]

目次

#contents

*はじめに [#qe1893f6]

課題は自分の似顔絵を描くロボットを製作することである。

詳しい内容として、

•マクロや関数、サブルーチンなどを使い、main関数がなるべく単純になるようにプログラムを作ること。

•定数名やマクロなどは分かりやすい名前を用いること

•余裕をもってA4の紙の中に収まる大きさにすること。いくら小さくてもよい。

•ペン以外はキットの部品を使うこと

•輪ゴムは切れやすく高価なので慎重に扱い、張力がかかりすぎないようにすること。


*ロボットの説明 [#hd00b836]
【本体図】
&ref(image4.jpg);
&ref(image5.jpg);
&ref(image6.jpg);

ロボットの先端部分に新しくモーターを取り付け、モーターが動くことによりペンの上下を行えるようにした

ペンを固定する輪ゴムは両脇の部分に取り付け、ペンが上下してもブレないようにした。

この機構を取り付けたのはロボットの先端部分だったので、線と線を繋げることに少し苦労した。詳しいことはプログラムの項に記す。

*プログラムについて [#s8fe1ea6]
**定義の説明 [#g7ef7978]
 #define UP_TIME 200 
 #define DOWN_TIME 200 
 #define up Off(OUT_AC);OnRev(OUT_B,100);Wait(UP_TIME);Off(OUT_B); //ペンを上げる
 #define down Off(OUT_AC);OnFwd(OUT_B,100);Wait(DOWN_TIME);Off(OUT_B); //ペンを下げる
 #define TURN_TIME 800
 #define SPEED 50
 #define turn_left Off(OUT_BC);OnFwd(OUT_A,SPEED);Wait(TURN_TIME);Off(OUT_A); //左回転
 #define turn_right Off(OUT_AB);OnFwd(OUT_C,SPEED);Wait(TURN_TIME);Off(OUT_C); //右回転
 #define go_forward(t,s);Off(OUT_B);OnFwd(OUT_AC,s);Wait(t);Off(OUT_AC); //前進する
 #define turn_here(t,s);Off(OUT_B);OnFwd(OUT_A,s);OnRev(OUT_C,s);Wait(t);Off(OUT_AC); //その場で方向転換する 
 #define go_back(t,s);Off(OUT_B);OnRev(OUT_AC,s);Wait(t);Off(OUT_AC); //後退する

簡潔なプログラムになるように定義を多めに設定した。

**プログラム [#w9c05eac]
 task main()
 {
 go_forward(1000,40);
 up;
 go_forward(1100.80);
 turn_here(900,60);
 go_back(1100,80);
 down;
 go_forward(1200,40);
 up;
 go_forward(1100,80);
 turn_here(200,60);
 go_back(1100,80);
 down;
 go_forward(800,40);
 up;
 go_forward(1100,80);
 turn_here(1000,60);
 go_back(1100,80);
 down;
 go_forward(800,40);
 up;           
 go_forward(1100,80);
 turn_here(400,60);
 go_back(1100,80);
 down;           
 go_forward(1300,40);
 up;                      //輪郭
 go_forward(1800,40);
 turn_here(850,60);
 go_back(1100,80);
 down;
 go_forward(450,40);      //左目
 up;
 go_forward(100,40);
 down;
 go_forward(450,40);      //右目
 up;
 turn_here(600,60);
 go_forward(600,40);
 turn_here(1200,60);
 down;
 go_forward(600,40);     //口
 up;                      
 Off(OUT_ABC);
 }

ペンは下げた状態から始める。

輪郭と目と口はすべて直線で表現している。

輪郭を描く際、直線を引いた後そのまま方向転換すると線と線が繋がらなくなってしまうので 直線を引く→ペンを上げる→直進する→方向転換→後退する→ペンを下ろす というようにして、線と線が繋がるようにしている。

*完成した似顔絵 [#g55e3e61]
&ref(image3.JPG);

マッキーペンが裏写りしたり、ロボットを設置するときに誤って引いてしまった線があったりと非常に見辛くなっているが、赤で囲ったところが似顔絵の部分である。

似顔絵についての反省をここに記す

\と線が繋がってない~
これは、単純に試行回数が少なく調整不足であったこと、思ったよりロボットが進むスピードが速かったので、ズレが大きくなり線と線が繋がらなくなったりしたことが原因と考えられる。もっと遅いスピードに設定したほうが良かった。


∪が真っすぐ引かれていない~
これは、ペンの固定の仕方が原因であると考えられる。人がペンを握るように、もっと先端部を固定したほうが真っすぐとした線が引けると思う。
これは、ペンの固定の仕方が原因であると考えられる。人がペンを握るように、もっと先端部のほうを固定したほうが真っすぐとした線が引けると思う。

*反省と感想 [#i79c7045]

・ロボットの先端部にペンの機構を取り付けたので、全体としては大きいロボットになってしまった。~
そのため実際に描いた顔も大きくなってしまい、しばしば紙からはみ出てしまったので次回からはコンパクトにロボットを作りたい。

・他のグループを見ると、スピードを遅く設定したほうが安定して動いていると感じたので次回からは速いスピードはできるだけ設定しないようにしたい。

・電池残量などの都合もあり、毎回描けた顔が違って大変だった。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS