[[2015a/Member]] *書道ロボット(名前) [#vdf158c3] **はじめに [#w9ac1c74] このページは2015年ロボテッィクス入門ゼミ前期の課題1、書道ロボのページである。 **ロボットの説明 [#xf3f0713] #ref(IMG_20150605_124126.jpg,,30%) このロボットは真ん中に穴が開いており、タイヤを使ってペンが上下できるように作られている。 ペンは通常のサインペンであればどれでも対応可能である。 土台は基本的な形で、右と左にタイヤが2つずつくっついて設置してある。 プログラミングが記憶されている機械は後ろについているので、重心を安定させるために前におもり 代わりのレゴブロックを設置している。 文字を書く際はロボット自体が線の軌跡をたどり、線が途切れているところではペンを上げることで対応している。 **プログラムについて [#b955b91c] #define turn_right(t) OnRev(OUT_C); OnFwd(OUT_A);\ Wait(t);Off(OUT_AC); #define turn_left(t) OnRev(OUT_A); OnFwd(OUT_C);\ Wait(t);Off(OUT_AC); #define go_forward(t) OnFwd(OUT_AC);\ Wait(t);Off(OUT_AC); #define go_back(t) OnRev(OUT_AC);\ Wait(t);Off(OUT_AC); #define go_down(t) OnRev(OUT_B); Wait(t);Off(OUT_B) #define go_up(t) OnFwd(OUT_B); Wait(t);Off(OUT_B) task main() { go_forward(50); turn_left(78); go_forward(50); turn_left(78); go_forward(25); go_back(75); turn_right(39); go_forward(75); turn_left(78); go_forward(13); go_back(25); go_forward(12); turn_left(78); go_forward(38); turn_left(78); go_forward(25); go_up(25); turn_right(78); go_forward(38); turn_left(39); go_down(25); go_back(13); go_up(25); turn_right(39); go_back(63); turn_right(39); go_down(25); go_back(13); go_up(25); turn_right(45); go_forward(100); turn_right(90); go_down(25); go_forward(50); turn_left(117); go_forward(35); turn_left(117); go_forward(100); turn_left(78); go_forward(50); turn_left(78); go_forward(10); go_up(25); go_forward(50); go_down(25); go_back(15); turn_left(78); go_forward(50); turn_right(78); go_forward(15); } 今回は「純」の字を書いた。 基本的には書き順通りだが、限界があるので、逆から書いていたりしている。 それぞれについて説明していく。 #define turn_right(t) OnRev(OUT_C); OnFwd(OUT_A);\ Wait(t);Off(OUT_AC); 右にまわるプログラミングの名前を定義 #define turn_left(t) OnRev(OUT_A); OnFwd(OUT_C);\ Wait(t);Off(OUT_AC); 左にまわるプログラミングを定義 #define go_forward(t) OnFwd(OUT_AC);\ Wait(t);Off(OUT_AC); まっすぐ進むプログラミングを定義 #define go_back(t) OnRev(OUT_AC);\ Wait(t);Off(OUT_AC); 後ろに進むプログラミングを定義 #define go_down(t) OnRev(OUT_B); Wait(t);Off(OUT_B) ペンをおろすプログラミングを定義 #define go_up(t) OnFwd(OUT_B); Wait(t);Off(OUT_B) ペンを上げるプログラミングを定義 以上が定義したものである。 ここからメインの部分 go_forward(50); turn_left(78); go_forward(50); ここまでが1画目 turn_left(78); go_forward(25); go_back(75); turn_right(39); go_forward(75); ここまでが2画目 turn_left(78); go_forward(13); go_back(25); go_forward(12); turn_left(78); ここまでが3画目 go_forward(38); turn_left(78); go_forward(25); go_up(25); turn_right(78); go_forward(38); turn_left(39); go_down(25); go_back(13); go_up(25); turn_right(39); go_back(63); turn_right(39); go_down(25); go_back(13); go_up(25); turn_right(45); go_forward(100); turn_right(90); go_down(25); go_forward(50); turn_left(117); go_forward(35); turn_left(117); go_forward(100); turn_left(78); go_forward(50); turn_left(78); go_forward(10); go_up(25); go_forward(50); go_down(25); go_back(15); turn_left(78); go_forward(50); turn_right(78); go_forward(15);