[[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);


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS