[[2009b]]
*課題 [#t023d88b]
ロボット、プログラムを工夫して、グループの人の似顔絵を描こう。
*メンバー [#z7375f65]
SHIMA ゆうたろう☆ NISHI
*ロボット概要 [#k829a746]
**製作 [#k59932d3]
当初は、キャタピラを使っていました。そして、僕たちは気づいた…
僕たちの方針じゃあキャタピラは使えないということに。紙の上を進むタイプだと、紙を
巻き込んで全く描けないのですorz
#ref(2000.jpg)
失敗を生かして、タイヤに変更しました〜〜!
現在は、こんな感じです。
#ref(6000.jpg)
↑前
#ref(aaaa.jpg)
↑後ろ
タイヤは、MIND STORMS の組み方を参考にしました。
ペンの仕組みは単純で、ギアに直接つなげたアームにペンを固定して、ギアの回転によりペンを上げ下げさせます。(上の図は、ペンをあげた状態です。)
アームは、ギアで動作を遅くしたのと、稼動したとき下がらないようにペンの固定部分をかるくしました。
また、後ろのゴタゴタした配線は、短い配線の調子が悪かったため、長い配線を使用し束ねたためです。
**プログラム [#g3a53485]
大体の構図はできても、直進や回転の微調整が難しかったです。
以下に、各々の最終的なプログラムをアップします。
SHIMA.ver
#define p 10
task main()
{
//face line start
OnFwd(OUT_B); //down a pen
Wait(p);
Off(OUT_B);
OnRev(OUT_C); //face line (a big circle)
Wait(1200);
OnRev(OUT_B); //up a pen
Wait(p);
Off(OUT_B+OUT_C);
//face line end
//nose start
OnRev(OUT_A); //turn-right (a 90 degree)
Wait(100);
Off(OUT_A);
OnFwd(OUT_A+OUT_C); //go front
Wait(15);
Off(OUT_A+OUT_C);
OnFwd(OUT_B); //down a pen
Wait(p);
Off(OUT_B);
OnFwd(OUT_A+OUT_C); //go front
Wait(30);
Off(OUT_A+OUT_C);
OnRev(OUT_B); //up a pen
Wait(p);
Off(OUT_B);
//nose end
//mouth start
OnFwd(OUT_A+OUT_C); //go front
Wait(15);
Off(OUT_A+OUT_C);
OnFwd(OUT_B); //down a pen
Wait(p);
Off(OUT_B);
OnRev(OUT_C); //turn-left (a 90 degree)
Wait(100);
Off(OUT_C);
OnRev(OUT_B); //up a pen
Wait(p);
Off(OUT_B);
OnRev(OUT_C); //turn-left (a 90 degree)
Wait(100);
Off(OUT_C);
OnFwd(OUT_A+OUT_C); //go front
Wait(70);
Off(OUT_A+OUT_C);
//mouth end
//right eye start
OnRev(OUT_C); //turn-left
Wait(120);
Off(OUT_C);
OnRev(OUT_A+OUT_C); //go back
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_B); //down a pen
Wait(p);
Off(OUT_B);
OnRev(OUT_A+OUT_C); //go back
Wait(30);
Off(OUT_A+OUT_C);
OnRev(OUT_B); //up a pen
Wait(p);
Off(OUT_B);
//right eye end
//left eye start
OnRev(OUT_A+OUT_C); //go back
Wait(30);
OnFwd(OUT_B); //down a pen
Wait(p);
Off(OUT_B);
OnRev(OUT_A+OUT_C); //go back
Wait(30);
Off(OUT_A+OUT_C);
OnRev(OUT_B); //up a pen
Wait(p);
Off(OUT_B);
//left eye end
}
僕(SHIMA)の作品です。↓
#ref(no1.jpg)
↑右目が輪郭の外にはみ出してしまいました。
そして、口と鼻が近すぎました。
#ref(no2.jpg)
↑よく見ると、こんな見方もできます。
ニコちゃんマークがよだれを垂らしています。
NISHI.ver
void lift(){ // ude wo ageru
OnRev(OUT_B); Wait(16);
Off(OUT_B); }
void down(){ // ude wo sageru
OnFwd(OUT_B); Wait(16);
Off(OUT_B); }
void turn_left(int t){ // sasetu
OnRev(OUT_A); OnFwd(OUT_C); Wait(t);
Float(OUT_A+OUT_C); }
void turn_right(int t){ // usetu
OnRev(OUT_C); OnFwd(OUT_A); Wait(t);
Float(OUT_A+OUT_C); }
void go_straight(int t){ // tyokusin
OnFwd(OUT_A+OUT_C); Wait(t);
Float(OUT_A+OUT_C); }
void go_back(int t){ // koutai
OnRev(OUT_A+OUT_C); Wait(t);
Float(OUT_A+OUT_C); }
task main(){
go_straight(30); lift(); // me wo kaku
go_straight(15); down();
go_straight(30); lift();
turn_right(89); go_straight(10);
turn_right(89); go_straight(34);
turn_left(90); go_straight(12); // hana kuti wo kaku
down(); go_straight(20); lift();
go_straight(47); turn_right(89);
down(); go_back(35); go_straight(30);
lift();
turn_right(45); go_straight(116); // rinkaku wo kaku
turn_left(134); down(); go_straight(90);
lift(); go_straight(10);
turn_left(89); down(); go_straight(87);
lift(); go_straight(10);
turn_left(89); down(); go_straight(95);
turn_left(90); // maegami wo kaku
repeat(5){
OnFwd(OUT_C); Wait(20); Off(OUT_C);
OnFwd(OUT_A); Wait(20); Off(OUT_A); }
lift();
}
このプログラムだと、目、鼻、口まではうまく描けるのですが、輪郭が途中から歪んでしまいました。
目、鼻あたりと同じ角度で設定しましたが、設定を変えるべきでした。
#ref(2.jpg)
↑なんかゆる〜いブラック・○ックっぽいかも?
ちなみに これSHIMA(のつもり)です。
ゆうたろう☆.ver
#define pen_up OnRev(OUT_B);SetPower(OUT_B,2);Wait(40);Off(OUT_B); //ペン上げる
#define pen_down OnFwd(OUT_B);SetPower(OUT_B,2);Wait(40);Off(OUT_B); //ペン下げる
#define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右に向く
#define turn_left OnFwd(OUT_C);OnRev(OUT_A); //左に向く
#define stop_wheel Off(OUT_A+OUT_C); //止まる
task main()
{
pen_down;
OnFwd(OUT_A);
Wait(1000);
stop_wheel;
pen_up; //輪郭を描く
OnFwd(OUT_A+OUT_C);
Wait(35);
Float(OUT_A+OUT_C);
turn_right;
Wait(95);
stop_wheel;
OnRev(OUT_A+OUT_C);
Wait(60);
stop_wheel;
pen_down;
OnFwd(OUT_A+OUT_C);
Wait(150);
Float(OUT_A+OUT_C);
pen_up; //帽子を描く
turn_right;
Wait(150);
stop_wheel;
OnRev(OUT_A+OUT_C);
Wait(20);
stop_wheel;
pen_down;
OnFwd(OUT_A+OUT_C);
Wait(30);
stop_wheel;
pen_up; //左目を描く
OnFwd(OUT_A+OUT_C);
Wait(40);
stop_wheel;
turn_right;
Wait(56);
stop_wheel;
pen_down;
OnFwd(OUT_A+OUT_C);
Wait(25);
Off(OUT_A+OUT_C);
pen_up; //右目を描く
turn_left;
Wait(150);
stop_wheel;
OnFwd(OUT_A+OUT_C);
Wait(65);
stop_wheel;
turn_left;
Wait(60);
stop_wheel;
OnRev(OUT_A+OUT_C);
Wait(80);
stop_wheel;
pen_down;
OnFwd(OUT_A+OUT_C);
Wait(30);
stop_wheel;
pen_up; //口を描く
}
僕がプログラムを入力してる最中、西尾君は帽子をかぶってたので帽子を描きました。
鼻がない?なに、気にすることはない。クリリンだって鼻はないじゃない。
気にすることはない。
#ref(911.jpg)
↑
**感想 [#b340e663]
SHIMA :時間との格闘の末、7割ぐらいうまくいったと思います。まだ、手直しが必要な部分があり、改善の余地が必要です。時間の調節が、かなり難しかったです。プログラミングもまだ簡単にできると思うので、試行錯誤したいと思います。
最後に、キャタピラは、お勧めできません。(紙を巻き込むため)なので、皆さんお気をつけ下さい。
NISHI :タイヤでは動作が早すぎて、微調整が難し過ぎました。その点ではキャタピラは最高でした。
ロボットとプログラムのバランスが重要だと学びました。
ゆうたろう☆ :本当は笑い男が描きたかったんDA。点数をつけるなら50点くらいなんDA。あと、キャタピラは罠です。
まだタイヤに変えた後の写真が貼れてなかったり、プログラムに説明がなかったりと終わってないと判断したので、評価はしていません。 FI
写真等はまた補完していただくとして、言葉の説明が少し少なすぎます。ロボットについても、外見だけでなく、どこを工夫したかという点を説明してください。それから、プログラムの中に、コメントとして説明を入れてみてください。ページの見た目を見やすくするためにも、ソースは半角空白ではじめて整形済みテキストにするなどを徹底してください。他の点も、[[整形ルール]]を参考して直してみてください。 こさか(KA)
ページの整形ができて、格段に見やすくなりましたね!ロボットの説明については、言葉の説明だけでは少し分かりづらい点(例えばペンまわり)の写真もあった方がいいかと思います。プログラムのコメントには日本語の文字や文章を使っていただいてかまいません(もちろん、英語でもいいですが、私は苦手です。笑)。プログラムの説明をもう少し詳しくするとわかりやすいです。例えば、一口に「目を描く」といっても、目の位置に移動する、どんな線を描く(直線、曲線等)というように色々あります。それから、[[コメントフォーム>整形ルール#x23849ca]]をつけていただけると、こちらとしては楽でいいです。 こさか
ロボットの説明に関しては、こさかさんの言うとおり、ペンの上げ下げの写真や図があった方がいいです。工夫した点や構造・機能がわかりにくい点は焦点をあてて説明していきましょう。また、一人目のプログラムはサブルーチンや関数を使った方がすっきりすると思います。 FI