#contents *課題1 [#m33913e0] A4サイズの紙に地元に関する漢字二文字を書くロボットを作る。 今回私が選んだ文字は「大阪」です。 *作成したロボット [#eaf37845] 作成したロボットはX軸Y軸でそれぞれ独立して動くロボットである。 部品点数を少なくすることにより軽量化し、ロボットが安定して動作するようになるべく重心が下の位置になるように作成した。 #ref(2017b/Member/cyanomelana/Mission1/IMG_5895.JPG,45%,書道ロボット) #ref(2017b/Member/cyanomelana/Mission1/robo1IMG_5893.JPG,65%,書道ロボット) **ロボットの詳細 [#mee85b7a] Y軸方向(前後方向)の移動 Y軸方向(前後方向)への移動の工夫として、タイヤを4輪一列に並べることによって直進性を高めた。~ さらにモーターの位置をロボットの中央にすることによってモーターの位置が端にあるのと比べて動力の伝達の遅れを最小限にできた。 #ref(2017b/Member/cyanomelana/Mission1/tire.jpg,30%,書道ロボット) #ref(2017b/Member/cyanomelana/Mission1/robo_5873.JPG,45%,書道ロボット) X軸方向(左右方向)の移動 X軸方向(左右方向)への移動には二本のレールの上をタイヤが動くことで移動している、そしてレールをガイドで挟むことによってタイヤがレールから脱輪しないようにした。 #ref(2017b/Member/cyanomelana/Mission1/rorobo.JPG,30%,書道ロボット) #ref(2017b/Member/cyanomelana/Mission1/roboboIMG_5898.JPG,45%,書道ロボット) ペンの上げ下げの機構 X軸方向に動くモーターに対して垂直にモーターを取り付けるように試みたが、高さが高くなり、X軸方向に動くモーターが不安定になったので、X軸方向に動くモーターに平行にモーターを取り付けて安定させた。 #ref(2017b/Member/cyanomelana/Mission1/roboobo_5873.JPG,60%,書道ロボット)~ 動作の確認で分かったことだが、ペンを下してY軸下方向(手前)に移動するときペン先と紙との抵抗力によってX軸方向に動くモーターが持ち上がってしまったが、手前のガイドを長くし、ペンとガイドの距離をなくすことによりモーターは持ち上がらなくなった。 #ref(2017b/Member/cyanomelana/Mission1/pen.JPG,30%,書道ロボット)~ さらにペンを上げ下げを繰り返すと少しずつペンの角度がずれて、ペン先が紙面に当たりすぎるという問題が起きたがストッパーを取り付けることで解決した。 #ref(2017b/Member/cyanomelana/Mission1/penrobo.JPG,30%,書道ロボット)~ *作成したプログラミング [#xf4828b2] 「大阪」という文字を書くにあたり、曲線と書き順を意識したプログラミングを書いた。~ X軸はA、Y軸はCのモーターで動くようにして、~ それぞれの移動方向を図のように決めてdefineで定義した。~ #ref(2017b/Member/cyanomelana/Mission1/direction.JPG,30%,書道ロボット)~ #define XR(t) OnFwd(OUT_A,40); Wait(t); Off(OUT_A); Wait(200); #define XL(t) OnRev(OUT_A,40); Wait(t); Off(OUT_A); Wait(200); #define YD(t) OnFwd(OUT_C,40); Wait(t); Off(OUT_C); Wait(200); #define YU(t) OnRev(OUT_C,40); Wait(t); Off(OUT_C); Wait(200);~ ペンの上げ下げは角度で動くプログラミングをdefineで定義した。~ #define PU RotateMotor(OUT_B,20,30); Off(OUT_B); #define PD RotateMotor(OUT_B,-20,30); Off(OUT_B); **「大」のプログラミング [#p6ec576f] 曲線を描くために、時間ごとに速度を変えるプログラミングを書いた。~ 例えば「大」の二画目はYDの速度の数値を時間ごとに下げ、~ XLの速度の数値をを時間ごとに上げた。~ 一画目 PD; XR(1200); PU; XL(620); YU(150); 二画目 PD; OnFwd(OUT_C,40); OnRev(OUT_A,10); Wait(200); OnFwd(OUT_C,40); OnRev(OUT_A,20); Wait(200); OnFwd(OUT_C,30); OnRev(OUT_A,30); Wait(200); OnFwd(OUT_C,20); OnRev(OUT_A,40); Wait(200); OnFwd(OUT_C,10); OnRev(OUT_A,50); Wait(200); Off(OUT_AC); PU; XR(710); YU(510); 三角目 PD; OnFwd(OUT_C,40); OnRev(OUT_A,20); Wait(150); OnFwd(OUT_C,30); OnFwd(OUT_A,26); Wait(200); OnFwd(OUT_C,20); OnFwd(OUT_A,30); Wait(200); OnFwd(OUT_C,20); OnFwd(OUT_A,40); Wait(200); OnFwd(OUT_C,10); OnFwd(OUT_A,50); Wait(230); Off(OUT_AC); PU; **「阪」のプログラミング [#t5dab093] 「阪」も同様に、こざとへん、右側の「反」の曲線が書けるようにプログラミングした。~ 「阪」を書き終わると元の位置に戻るようにプログラミングを書いた。 「阪」の一画目の位置への移動 XL(1300); YD(220); 一画目 PD; YD(735); PU; YU(710); 二画目 PD; XR(520); OnRev(OUT_A,30); OnFwd(OUT_C,10); Wait(550); Off(OUT_AC); 三画目 OnFwd(OUT_C,22); OnFwd(OUT_A,40); Wait(150); OnFwd(OUT_C,22); OnFwd(OUT_A,25); Wait(100); OnFwd(OUT_C,22); OnFwd(OUT_A,15); Wait(100); OnFwd(OUT_C,22); OnRev(OUT_A,15); Wait(100); OnFwd(OUT_C,22); OnRev(OUT_A,25); Wait(100); OnFwd(OUT_C,22); OnRev(OUT_A,40); Wait(150); Off(OUT_AC); PU; YU(450); XR(660); 四画目 PD; XR(550); PU; XL(660); 五画目 PD; OnFwd(OUT_C,40); OnRev(OUT_A,10); Wait(300); OnFwd(OUT_C,40); OnRev(OUT_A,17); Wait(200); OnFwd(OUT_C,40); OnRev(OUT_A,25); Wait(240); Off(OUT_AC); PU; XR(265); YU(520); 六画目 PD; XR(525); OnFwd(OUT_C,40); OnRev(OUT_A,20); Wait(240); OnFwd(OUT_C,40); OnRev(OUT_A,20); Wait(120); OnFwd(OUT_C,35); OnRev(OUT_A,30); Wait(120); OnFwd(OUT_C,30); OnRev(OUT_A,40); Wait(120); Off(OUT_AC); PU; YU(540); XL(150); 七画目 PD; OnFwd(OUT_C,40); OnFwd(OUT_A,30); Wait(180); OnFwd(OUT_C,40); OnFwd(OUT_A,40); Wait(110); OnFwd(OUT_C,35); OnFwd(OUT_A,40); Wait(130); OnFwd(OUT_C,30); OnFwd(OUT_A,50); Wait(240); Off(OUT_AC); PU; 元の位置に戻る XL(1500); YU(2000); *書けた文字 [#oed7f7d3] #ref(2017b/Member/cyanomelana/Mission1/oosaka.jpg,65%,大阪) *感想、反省点 [#c5981acb] 感想 ロボットは安定して動いたので達成感があった。~ 曲線はきれいにかけたと思うが、字の形があまり納得いくものではなかった。~ 完成するまでの道のりが果てしなかった。~ 反省点 サブルーチンがとても長くなると思い、サブルーチンを作らなかったが、task mainを少なくするためにサブルーチンを使うべきだったと思う。~ こざとへんの書き順を間違えてしまった。