- 追加された行はこの色です。
- 削除された行はこの色です。
[[2010b]]
#contents
*課題の内容 [#paea5709]
A4の紙に相棒の似顔絵を描くロボットを作成する。
-一人につき一つ以上のプログラムを作成すること。
-ペン以外はキットに含まれる部品を使うこと。
-改良や調整をしやすくするため、プログラムにおいて、できるだけサブルーチンや関数、マクロなどを使う。
-改良や調整をしやすくするため、プログラムにおいて、できるだけサブルーチンや関数、マクロなどを使うこと。
*メンバー [#g6faa052]
-青山伊吹
-植田みるく
*製作したロボット [#tb3f6159]
**試作段階のロボット [#w1398209]
**試作段階1のロボット [#w1398209]
アームをロボットの横の部分に取り付けてペンを上げ下げできるようにしてみました。
上は本体、下はアーム部分だけの写真です。
左は本体、右はアーム部分だけの写真です。
このままだと、ペンがロボットの横側にきてしまい、プログラムと、ロボットが描く絵とのずれが大きくなります。
また、下の写真で赤く丸のついた部分が非常に取れやすかったため、ペンの上げ下げがうまくいきませんでした。
また、右の写真で赤く丸のついた部分が非常に取れやすかったため、ペンの上げ下げがうまくいきませんでした。
&ref(2010b/A2/課題1左/CA3A0044.JPG);
&ref(2010b/A2/課題1左/CA3A0042.JPG);
**完成したロボット [#x547f1da]
**試作段階2のロボット [#x547f1da]
見た目がだいぶ変わりました!
左が横から見た写真で右が正面から見た写真です。
1.試作段階からの改善点
1.試作段階1からの改善点
-ロボットの横ではなく、前にペンがくるようにしたこと。これにより、プログラムと、ロボットの描く線とのずれが小さくなりました。
-取れやすいところも特になく、ペンの上げ下げができるようになりました。
2.工夫した点
-モーターとタイヤを連結させ、タイヤにペンをはさむことによって、タイヤの動きがペンの動きと同じになるようにしました。
-タイヤにペンをはさんだだけでは、タイヤが回転するうちに、ペンがタイヤの間から外れてしまう事があったので、それがないようにペンを固定する部分を2箇所取り付けました。(写真の赤で囲った部分)
&ref(2010b/A2/課題1左/CA3A00541.jpg);&ref(2010b/A2/課題1左/CA3A00531.jpg);
3.反省点
-実際に動かしてみると、ペンを固定するはずだった部分はあまり役に立たず、ペンがはがれてしまいました。結果、全然何も書くことができませんでした。
-ペンをつける部分が異様に重くて、動き始めると前方に傾いてしまいました。かなり不安定なロボットになってしまいました。
&ref(2010b/A2/課題1左/CA3A00541.jpg);
&ref(2010b/A2/課題1左/CA3A00531.jpg);
**完成したロボット [#mf685d69]
ついに完成しました!!形やペンの上げ下げの方法は試作2とほぼ同じです。
しかし、ペンの上げ下げの機能が、かなりよくなりました。
右が完成したロボットの正面写真で、左が横向き写真です。
&ref(2010b/A2/課題1左/CA3A0055.JPG);
&ref(2010b/A2/課題1左/CA3A0056.JPG);
1.試作1から改善した点
-何といっても、ペンの上げ下げが心配なくできるようになったことです。
-ペンを付ける部分は、多少重くなりましたが、前方に傾くぐらいの重さにはなりませんでした。
2.工夫した点
-タイヤをギザギザのものから、なめらかなものに変更しました。これによりペンがよりスムーズに上下できるようになりました。
&ref(2010b/A2/課題1左/1122.png);
*プログラム [#rf8e2bd3]
**みるくのプログラム [#x7af882e]
#define pen_down OnFwd(OUT_B);Wait(50);Off(OUT_B); //ペンを下げる
#define pen_up OnRev(OUT_B);Wait(50);Off(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(40); //鼻(まっすぐの部分)
pen_up;
go_back(50);
turn_a(100);
go_straight(60);
pen_down;
go_back(10); //鼻(折れ曲がりの部分)
pen_up;
go_back(70);
turn_c(100);
go_straight(20);
pen_down;
go_straight(20); //目2
pen_up;
go_back(75);
turn_c(160)
pen_down;
turn_a(80); //口
}
*完成した絵 [#y93ae459]
**みるくが書いた絵 [#o3f4a4ea]
&ref(2010b/A2/課題1左/CA3A0058.JPG);
*感想・反省 [#w30bd610]
コメント
*コメント [#af6b4757]
TAKA 写真に解説を入れるのは良かったです。工夫点、反省点を書き出して下さい。「コメント欄を作って下さい」
FI プログラムは二人分お願いします。書くべきポイントは抑えていると思います。