[[2016b/Member]] *目次 [#x236a5ea] #contents *課題 [#o82b3c0a] A4の紙に今年の大学生活を表す漢字一文字を書くロボットを製作せよ。 信州大学というところから、「信」の字を書こうと思った。 *ロボット本体の説明 [#l64d4b33] **全体 [#z2933831] #ref(2016b/Member/GORI/Mission1/download.jpeg,100,全体部分) 本体のモデルは、最初に作ったやつを参考にして、前輪部分と後ろにぺんをつけれるところをつけた。 **車輪部分 [#db786de1] #ref(2016b/Member/GORI/Mission1/車輪.jpeg,10,車輪部分) 前輪部分は、紙との摩擦をなくすために、プラスチックだけのやつをつけた。 後輪部分は、ギアを噛ませたタイヤで、本体自体を動かした。 **ペンの上げ下げ部分 [#c32d1b35] #ref(2016b/Member/GORI/Mission1/ペン.jpeg,100,ペン部分) 上に2つ、下に2つの合計4つのタイヤ部分でペンを固定した。また、右上と右下のタイヤにギアをつけてペンを上下に動かせるようにした。さらに、それぞれのタイヤ部分の後ろ部分にゴムをつけて、ペンの安定度を強化し、片方のタイヤが動いた時に、もう片方のタイヤにも力がわけれるようにした。 *プログラミングの説明 [#td4c3574] **全体像 [#xf757274] 本体の回転軸が、ペンの部分とは少しずれているせいで、本体を回転するごとに前後に動かすなどしなければならなくて、誤差の修正が難しかった。そのせいで、プログラミングが増えてしまった。 #ref(2016b/Member/GORI/Mission1/IMG_7019.JPG,100,全体部分) #define MOVE_TIME1 50 #define MOVE_TIME2 30 #define MOVE_TIME3 20 #define MOVE_TIME4 35 #define MOVE_TIME5 10 #define TURN_TIME1 75 #define TURN_TIME2 150 #define TURN_TIME3 70 #define PEN_TIME 10 #define BACK_TIME1 40 #define go_go1 OnFwd(OUT_AC);Wait(MOVE_TIME1);Off(OUT_AC)//書きたい長さに合わせて、いろいろなパターンに分けた。 #define go_go2 OnFwd(OUT_AC);Wait(MOVE_TIME2);Off(OUT_AC) #define go_go3 OnFwd(OUT_AC);Wait(MOVE_TIME3);Off(OUT_AC) #define go_go4 OnFwd(OUT_AC);Wait(MOVE_TIME4);Off(OUT_AC) #define go_go5 OnFwd(OUT_AC);Wait(MOVE_TIME5);Off(OUT_AC) #define ba_ck1 OnRev(OUT_AC);Wait(BACK_TIME1);Off(OUT_AC)//RISの回転軸による誤差の修正のため #define turn_left1 OnFwd(OUT_C);OnRev(OUT_A);Wait(TURN_TIME1);Off(OUT_AC)//曲がりたい角度に合わせて分けた。 #define turn_left2 OnFwd(OUT_C);OnRev(OUT_A);Wait(TURN_TIME2);Off(OUT_AC) #define turn_left3 OnFwd(OUT_C);OnRev(OUT_A);Wait(TURN_TIME3);Off(OUT_AC) #define turn_right OnFwd(OUT_A);OnRev(OUT_C);Wait(TURN_TIME1);Off(OUT_AC) #define pen_up OnFwd(OUT_B);Wait(PEN_TIME);Off(OUT_B) #define pen_down OnRev(OUT_B);Wait(PEN_TIME);Off(OUT_B) **にんべん [#vf7dee4a] task main() { pen_down;//にんべんを書き始める。 go_go1; pen_up; turn_left2; go_go2; go_go2; OnFwd(OUT_A); OnRev(OUT_C); Wait(120); go_go4; pen_down; go_go1; pen_up;//にんべん終了。 **口 [#i3760295] ba_ck1; turn_left1; go_go2; OnFwd(OUT_AC);Wait(30);Off(OUT_AC); pen_down;//口の部分を書き始める。 go_go2; pen_up; ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up;//口の部分終了。 **横棒 [#d0fc1733] turn_left2; go_go2; go_go2; go_go5; turn_right; go_go2; pen_down;//横棒を間隔を開けて、4本書き始める。 go_go2; pen_up; ba_ck1; turn_left1; go_go2; OnFwd(OUT_AC);Wait(15);Off(OUT_AC); ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_right; go_go2; go_go5; ba_ck1; turn_right; go_go2; pen_down; go_go1; pen_up; OnFwd(OUT_AC);Wait(30);Off(OUT_AC); pen_down; go_go2; pen_up; ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; turn_left2; go_go2; go_go2; go_go5; turn_right; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_left1; go_go2; OnFwd(OUT_AC);Wait(15);Off(OUT_AC); ba_ck1; turn_left1; go_go2; pen_down; go_go2; pen_up; ba_ck1; turn_right; go_go2; go_go5; ba_ck1; turn_left1; go_go2; go_go3; ba_ck1; turn_left1; go_go1; pen_down; go_go2; pen_up;//横棒終了。 Off(OUT_ABC);//完成 } *結果 [#j709bb1d] **一回目 [#y2fe2115] #ref(2016b/Member/GORI/Mission1/練習1.jpeg,100,練習) 亻と横棒があたっていて、初見で見る人には、何と言う漢字なのかがわからないものだった。 **二回目 [#ke338e2d] #ref(2016b/Member/GORI/Mission1/練習2.jpeg,100,練習) 前回のような失敗も無く、かなり完成度の高いものとなった。 *感想・まとめ[#bd9b8ca0] ロボットを作る段階では、どういう方向のロボットを作るかで苦戦して徹夜したりして、なかなか進まず何度も挫折しかけた。プログラミングでは、本体の回転軸の関係で思うように字が書けず、かなり苦戦した。でも、最後に完成した時に、なんとも言えない感動があって、かなり楽しかった。