- 追加された行はこの色です。
- 削除された行はこの色です。
#content
目次
#contents
*書道ロボット [#j72d3d57]
今回製作したロボットは、プログラムされたとおりに動くと字を書くことができる「書道ロボット」である。
*ロボット本体 [#m4062f5d]
ロボット本体について、説明を行う。
**部位説明 [#ib2912b9]
***アーム [#tf5a209a]
描きたい文字が縦棒と横棒でほとんど形成されていたため、アームでは筆記具の上げ下げと前後運動を行うことができるよう設計した。モーターによってタイヤが回ることでアームを伸び縮みさせることができるようになっている。(Fwd= Rev=)
***移動部分 [#d8b340ee]
アームに二つのモーターを使用したため、シンプルに左右のみに移動できるようにした。(Fwd=前進、Rev=後退)
ロボットを、ペンを動かす部分であるアームと、本体を動かす移動部分の2つに分けて説明する。
**アーム [#tf5a209a]
描きたい文字が縦棒と横棒でほとんど形成されていたため、アームでは筆記具の上げ下げと前後運動を行うことができるよう設計した。
まずモーターBによって、二枚目の写真の赤ペンで記したように、筆記具を付ける腕自体を上げ下げするようにした(PENCIL_UP=ペンをあげる PENCIL_DOWN=ペンを下げる)
&ref(./IMG_20151125_210609-small.jpg,70%,アームをさげた状態);
&ref(./IMG_20151125_210620-small.jpg,70%,アームをあげた状態);
さらに、モーターCによってタイヤを回し、腕を前に繰り出したり後ろにひっこめることで、青と緑のペンで示したようにアームを伸び縮みさせることができるようになっている。(Fwd=伸ばす Rev=縮める)
**移動部分 [#d8b340ee]
アームに二つのモーターを使用したため、シンプルに左右のみに移動できるようモーターAのみを使用した。(Fwd=前進、Rev=後退)
#ref(./IMG_20151125_210529-small.jpg,70%,足の部分)
*文字の書き方 [#h8f56529]
書き順はこのようになるようにした。
#ref(2015b/Member/Pipikun/Mission1/IMG_20151125_202005.jpg,30%,書き順)
#ref(./IMG_20151125_202005-small.jpg,70%,書き順)
ほとんど左右対称な文字のため、左右に分けて文字を書いた。またなるべくアームを前後させないようにするため、近くにあり同じ長さの部分をまとめて書くように心がけた。
#ref(2015b/Member/Pipikun/Mission1/IMG_20151125_201458.jpg,30%,完成した文字 門)
完成した文字が下の写真である。(ネームペンが壊れてしまったため、蛍光ペンのピンクで代用した)
#ref(./IMG_20151125_201458-small.jpg,70%,完成した文字 門)
*プログラム [#c50b2d73]
同じ距離だけ移動することが多いので、なるべく定義にまとめるよう努力し、プログラムの簡略化につとめた。
**定義 [#e6548c02]
#define PENCIL_DOWN OnFwd(OUT_C,20); Wait(700); Off(OUT_C);
#define PENCIL_UP OnRev(OUT_C,20); Wait(700); Off(OUT_C);
#define RIGHT OnFwd(OUT_A,20); Wait(500); Off(OUT_A);
#define LEFT OnRev(OUT_A,20); Wait(500); Off(OUT_A);
#define ARM_LITTLE OnFwd(OUT_B,20); Wait(340);Off(OUT_B);
#define ARM_LITTLE_S OnFwd(OUT_B,20); Wait(300);Off(OUT_B);
#define ARM_LITTLE_R OnRev(OUT_B,20); Wait(340);Off(OUT_B);
#define ARM_LITTLE_R_S OnRev(OUT_B,20); Wait(320);Off(OUT_B);
RIGHT...一画目の途中と三画目、五画目と七画目の途中の短い横棒を右向きに描く
LEFT...二画目、六画目の短い横棒を左向きに描く
ARM_LITTLEとARM_LITTLE_S...腕を伸ばしながら、一画目と二画目の間、二画目と三画目の間を移動す
る。LITTLEとLITTLE_Sの違いは、動作をする前の腕の長さによって伸びる速度が違うため、多少秒数を微調整したため、その差をつけるために違いをつけた。
ARM_LITTLE_RとARM_LITTLE_R_S...腕を縮めながら、一画目と二画目の間、二画目と三画目の間を移動する。LITTLE_RとLITTLE_R_Sの違いは、上の動作と同様に動作をする前の腕の長さによって伸びる速度が違うため、多少秒数を微調整したため、その差をつけるために違いをつけた。
**左側の長い棒の書き方 [#n4425791]
PENCIL_UP;
OnFwd(OUT_B,20);
Wait(1900);
Off(OUT_B);//アームのばす
PENCIL_DOWN;//
OnRev(OUT_B,20);
Wait(2000);//一本目を書く
Off(OUT_B);
**右側の長い棒の書き方 [#zb1aee1e]
OnFwd(OUT_B,20);
Wait(1900);一番右の長い線を書く
Off(OUT_B);
OnRev(OUT_AB,20);//最後の「はね」
Wait(300);
Off(OUT_AB);
*感想 [#l193050d]
**プログラムについて [#z57db0ed]
初めてのプログラミングで大変だったが、思うように字を書くことができてうれしかった。アームを伸ばすか引くかによって、同じ出力でも違う距離を進んでしまうことが多くあり、微調整が大変だった。また左右が対象にならないことが多くあり、モーターの力の強さの差によるものだとわかるまでにずいぶん時間をかけてしまった。
#ref(./IMG_20151125_201553-small.jpg,70%,失敗例)
**ロボットについて [#mf47818d]
左右前後に動くアイディアはよかったが、アームを長くした分バランスが悪かったり、ペンの上げ下げの時にたえきれず、ロボットが後ろにふんぞり返ることもあり苦労した。最終的には書く文字の大きさを調節してアームを短くし、バランスをはかった。
次に制作するロボットはなるべくシンプルで安定感のあるロボットをつくり、プログラムのほうに時間をかけられるようにしたい。