- 追加された行はこの色です。
- 削除された行はこの色です。
[[2008b]]
*課題 [#z516b49c]
A3の紙に似顔絵を書く、似顔絵ロボットの作成。
**目次 [#w3e52e28]
#contents
*ロボットについて [#f3450616]
**本体について [#vaaa2811]
キット付属の冊子にあるドライブベースを使用し、似顔絵ロボットを作成した。
#ref(2008b/A3/課題1右/zentai.jpg,1.84,全体図)
#ref(2008b/A3/課題1右/zentai.jpg,53.7,全体図)
**ペン部分 [#kb736378]
始めクレーンを使用して、クレーンの上下運動により似顔絵を描こうとしたが、うまくペンが固定できなかったため、歯車を使用した上下運動により似顔絵をかくようにした。
ペンは付属のゴムで固定し、上下運動により似顔絵を書くようにした。ペンは最初ボールペンを使用したが、ペン先が細く、インクが薄いために油性ペンに変更した。
ペンを固定するのが難しく、最初は下までいかなかったり、抜けてしまったりしたが、付属のブロックや棒を使用し、ペンを固定した。
#ref(2008b/A3/課題1右/pen.jpg,42.9,全体図)
#ref(2008b/A3/課題1右/pen.jpg,54.4,ペン部)
*プログラムについて [#o4272b21]
**1つ目のプログラム [#b6d56af6]
**1つ目のプログラム (by A) [#ode9a988]
task main()
{
OnFwd(OUT_A);
OnRev(OUT_B+OUT_C);
Wait(20);
Off(OUT_B);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(360); //輪郭を書く
OnFwd(OUT_B);
Wait(30);
OnRev(OUT_A+OUT_C);
Wait(10);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(20);
Off(OUT_B);
OnRev(OUT_A+OUT_C); //右目を書く
Wait(20);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_A+OUT_C);
Wait(10);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_A+OUT_C); //左目を書く
Wait(20);
OnFwd(OUT_B);
Wait(10);
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(180);
OnRev(OUT_A+OUT_C);
Wait(80);
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(70);
OnRev(OUT_A+OUT_C); //口を書く
Wait(10);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_A+OUT_C);
Wait(20);
OnFwd(OUT_B);
Wait(10);
Off(OUT_A+OUT_B+OUT_C);
}
#ref(2008b/A3/課題1右/kao1.jpg,17.6,似顔絵1)
はじめ、ペン部分のモーターが動きっぱなしになってしまいうまく書けなかったため、車輪部分のモーターとペン部分のもモーターを別々に動かすことにした。
ペン部分のモーターはこまめに動かしたり止めたりしてペンがついたままにならないよう工夫した。
ただ、直線ばかりなので、口の位置や形に改善の余地がある。
似顔絵の書き順は次の通り。
#ref(2008b/A3/課題1右/kao1\'.jpg,8.3,図2)
まず輪郭を描き、その後左目→右目→口となる。
輪郭は中心を軸としている。
**2つ目のプログラムbyニコチュー [#r5a8bf42]
task main()
{
OnRev(OUT_B);Wait(10);Off(OUT_B);
OnFwd(OUT_C);Wait(800);Off(OUT_C); //輪郭を書く
OnFwd(OUT_B);Wait(10);Off(OUT_B);
OnFwd(OUT_C);OnRev(OUT_A);Wait(60);Off(OUT_A);
Wait(60);
Off(OUT_C);
OnFwd(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_C);
Wait(60);
Off(OUT_A);
OnFwd(OUT_C);OnRev(OUT_A);Wait(20);
OnRev(OUT_B);Wait(10);Off(OUT_B); //右目を書く
Wait(20);
OnFwd(OUT_B);Wait(10);Off(OUT_B);
Wait(20);
OnRev(OUT_B);Wait(10);Off(OUT_B); //左目を書く
Wait(20);
OnFwd(OUT_B);Wait(10);Off(OUT_B);
Wait(100);
OnRev(OUT_B);Wait(10);Off(OUT_B); //口を書く
Wait(60);
OnFwd(OUT_B);Wait(10);Off(OUT_B);
Off(OUT_A+OUT_C);
}
#ref(2008b/A3/課題1右/kao2.jpg,18.1,似顔絵2)
始め顔の位置が円の外になってしまったので、顔を円の中にいれるのに苦労した。Waitの時間を調節することで顔を円の中に入れた。
主に円を使ったプログラムである。
似顔絵の描き順は次の通り。
#ref(2008b/A3/課題1右/kao2\'.jpg,7.75,図2)
輪郭を書き、その後適当なところに軸をとり、ペンの上下により顔を描いている。
*感想 [#d462c786]
Waitの時間を微調整して顔の位置を変えたり、ペンをおろす時間やあげるタイミングを調整するのが難しかったです。
ペンをおろしすぎてもペン先が強く紙に当たってしまってにじんだり、ロボットが動きにくくなったりしてしまったからです。
また、1つ目のプログラムはやたら長くなってしまったので繰り返しなどを使ってみてもよかったと思います。
*コメント [#ge6f3eaf]
コメントがあったらお願いします。
- できた似顔絵の写真も載せてください。 -- [[なかむら]] &new{2008-11-12 (水) 17:04:09};
-プログラムでサブルーチンを使ってみても良かったです。FI
- 描き方が工夫されてていいですね。おっけーです。 -- [[なかむら]] &new{2008-11-28 (金) 17:26:04};
- 目を書くところなど、サブルーチンを使った方が良いです。より良いレポートを目指すためには過去のページなどを参考にしてみてください -- [[FI]] &new{2009-01-09 (金) 18:37:42};
#comment()