- 追加された行はこの色です。
- 削除された行はこの色です。
[[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);