- 追加された行はこの色です。
- 削除された行はこの色です。
2009a/A9/課題1右
目次~
┣課題の概要~
┣メンバーの紹介~
┣ロボットの解説~
┣プログラムの解説~
┗感想~
┣[[課題の概要:http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2FA9%2F%B2%DD%C2%EA%A3%B1%B1%A6#ye9bf82d]]~
┣[[メンバーの紹介:http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2FA9%2F%B2%DD%C2%EA%A3%B1%B1%A6#pe2a50a9]]~
┣[[ロボットの解説:http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2FA9%2F%B2%DD%C2%EA%A3%B1%B1%A6#ea115a11]]~
┣[[プログラムの解説:http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2FA9%2F%B2%DD%C2%EA%A3%B1%B1%A6#faf34912]]~
┣[[感想:http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2FA9%2F%B2%DD%C2%EA%A3%B1%B1%A6#xa1e39f8]]~
┗[[コメント欄:http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2FA9%2F%B2%DD%C2%EA%A3%B1%B1%A6#g954dcb2]]~
&aname(gai);
*課題の概要 [#ye9bf82d]
*メンバーの紹介 [#pe2a50a9]
かおりん
4輪ロボットが、ペンをうまく使って、パートナーの似顔絵を描くというもの。
&br;ペンで書くためにアームなどを使って、上げ下げし、タイヤの動きを見て、うまく書いてゆく
*メンバーの紹介 [#pe2a50a9]
かおりん(♂)~
はやぶさ…50m8秒2~
*ロボットの解説 [#ea115a11]
#ref(kr1.jpg)
このロボットの名前を『気まぐれロボ』と命名しました。理由は、時々タイヤが動かなくなることが起きるからであります。(ちゃんと説明書通り作りました)
&br;では気まぐれロボの解説をしたいと思います。~
#ref(kr2.jpg)
まずは全体像から。~
電源を見栄えをすっきり見せるために、後ろに立てる話もありましたが、電池が重いので、バランスを考えて一番上に置くようにしました。
#ref(kr3.jpg)
&br;次にアームです。2本のパーツを使い、書くときのペンの安定性を重視しました。これで書いているときも、上げ下げしているときもずれたり、落ちたりしません。またペンを動かすにいたるために、このようにギアを繋ぎ合わせていきました。
#ref(kr4.jpg)
*プログラムの解説 [#faf34912]
#ref(kao(kaorin).jpg)
かおりん作
void down_pen() ここでペンを下ろす動作を関数にします
{
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
Wait(30);
}
void up_pen() ここでペンを上げる動作を関数にします
{
OnRev(OUT_B);
#ref(kao(kaorin).jpg)
void down_pen() ここでペンを下ろす動作を関数にします
{ OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
}
Wait(30); }
void up_pen() ここでペンを上げる動作を関数にします
{ OnRev(OUT_B);
Wait(10);
Off(OUT_B); }
task main()
{
OnRev(OUT_A); 円を描いて輪郭を書きます
{ OnRev(OUT_A); 円を描いて輪郭を書きます
Wait(800);
Off(OUT_A);
Wait(30);
up_pen(); ペンを上げます
OnFwd(OUT_A); 右目尻へ移動するために方向転換
OnRev(OUT_C);
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_A+OUT_C); 右目尻へ移動開始
Wait(75);
down_pen(); 書き始めます
down_pen(); 書き始めます
up_pen(); 右目を書き終えたのでペンを上げます
Wait(20);
down_pen(); 左目を書き始めます
up_pen(); 左目の目尻まで書き終わります
Off(OUT_A+OUT_C);
Wait(30);
OnRev(OUT_A+OUT_C); 眉間へ戻ります
Wait(130);
Off(OUT_A+OUT_C);
Off(OUT_A+OUT_C);
OnRev(OUT_A); 目と垂直に鼻を書くため方向転換します
OnFwd(OUT_C);
Wait(95);
Off(OUT_A+OUT_C);
Wait(30);
OnFwd(OUT_A+OUT_C); 鼻を書くため移動開始
Wait(45);
Off(OUT_A+OUT_C);
down_pen(); 鼻を書き始めます
OnRev(OUT_A+OUT_C);
Wait(30);
OnRev(OUT_B);
OnRev(OUT_A+OUT_C); ちょっと戻ります
Wait(30);
OnRev(OUT_B); ペンを上げます
Wait(10);
Off(OUT_A+OUT_C);
Off(OUT_A+OUT_C); 一度停止
Wait(30);
OnRev(OUT_A+OUT_C); 口を書くため方向転換します
OnRev(OUT_A+OUT_C); 口を書くため方向転換します
Wait(100);
Off(OUT_A+OUT_C);
Wait(30);
OnRev(OUT_A); 口を書くため方向転換します
OnRev(OUT_A); 口を書くため方向転換します
OnFwd(OUT_C);
Wait(110);
Off(OUT_A+OUT_C);
Wait(30);
OnFwd(OUT_A+OUT_C); 口を書くため移動開始
OnFwd(OUT_A+OUT_C); 口を書くため移動開始
Wait(50);
down_pen(); 口を書くためペンを下げます
down_pen(); 口を書くためペンを下げます
Wait(35);
up_pen(); 口を書き終えたのでペンを上げます
Off(OUT_A+OUT_C); }
up_pen(); 口を書き終えたのでペンを上げます
Off(OUT_A+OUT_C);
}
*感想 [#xa1e39f8]
気をつけたところは、目と鼻、口など直線にしましたが、目と鼻が垂直、鼻と口が垂直というように方向転換がちょっと難しかったです。なるべく無駄がないようにプログラミングをしてみましたが、ところどころ戻ったりするところが出てきてしまいました。パソコンを使うことが苦手な僕でしたが、友達と相談しながら完成することができました。
&br;ペンの上げ下げがいくつもあったので、関数に表したりもして工夫しました。また、ペンをお尻のところに付けて動かす予定でしたが、うまくペンが走らなかったので、タイヤを逆回転にしたことをお知らせしておきます。そして、連続でプログラミングしてもよかったのですが、時々、気まぐれロボがうまく動かないこともあったので、間にwaitを結構入れてしまいました。勿論無くても動きます。
&br;簡単な顔ではあるものの、かなり時間をかけ、一生懸命作りました。これから、さらに難しくなっていくと思いますが、パートナーと力を合わせて頑張りたいと思います。
*コメント欄 [#g954dcb2]
- テスト -- [[はやぶさ]] &new{2009-05-21 (木) 15:08:19};
#comment