[[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;//い鮖呂瓩襦2鵑襪海箸砲茲辰撞こる誤差を修正。
      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;
      ba_ck1;//回ることによって起こる誤差を修正。
      turn_left1;
      go_go2;
      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;
      go_go3;//を始める。
      ba_ck1;//回ることによって起こる誤差を修正。
      turn_left1;
      go_go1;
      pen_down;
      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]
ロボットを作る段階では、どういう方向のロボットを作るかで苦戦して徹夜したりして、なかなか進まず何度も挫折しかけた。プログラミングでは、本体の回転軸の関係で思うように字が書けず、かなり苦戦した。でも、最後に完成した時に、なんとも言えない感動があって、かなり楽しかった。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS