'''&size(50){もくじ};'''


#contents

*メンバー[#f44996f5]
-風魔tk
-キングオブハート

の二人でーす。よろしーく
*今回の方針 [#db9c756b]
-ペンの昇降と、マシンの移動で似顔絵を書く。
-方向転換の際にペンの位置がずれるのが面倒だと感じたので、マシンの回転中心にペンを配置する。
--これによりカクカクの線がとても書きやすくなるはずである。
-ゴムは高価なので使わないようにする。
-なるべくスタイリッシュにする。


*今回作ったロボット [#a6cb101f]

#ref(./PPP2.jpg)
#ref(./ooo.jpg)

不格好だけどかなり頑丈。スタイリッシュではないが、まあ良しとしよう。


*ロボット製作 [#u336def8]
まったくのオリジナルは大変だと感じたので、初めに作ったロボをちょっと分解し、左右のタイヤ間の距離を広げ、マシン中央にペンの昇降機を配置する。

#ref(./P1010349_2.jpg)

**ペンの昇降機について [#v5262b65]
ペンをしっかり固定するために、モーター直結のタイヤ1つと、補助のタイヤ2つでペンを上下させるオーソドックスなものにした。

#ref(./pen.jpg)
**本体について [#obd1efb9]
-タイヤ間を広げた結果、メインフレームがふにゃふにゃになったので、あまりのパーツで補強する。
--(マシンが縦に長くなりそうだったので、フレームの下部から補強した。) 
-ペンが真ん中にくるように昇降機を配置すると、RCX本体が置けなくなり、左右非対象になってしまった。重量のバランスをとるため、反対側にブロックを大量に載せた。

-RCX本体がやたらと外れるので上から補強しようとしたが、やめた。

*似顔絵 [#h6184533]
相方の似顔絵をできる限り似せて描きます。

**プログラム [#xc5a8458]
風魔tkのプログラム↓

 #define  down OnRev(OUT_B);Wait(5);Off(OUT_B);  //ペン5秒を下げる
 #define  up  OnFwd(OUT_B);Wait(5);Off(OUT_B);  //ペンを5秒上げる
 #define  go_st(t)  OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);  //t秒前に進む
 #define  turn_r(t)    OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_C+OUT_A);  //右にt秒その場で回転
 #define  turn_l(t)     OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);   //左にt秒その場で回転  
 task main(){
                down;
                go_st(100);//輪郭始め
                turn_l(45);
                go_st(100);
                turn_l(130);
                go_st(100);
                turn_l(50);
                go_st(100);
                turn_l(110);
                go_st(100);//輪郭終わり
                up; 
                turn_l(147);     
                go_st(30);
                turn_l(60);
                down;
                go_st(30);//左目
                up;            
                go_st(20);
                down;
                go_st(30);//右目
                up;
                turn_r(140);
                go_st(50);
                down;
                go_st(25);//鼻
                turn_l(100);
                go_st(25);
                up;
                go_st(40);
                turn_r(137);
                down;
                go_st(40);//口
               }


キングオブハートのプログラム↓

 #define up  OnFwd(OUT_B);Wait(6);Off(OUT_B); //ペン上げ
 #define down  OnRev(OUT_B);Wait(6);Off(OUT_B); //ペン下げ
 #define left45  OnFwd(OUT_A);OnRev(OUT_C);Wait(54);Off(OUT_A+OUT_C);//左に45°回転
 #define right45  OnFwd(OUT_C);OnRev(OUT_A);Wait(53);Off(OUT_A+OUT_C);//右に45°回転
 #define left90  OnFwd(OUT_A);OnRev(OUT_C);Wait(105);Off(OUT_A+OUT_C);//左に90°回転
 #define right90  OnFwd(OUT_C);OnRev(OUT_A);Wait(105);Off(OUT_A+OUT_C);//右に90°回転
 #define left30  OnFwd(OUT_A);OnRev(OUT_C);Wait(70);Off(OUT_A+OUT_C);//左に60°ほど回転
 #define right30  OnFwd(OUT_C);OnRev(OUT_A);Wait(70);Off(OUT_A+OUT_C);//右に60°ほど回転
 #define masu1  OnFwd(OUT_A+OUT_C);Wait(20);Off(OUT_A+OUT_C);//1マス進む
 #define masu2  OnFwd(OUT_A+OUT_C);Wait(40);Off(OUT_A+OUT_C);//2マス進む
 #define masu3  OnFwd(OUT_A+OUT_C);Wait(60);Off(OUT_A+OUT_C);//3マス進む
 #define masu4  OnFwd(OUT_A+OUT_C);Wait(80);Off(OUT_A+OUT_C);//4マス進む
 #define back_masu1  OnRev(OUT_A+OUT_C);Wait(20);Off(OUT_A+OUT_C);//1マス下がる
 #define back_masu2  OnRev(OUT_A+OUT_C);Wait(40);Off(OUT_A+OUT_C);//2マス下がる
 #define naname1  OnFwd(OUT_A+OUT_C);Wait(26);Off(OUT_A+OUT_C);//正方形1マスの対角線分すすむ
 #define naname2  OnFwd(OUT_A+OUT_C);Wait(52);Off(OUT_A+OUT_C);//正方形2マスの対角線分すすむ
 #define back_naname1  OnRev(OUT_A+OUT_C);Wait(26);Off(OUT_A+OUT_C);//正方形1マスの対角線分下がる
 
 task main()
 {
 down;     //顔の輪郭
 masu2
 left45
 naname2
 left45
 masu2
 left45
 naname2
 left45
 masu4
 left45
 naname2
 left45
 masu2
 left45
 naname2
 left45
 masu3    //顔の輪郭終了
 right45   //髪を描く
 back_naname1
 right90
 back_naname1
 right90
 naname1
 right90
 naname1
 right90
 back_naname1
 right90
 back_naname1 //髪終了
 up           //左目まで移動
 naname2
 left45 
 down         //左目
 back_masu1 
 up           //右目まで移動
 masu4 
 down         //右目
 back_masu1 
 up           //鼻の上まで移動
 back_masu1 
 left30       //鼻を描く
 down
 back_masu1
 left90
 OnRev(OUT_A+OUT_C);Wait( 10   );
 Off(OUT_A+OUT_C);          //ここまで鼻
 up                    //口の右端まで移動
 OnRev(OUT_A+OUT_C);Wait(  10  );
 Off(OUT_A+OUT_C);
 left90          //口をかく
 down
 OnFwd(OUT_A+OUT_C);Wait( 10   );
 Off(OUT_A+OUT_C);
 right30
 masu1           //口終了
 up        //ペンをあげる
 } 

@@
方眼紙を利用してプログラムを書いたため「ななめ1マス」とか書いてありますが、ゆるしてやってください。

**できた似顔絵 [#t131c86d]
tk
#ref(./koba.jpg)
キング
#ref(./king.jpg)
*工夫点 [#n8f024e8]
ペンの昇降機とRCX本体を載せただけだと、昇降機が外れたり、旋回がうまくいかなかったり、大変だったが、昇降機の補強のパーツがちょうど重量バランスをとってくれたので、
*工夫点 [#n8f024e8] 
他とは少し違うロボにするために幅を広くしてペンをロボの中心に置いた。旋回を確かなものとするためにRCXとの重量バランスを考えてパーツを多めにした。

*感想 [#b0c2d829]
-風魔tk 

時間配分を間違えた。もっと余裕を持って製作したい。

-キングオブハート 

最初は戸惑ったが、なんとかうまい具合にいったような気がする。
予想より歪んだ。
*コメント [#z236ac0a]

なんかあったらコメントくださいねー。
- きちんとポイントを書いていると思います。サブルーチンや関数をつくる際には、どのようにわけるかをいろいろ考えてみると良いです。例えば、二人目のプログラムでは角度ごとに作っていますが、一つの方向(モーター)について一つだけ作って秒数を変えるという方法もあります。また、45°、60°90°しか作らないのならば、15°回転をつくり、それぞれ3回、4回、6回繰り返すという方法もあります(つまり、共通部分だけ作って、違う部分だけ別の命令を行うということ)。 -- [[FI]] &new{2010-05-21 (金) 08:09:16};
- 工夫点などもまとめてみて下さい -- [[TAKA]] &new{2010-05-21 (金) 13:28:51};

#comment

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