目次 #contents *書道ロボット [#r142e44d] 今回私が作ったものは長野県の「長」という字を書くロボットだ。作るにあたって初めに考えたことは、ロボット自体が車輪で旋回しながら書くタイプとアームを用いて書くタイプのどちらにするかだった。そこで私が書こうとしている「長」という字は主に横棒と縦棒で構成されているので後者のアームを用いたロボットを作ることにした。 *ロボット本体 [#n204c865] **ボディ [#w5390a1c] &ref(2015b/Member/nakamura/Mission1/IMG_0490.JPG,50%);左右の動きはアームに任せることにしたので、ボディは前後の動きのみとした。 したがってボディにはモーターAの一つだけを使った。 制作時の問題点としては、アームの動きによるバランスの崩れが挙げられる。そこでバッテリーをアームの反対側に配置し、前後の車輪の間隔も広くした。 また前輪が大きいのも前に重心がくると考えたからである。 **アーム部分 [#n5d397d2] &ref(2015b/Member/nakamura/Mission1/IMG_0487.JPG,50%); この部分はペンを左右へ動かし横線を書くために作った。この部分はペンの上げ下げも行うのでモーターB,Cをそれぞれアームの横移動、ペンの上げ下げに使った。 *プログラム [#m3c30f02] **方針 [#l4efe007] 「長」は縦と横の線の組み合わせであるのでどちらかを先に書いたほうが良いと考えた。 よってまずは横線を5本書き、最後に縦線を書くという方針をとり図のように書き順を設定した。 &ref(2015b/Member/nakamura/Mission1/mudai2.png,50%); **複数回使うマクロの定義 [#e08f7e59] ***横線を一本書きペンを浮かして戻ってくることの定義 [#y0837f30] #define kaku(TI) OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);OnRev(OUT_C);Wait(TI);Off(OUT_C);Wait(100);OnRev(OUT_B);Wait(30);Off(OUT_B);Wait(100);OnFwd(OUT_C);Wait(TI+10);Off(OUT_BC); ***TA秒だけ前へ進むことの定義 [#v7437a46] #define tobe(TA) OnFwd(OUT_A);Wait(TA);Off(OUT_A);Wait(100); **メインプログラム [#rf686164] task main() { kaku(17);//1.下の短い横線を書く tobe(15); kaku(35);//2.一番長い横線を書く repeat(3) { tobe(15); kaku(23); } //3.4.5.上の3つの横線を書く OnRev(OUT_C); Wait(23); Off(OUT_C); Wait(100); OnFwd(OUT_B); Wait(30); Off(OUT_BC); Wait(100);//もとへ戻してしまったアームを再び伸ばす OnRev(OUT_A); Wait(75); Off(OUT_A); Wait(100);//6.縦棒を引く OnFwd(OUT_AC); Wait(27); Off(OUT_ABC); } //7.アームを動かしながら進むことで斜めの線を書く *結果 [#affacc6d] #ref(2015b/Member/nakamura/Mission1/IMG_0483.JPG,50%) 書いた結果図のような字になった。大体はできていると思うがところどころの点が非常に目立つと感じた。もっとゆっくりと筆を上下できる機構にすればよかった。