- 追加された行はこの色です。
- 削除された行はこの色です。
[[2008b/MemberOnly/進行状況A]]
*課題 [#r537baf2]
似顔絵ロボットの作成。
A3用紙にロボットを使い似顔絵を描く。
**目次 [#nc2d7772]
#contents
*ロボットについて [#o6d8904e]
**本体 [#lbf50279]
キット付属の冊子にあるドライブベースを参考として工夫を加えた。
**車輪部分 [#l08f3a66]
2つのタイヤを使い動かす。
初めは、キャタピラで動かそうと思ったが、床との接地面が大きいため失敗となった。
タイヤに変えようとしたが、ギアをペンの部分で使っているために足りず、2輪にした。
2輪に変えたので動きを安定させるために、付属冊子の軸車輪を参考にして、ロボットの後方にキャスターを付けた。
&ref(2008b/A8/課題1右/kyasuta-.JPG,50%,キャスター部分);
**ペン部分 [#j5446512]
ペンは、部品で固定しモーターとギアでつないだ。
そうすることでペン先を浮かせたり下げたりできるようにした。
ペンがぶれて描かれた線が点線になってしまったり、ペンがロボットの下に回り込んでしまうなど、悩む箇所が多々あった。
描かれた線が点線になってしまうことの解決策として、ペン先の固いものから、柔らかい筆ペンに変更した。
ペンがロボットの下に回り込んでしまうなど、ペンが不安定ということの解決策としては、ペンの太さに合わせて数カ所でしっかり固定するようにした。
&ref(2008b/A8/課題1右/pengia.JPG,50%,ペンとギア部分);
*プログラムについて [#w0ac5ae8]
**1つ目 [#xca126af]
task main()
{OnFwd(OUT_A+OUT_B);OnRev(OUT_C); Wait(237); //輪郭をかく
Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(5);
OnRev(OUT_A+OUT_C); Wait(20);
OnRev(OUT_A+OUT_C);OnFwd(OUT_B); Wait(20); //左目をかく
OnRev(OUT_A+OUT_C);OnRev(OUT_B); Wait(20);
OnRev(OUT_A+OUT_C);OnFwd(OUT_B); Wait(20); //右目をかく
OnFwd(OUT_A+OUT_C);OnRev(OUT_B); Wait(80);
OnFwd(OUT_A);OnRev(OUT_C); Wait(40);
OnRev(OUT_A+OUT_C); Wait(30);
OnRev(OUT_A+OUT_C);OnFwd(OUT_B); Wait(10); //鼻をかく
OnFwd(OUT_A+OUT_C);OnRev(OUT_B); Wait(27);
OnFwd(OUT_A);OnRev(OUT_C); Wait(20);
OnFwd(OUT_C);OnRev(OUT_A);OnFwd(OUT_B);Wait(30); //口をかく
Off(OUT_A+OUT_B+OUT_C);
}
このプログラムを作り実行して起こった問題は、まずA3用紙におさまりきらないということだった。
これを解消するには、プログラムを直す以前に、ロボットのペンの位置を変えることにした。
直す前は、ロボットの本体からペン先までの距離が長く、輪郭を描くときに円の直径が大きくなってしまっていた。
そこで直した後では、今までよりも本体からペン先までの長さを短くし、A3用紙に収まることができた。
**2つ目 [#k8bc4919]
task main(){
OnFwd(OUT_A+OUT_B);OnRev(OUT_C); Wait(230); //輪郭をかく
OnRev(OUT_B);Wait(5);
OnRev(OUT_A+OUT_C); OnFwd(OUT_B);Wait(20); //眼鏡をかく
repeat(2){
OnFwd(OUT_A); OnRev(OUT_C); Wait(10);
OnFwd(OUT_C); OnRev(OUT_A); Wait(18);
OnRev(OUT_A+OUT_C); Wait(25);
OnFwd(OUT_A); OnRev(OUT_C); Wait(20);
OnFwd(OUT_C); OnRev(OUT_A); Wait(7);
OnRev(OUT_A+OUT_C); Wait(20);
}
OnFwd(OUT_A+OUT_C); OnRev(OUT_B);Wait(130);
OnFwd(OUT_C); OnRev(OUT_A); Wait(62);
OnFwd(OUT_A+OUT_C);Wait(20);
Off(OUT_A+OUT_C);Wait(30);
OnRev(OUT_A+OUT_C); Wait(30);
OnRev(OUT_A+OUT_C); OnFwd(OUT_B);Wait(20); //鼻をかく
OnFwd(OUT_A+OUT_C); OnRev(OUT_B);Wait(30);
OnFwd(OUT_C); OnRev(OUT_A);OnFwd(OUT_B);Wait(20); //口をかく
Off(OUT_A+OUT_B+OUT_C); Off(OUT_B);
}
2つ目の方は、慣れてきたのでプログラムを書く上での問題はそんなに起こらなかった。
眼鏡を書くことの工夫した。
場所によってずれてしまうことが多々あったので、微調節を何回も行った。
*コメントをお願いします。 [#ze08a159]
- できた似顔絵を載せてください。 -- [[なかむら]] &new{2008-11-29 (土) 13:05:37};
- サブルーチンを使えているともっといいです。 -- [[なかむら]] &new{2008-11-29 (土) 13:06:04};
#comment
書くべきことはきちんと書けています。後は工夫した点や似顔絵の図や写真を載せてください。