*課題1 ロボッッタ君が水を書く♪ [#c6872e82] *〜ロボッッタ君〜 [#f970a5a1] &ref(kadaimizu.jpg); *このロボになるまでの製作過程 [#z520e875] -製作当初は、ペンを固定するためにどうすればいいか悩んでいた 壁を作って固定してみたり、ゴムを使って固定してみたり、 タイヤを四方に配置してみたりと挑戦したが完璧に固定されず 悉く失敗... -そしてついにアームをつけるという考えに至った。2本の黄色い アームは、棒を2本入れることにより確実にペンを固定するもの である。 この黄色いアームこそこのロボの最大の特徴である。 -第二の特徴はタイヤが前輪だけという点である。4輪で書かせて いたときは紙がどうしても動いてしまうという問題に直面していた。相談の結果、ロボ自身が押さえればいいという判断に至り、後輪を外したのである。そしてこの問題も解決したのである。 *ぷろぐらむ1(試作) [#f6cfe69c] // 作成者:コミ // 作成日:2006-5-21 task main () { OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //1画目 AとCのモータ正回転 Wait(160); Float(OUT_A+OUT_C); OnRev(OUT_C); //Cのモータ逆回転(右回転) Wait(30); Float(OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnFwd(OUT_C); //Cのモータ正回転 Wait(65); Float(OUT_C); OnRev(OUT_C); Wait(180); Float(OUT_C); OnRev(OUT_B); Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //2画目 AとCのモータ正回転 Wait(60); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //AとCのモータ正回転 Wait(10); Float(OUT_A+OUT_C); OnRev(OUT_A); //Aのモータ逆回転(左回転) Wait(90); Float(OUT_A); OnRev(OUT_A+OUT_C); //AとCのモータ逆回転(後進) Wait(30); Float(OUT_A+OUT_C); OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //AとCのモ−タ正回転 Wait(85); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnRev(OUT_A+OUT_C); //AとCのモータ逆回転 Wait(10); Float(OUT_A+OUT_C); OnRev(OUT_C); //Cのモータ逆回転 Wait(90); Float(OUT_C); OnRev(OUT_A+OUT_C); //AとCのモータ逆回転 Wait(100); Float(OUT_A+OUT_C); OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //3画目 AとCのモータ正回転 Wait(60); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //AとCのモータ正回転 Wait(100); Float(OUT_A+OUT_C); OnRev(OUT_A); //Aのモータ逆回転 Wait(175); Float(OUT_A); OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //4画目 AとCのモータ正回転 Wait(90); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); } *難しかった点 [#ud29d33c] ロボットのプログラミングは始めてだったので試作プログラムにかなりの時間を費やした。 とりあえずOnFwdやOnRevだけで書いてみた。 しかしそれでは修正するのにとてもめんどくさいと感じた 特に水の2画目、3画目がたいへんだった。書き始めの位置を決めるのがとても苦労した。何度プログラムを直したことか... しかしまだ完璧ではなく微妙にバランスが悪い... *ぷろぐらむ2(改良) [#ycaf6234] // 作成者:コミ // 作成日:2006-5-24 #define PEN_UP 4 //ペンを持ち上げる #define PEN_DOWN 4 //ペンを下げる #define go_straight(t) OnFwd(OUT_A);OnFwd(OUT_C);Wait(t);Float(OUT_A+OUT_C); #define go_straight1(t) OnRev(OUT_A);OnRev(OUT_C);Wait(t);Float(OUT_A+OUT_C); #define turn_left(t) OnRev(OUT_A);Wait(t);Float(OUT_A); #define turn_right(t) OnRev(OUT_C);Wait(t);Float(OUT_C); #define turn_left1(t) OnFwd(OUT_C);Wait(t);Float(OUT_C); #define pen_up OnFwd(OUT_B);Wait(PEN_UP);Off(OUT_B); #define pen_down OnRev(OUT_B);Wait(PEN_DOWN);Off(OUT_B); task main() { pen_down; //1画目 go_straight(160); //1.6秒間前進 turn_right(30); //0.3秒間右旋回 pen_up; turn_left1(65); turn_right(180); //1.8秒間右旋回 pen_down; //2画目 go_straight(60); //0.6秒間前進 pen_up; go_straight(10); //0.1秒間前進 turn_left(90); //0.9秒間左旋回 go_straight1(30); //0.3秒間後進 pen_down; go_straight(85); //0.85秒間前進 pen_up; go_straight1(10); //0.1秒間前進 turn_right(90); //0.9秒間右旋回 go_straight1(100); //1秒間後進 pen_down; //3画目 go_straight(70); //0.7秒間前進 pen_up; go_straight(100); //1秒間前進 turn_left(175); //1.75秒間左旋回 pen_down; //4画目 go_straight(90); //0.9秒間前進 pen_up; } *工夫した点 [#c17b5b74] 試作プログラムをマクロを使って書き換えた。マクロを使うことによってプログラムが見やすくなった。 試作プログラムは直すのにめんどうだったが、マクロを使い直しやすくした。 *反省点 [#n81e64ec] プログラムはまだ試作なので、これを改良したプログラムを完成させたい。(5月23日) ペンを持ち上げる部分のギア比を変えてスピードを落とせばよかった。 ペンをうまく調整しないと、たまに字が書けない時があるのが残念だ。 時間に余裕を持たせてやっていたつもりだったが、かなり時間がたりなかった。 なので次回はもっと余裕を持たせてやりたい。 *かんそう [#x557641d] 初めての課題だったので手探り状態だった。ペンを持たせるためにはどうすればいいかでかなり考えた。 「水」を書くぷろぐらむでも結構長いのに驚いた。 苦労の末に「水」を書くプログラムがなんとか完成してよかった。 -ロボッッタ君のこと(5月12日/15日) ペンをどうやって持たせるか、どのようにして上げ下げするかでちょっと困った。。。 タイヤ?キャタピラ?相談の結果、タイヤに決定☆ が、しかし、ペンのためにタイヤを4個使ったため、 ロボッッタ君本体はかたむいているようだ(>_<) -ロボッッタ君が初めて字を書いた日(5月19日午後六時) ロボは紙からはみ出すくらい、おっきな水の一角めを書いた。 そこにあった蛍光ペンで、そこに落ちていた紙の上に… -今日(5月19日)の課題 いつの間にか点を打つだけのロボットになってしまった、ロボッッタ君。 ちゃんと字を書けるようにがんばって!!! *コメント [#ra358be9] -コメントをどうぞ -マクロやコメントをたくさん用いていて、良いですね。プログラムが見やすいです。 -- [[ゆき(TA)]] &new{2006-05-26 (金) 16:44:53}; -ロボットの構造についても、もっと説明があると良いと思います。 -- [[ゆき(TA)]] &new{2006-05-26 (金) 16:45:25}; #comment