[[2009a]]
*目次 [#pddf8a4f]
#contents
*課題1:似顔絵ロボットを作る [#sd29fb5e]
**メンバー [#i67fff3a]
つっちー&しゅーた
**ロボットについて [#y66d6625]
***外形 [#oe1c3eda]
僕たちは始め「なんか強そう•••」とかゆう理由でキャタピラのマシンを作りました。
僕たちは最初「なんか強そう・・・」とかゆう理由でキャタピラのマシンを作りました。

で、似顔絵を書くに当ってデカいし少し動きづらいので、タイヤの方に変えようと一時期思いましたが、やはり最初の印象は強かったのか、またタイヤは動きが早すぎてうまく描けないんじゃないかと判断しキャタピラのままでいくことを決心しました。
#ref(2009a/A6/課題1左/NEC_0003.JPG,30%)
***ペンの固定の仕方、描き方 [#d1964443]
ペンはZEBRAのマッキーを使用しました。

固定の仕方としては、このモーターで
固定の仕方としては、最初はタイヤを用いた固定法を考えたのですが、どこにどうゆう風に取り付けたらいいのかわからず挫折しました。

なのでこのような感じで、付属部品を駆使して、モーターを取り付け、ペンを付属のゴムで巻き付けるシンプルなものしました。なんせ本体がデカいっすから(泣)

描き方はモーターを回転して上げ下げさせるごく単純な方法ですが、これを作るのにまた意外と苦労しましたf(^_^);
#ref(2009a/A6/課題1左/NEC_0002.JPG,30%)
***工夫した点 [#f5dcfeb5]
作り始めた初期の頃、モーターでペンを下げて描く時にペンへの力が足りないのか線が点線になってしまったり、薄くなってしまったりしてました。

そこで、「じゃあもっと力を加えて濃くはっきりしてやろう!!」と素晴らしい発想をし、描いている間もモーターを回転させた状態にしておく手法を取りました。

しかし↓↓

今度はモーターを取り巻く付属部品に力がかかり、崩壊・・・(・o・;)↓↓

その後あれこれ考えた末、描いてる間ペンに適当な圧力をかけてくれる素晴らしい部品を発見しました。それこそまたまた付属のゴムでした(笑)

今回は本当に付属のゴムが僕たちを救ってくれました(;^_^A

ゴムによってペンに左斜め下方向に力をかけ、ペンを下に押さえつけました。

これが僕らなりの工夫です。

***反省点 [#t4892f08]
ペンの固定位置が悪かったような気がします。

ロボットの動きとペンの動きが違ったのでプログラミング時に苦労しました。

なのでもう少し固定位置を考えるべきでした。

**プログラミングについて [#t7c713ff]
***つっちーの [#kf193c52]
***しゅーたの [#e86cff9c]

***つっちーの [#i1536264]
マクロを使い長かったプログラムが、短くなりました。
 #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
 //↑前に進む
 #define pen_up OnFwd(OUT_B);Wait(20);Off(OUT_B);//ペンを上げる
 #define pen_down OnRev(OUT_B);Wait(20);Off(OUT_B);//ペンを下げる
 task main()
 {
 OnFwd(OUT_A);
 OnRev(OUT_C);          //輪郭を書く
 Wait(720);             //ペンがロボットの回転軸からかなり離れたところにあるので
 Off(OUT_A+OUT_C);      //その場で回転するだけでかなり大きい円が描けます。
 pen_up;                 
 OnRev(OUT_C);          //ここもペンがロボットの斜め後ろに付いているので、
 Wait(405);             //片方だけキャタピラを動かして方向転換をするだけで
 Off(OUT_A+OUT_C);      //ちょうど目ぐらいの高さにペン先がきます。
           //あとは直進しながらタイミングよくペンを上下させるだけで目が描けます
 pen_down;
 go_straight(16);        //右目を書く
 pen_up;
 go_straight(16);        
 Off(OUT_A+OUT_C);
 pen_down;
 go_straight(16);        //左目を書く
 pen_up;
 Off(OUT_A+OUT_C);
 OnFwd(OUT_C);           //ここでも方向転換をするだけで
 Wait(400);              //ペン先がちょうど鼻の位置に来ます
 Off(OUT_A+OUT_C);
 pen_down;                //後はペンを下げて
 OnRev(OUT_A+OUT_C);
 Wait(30);             //鼻を書くだけです
 Off(OUT_A+OUT_C);
 pen_up;                //最後にちゃんとペンを上げて
 Off(OUT_A+OUT_C);     //終了です
 }
***しゅーたの [#t59c9536]
僕もマクロを用いて少しは省略できました↑↑
 #define pen_up OnFwd(OUT_B);Wait(30);Off(OUT_B);  //ペンを上げる。
 #define pen_down OnRev(OUT_B);Wait(30);Off(OUT_B); //ペンを下げる。
 task main()
 {
   pen_down;
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(660);  
   Off(OUT_A+OUT_C);  //輪郭を描く。
   pen_up;
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(180);
   Off(OUT_A+OUT_C);
   OnRev(OUT_A+OUT_C);
   Wait(110);
   Off(OUT_A+OUT_C);
   pen_down;
   OnFwd(OUT_A+OUT_C);
   Wait(50);
   Off(OUT_A+OUT_C);  //左目を描く。
   pen_up;
   OnFwd(OUT_A+OUT_C);
   Wait(20);
   Off(OUT_A+OUT_C);
   pen_down;
   OnFwd(OUT_A+OUT_C);
   Wait(50);
   Off(OUT_A+OUT_C);  //右目を描く。
   pen_up;
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(200);
   Off(OUT_A+OUT_C);
   pen_down;
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(120);
   Off(OUT_A+OUT_C);  //口を描く。
   pen_up;
 }
**完成品 [#s7d8bebe]
***つっちーの [#oe67af14]
***しゅーたの [#j9d48db2]
***つっちーの(しゅーたの顔) [#if6cb99a]
円を書いたはずなのにつながっていません(>_<)
色々といじくり回しているうちに時間が無くなり結局これになちゃいました。
もっと、計画的に取り組めば良かったと思います。
#ref(2009a/A6/課題1左/NEC_0005.JPG,30%)
***しゅーたの(つっちーの顔) [#h794d542]
やっぱりキャタピラの振動で、微妙に点線になってしまいました↓

でも結構似てると思います!!
#ref(2009a/A6/課題1左/NEC_0004.JPG,30%)

*感想 [#q1e3243a]
キャタピラ独特のズレに苦労しました。同じプログラミングでも一回ごとにズレが出てしまい、waitの時間設定がとても大変でした。
このせいで、前髪のギザギザや、楕円に近い顔の輪郭等をあきらめざるを得ませんでした
また、直線からカーブ カーブから直線がうまくできず、大変でした。
でも久しぶりにこの課題で一つのことにパートナーと取り組むとゆうことをして、チームワークの大事さなどがわかりました。これからも頑張ります!!

なにかありましたら、コメントお願いします。
- ロボットの説明はOKです。欲を言えば、ペンの上げ下げ部分の説明がもう少し欲しいです。付属のゴムをどう使ったら点線を回避できたのでしょう…?プログラムの説明ももっと描いてください! -- [[こさか]] &new{2009-05-21 (木) 22:42:39};
- また、「ひとりにつき一つ以上のプログラムを作成すること。」の条件がありますので、誰が書いたプログラムか明記してください。 -- [[こさか]] &new{2009-05-21 (木) 22:43:03};
- ゴムの使い方は分かりましたが、つっちーさんのプログラムにはもっと説明が欲しいところです。 -- [[こさか]] &new{2009-05-28 (木) 23:55:13};
-ペンの固定方法について詳しく書いているのは良いと思います。ギア比やパワーを下げて押すといった方法もありますが。~
また、細かいことですが~
#define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);~
のようにすれば、go-straight(時間)とするだけですみます~
penupやpenduの次に必ずwait(20)を入れるならそれもマクロに組み込んだほうがよいと思います。
-- [[FI]] &new{2009-06-12 (金) 03:15:40};
- 全体は合格点です。欲を言えば、マクロの名前はある程度の文字数があってわかりやすいものにしたほうが良いと思います(次のプログラムからでいいです)。aとかcだと、ぱっと見たときに解りづらいかもしれません。 -- [[こさか]] &new{2009-07-02 (木) 21:12:21};
- マクロが適切に書き換えられて、とても見やすくなりました!説明も分かりやすくなっています。 -- [[こさか]] &new{2009-07-10 (金) 12:53:56};


#comment


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