[[2010b]] #contents *課題の内容 [#paea5709] A4の紙に相棒の似顔絵を描くロボットを作成する。 -一人につき一つ以上のプログラムを作成すること。 -ペン以外はキットに含まれる部品を使うこと。 -改良や調整をしやすくするため、プログラムにおいて、できるだけサブルーチンや関数、マクロなどを使うこと。 *メンバー [#g6faa052] -青山伊吹 -植田みるく *製作したロボット [#tb3f6159] **試作段階1のロボット [#w1398209] アームをロボットの横の部分に取り付けてペンを上げ下げできるようにしてみました。 左は本体、右はアーム部分だけの写真です。 このままだと、ペンがロボットの横側にきてしまい、プログラムと、ロボットが描く絵とのずれが大きくなります。 また、右の写真で赤く丸のついた部分が非常に取れやすかったため、ペンの上げ下げがうまくいきませんでした。 &ref(2010b/A2/課題1左/3.jpg); &ref(2010b/A2/課題1左/1.jpg); **試作段階2のロボット [#x547f1da] 見た目がだいぶ変わりました! 左が横から見た写真で右が正面から見た写真です。 1.試作段階1からの改善点 -ロボットの横ではなく、前にペンがくるようにしたこと。これにより、プログラムと、ロボットの描く線とのずれが小さくなりました。 -取れやすいところも特になく、ペンの上げ下げができるようになりました。 2.工夫した点 -モーターとタイヤを連結させ、タイヤにペンをはさむことによって、タイヤの動きがペンの動きと同じになるようにしました。 -タイヤにペンをはさんだだけでは、タイヤが回転するうちに、ペンがタイヤの間から外れてしまう事があったので、それがないようにペンを固定する部分を2箇所取り付けました。(写真の赤で囲った部分) 3.反省点 -実際に動かしてみると、ペンを固定するはずだった部分はあまり役に立たず、ペンがはがれてしまいました。結果、全然何も書くことができませんでした。 -ペンをつける部分が異様に重くて、動き始めると前方に傾いてしまいました。かなり不安定なロボットになってしまいました。 &ref(2010b/A2/課題1左/2.jpg); &ref(2010b/A2/課題1左/4.jpg); **完成したロボット [#mf685d69] ついに完成しました!!形やペンの上げ下げの方法は試作2とほぼ同じです。 しかし、ペンの上げ下げの機能が、かなりよくなりました。 右が完成したロボットの正面写真で、左が横向き写真です。 &ref(2010b/A2/課題1左/6.jpg); &ref(2010b/A2/課題1左/5.jpg); 1.試作1から改善した点 -何といっても、ペンの上げ下げが心配なくできるようになったことです。 -ペンを付ける部分は、多少重くなりましたが、前方に傾くぐらいの重さにはなりませんでした。 2.工夫した点 -タイヤをギザギザのものから、なめらかなものに変更しました。これによりペンがよりスムーズに上下できるようになりました。(左写真の赤で囲った部分) &ref(2010b/A2/課題1左/7.png); -試作2段階目では、下の部分でペンを固定するものはタイヤでしたが、ブロックを高く筒状に組むことでペンを固定する事にしました。(左写真の黄色で囲った部分)その結果、ペンの上げ下げのとき、ペンがはずれなくなりました。 *プログラム [#rf8e2bd3] **みるくのプログラム [#x7af882e] #define pen_down OnFwd(OUT_B);Wait(5);Float(OUT_B); //ペンを下げる #define pen_up OnRev(OUT_B);Wait(15);Float(OUT_B); //ペンを上げる #define turn_c(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //C側に曲がる #define turn_a(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); //A側に曲がる #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //直進 #define go_back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //後退 task main() { turn_c(400); //輪郭を描く pen_up; go_straight(40); turn_c(100); go_straight(50); turn_c(100); go_straight(70); pen_down; go_straight(20); //目1 pen_up; go_back(100); turn_a(100); go_back(30); turn_c(100); go_straight(65); pen_down; go_straight(52); //鼻(まっすぐの部分) pen_up; go_back(70); turn_a(100); go_straight(62); pen_down; go_back(20); //鼻(折れ曲がりの部分) pen_up; go_back(62); turn_c(100); go_straight(15); pen_down; go_straight(20); //目2 pen_up; go_back(45); turn_c(200) pen_down; turn_a(80); //口 } 完成した絵がこちら!! &ref(2010b/A2/課題1左/8.jpg); プログラムを始めるとき、最初何から手を付ければよいのか全く分からない状況でした。とりあえずプログラムを組んでみても、思い描いたものと、ロボットの実際描く絵とのギャップが激しすぎて、パニックになりました。しかし、目1・鼻・口など各パートごとのプラグラムを区切って別々に保存し、それぞれをRCXに転送して、一つ一つの動きをじっくり見ることで、どうすれば思いどうりの絵になるかがわかってきました。また、マクロを使用したことで、わりと短いプログラムにできたと思います。 **伊吹のプログラム [#t0348cd9] *感想・反省 [#w30bd610] ***みるく [#e00e70c2] 最初は、簡単にできるだろうと思っていましたが、全く簡単ではありませんでした。プログラムでは、想像していたような図をロボットが描かないことにショックを受け、ロボット本体の作成では、ペンの上げ下げが全くうまくいかない事にショックを受けました。特にロボット作成は非常に難しいと実感しました。次はプログラムだけでなく、ロボット本体についても自分で考えて、よりよいロボットにしていきたいです。 ***伊吹 [#ud3d939b] *コメント [#af6b4757] TAKA 写真に解説を入れるのは良かったです。工夫点、反省点を書き出して下さい。「コメント欄を作って下さい」 FI プログラムは二人分お願いします。書くべきポイントは抑えていると思います。