[[2012a/Member]] *課題01 似顔絵を書く [#n0071f3c] *本体説明 [#v0711241] **本体について [#u3d9a907] 基本的な構造は最初に作ったロボットをもとに製作しました。 &ref(2012a/A3/kinkma/M1/ろぼ01.jpg,50%,画像の説明); しかし、最初のロボットの構造ではnxt本体の位置が悪く重心が傾いており、曲がるときに転倒もしくはまっすぐ走れないなど致命的な欠点がありました。 またペンの持たせ方が悪く筆圧が安定せず点線のようになってしまいました。 &ref(2012a/A3/kinkma/M1/ろぼ02.jpg,50%,画像の説明); 次は趣向を変え、過去の先輩のロボットを参考にしてみましたが構造が複雑になってしまい、かなり貧弱になってしまいました。 重心は安定しておりまっすぐ走れるようになりましたが、またも筆圧が安定せず線が描けない問題が発生しました。 &ref(2012a/A3/kinkma/M1/ろぼ03.jpg,50%,画像の説明); ぺアの人と話し合った結果できるだけ単純かつモーターの出力に負けない最低限の頑丈さが必要ということになり説明書の作り方を参考にし、写真のようになりました。 **工夫点 [#v0845346] 前回の失敗を考慮しnxt本体の位置を中心に持ってき、重心を安定させました。 またキャスターが安定するように余った歯車等で固定しました。 タイヤによる摩擦を少なくするために全体的に軽量化を施し無駄なもの、最低限の強化以外は省きました。 アームは筆圧が安定するようにボディの下に潜り込ませるようにし、ペン先の摩擦の影響を受けにくくしました。その際、潜り込みすぎないようにストッパーを取り付けました。 &ref(2012a/A3/kinkma/M1/ろぼ04.jpg,50%,画像の説明); ペンを水性ペンにすることにより摩擦の軽減に成功しました。 *プログラム [#j5bc56bf] #define age OnRev(OUT_C,30); Wait(0300); Off(OUT_B); Wait(1000);//ペンを上げる #define sage OnFwd(OUT_C,50); Wait(0200); Off(OUT_B); Wait(1000);//ペンを下げる #define go OnFwd(OUT_A,40);OnFwd(OUT_B,40); #define turn_left OnFwd(OUT_A,75);OnRev(OUT_B,75);Wait(0250); USBのデータが消えました。 task main () { //左目 age;//ペンを上げる go;//前身 Wait(0210); Float(OUT_AB); Wait(2000); sage;//ペンを下げる go;//前身 Wait(0340); Float(OUT_AB); Wait(2000); //右目 age; go; Wait(0200); Off(OUT_AB); Wait(2000); sage; go; Wait(0340); Float(OUT_AB); Wait(2000); age; go; Wait(1450); Float(OUT_AB); Wait(2000); //口を書くため移動 OnFwd(OUT_B,50); OnRev(OUT_A,30); Wait(1100); Off(OUT_AB); Wait(1000); go; Wait(0230); Float(OUT_AB); Wait(2000); OnFwd(OUT_B,50); OnRev(OUT_A,30); Wait(1100); Off(OUT_AB); Wait(1000); //口 age; go; Wait(1400); Float(OUT_AB); Wait(2000); sage; go; Wait(0600); Float(OUT_AB); Wait(2000); age; go; Wait(1500); Float(OUT_AB); Wait(2000); //輪郭を左から書く OnFwd(OUT_A,30); OnRev(OUT_B,50); Wait(1185); Off(OUT_AB); Wait(1000); go; Wait(0500); Float(OUT_AB); Wait(2000); OnFwd(OUT_A,50); OnRev(OUT_B,30); Wait(1185); Off(OUT_AB); Wait(1000); go; Wait(0300); Float(OUT_AB); Wait(2000); OnFwd(OUT_A,50); OnRev(OUT_B,30); Wait(1200); Off(OUT_AB); Wait(1000); go; Wait(0600); Float(OUT_AB); Wait(2000); //左顔の線 sage; go; Wait(11500); Float(OUT_AB); Wait(2000); //頭部 OnFwd(OUT_A,100); OnFwd(OUT_B,10); Wait(1850); Off(OUT_AB); //右顔の線 go; Wait(1150); Float(OUT_AB); Wait(2000); //顎 OnFwd(OUT_A,100); OnFwd(OUT_B,10); Wait(1850); Off(OUT_AB); }