2015a/Member

書道ロボット(名前)

はじめに

このページは2015年ロボテッィクス入門ゼミ前期の課題1、書道ロボのページである。

ロボットの説明

IMG_20150605_124126.jpg

このロボットは真ん中に穴が開いており、タイヤを使ってペンが上下できるように作られている。

ペンは通常のサインペンであればどれでも対応可能である。

土台は基本的な形で、右と左にタイヤが2つずつくっついて設置してある。

プログラミングが記憶されている機械は後ろについているので、重心を安定させるために前におもり 代わりのレゴブロックを設置している。

文字を書く際はロボット自体が線の軌跡をたどり、線が途切れているところではペンを上げることで対応している。

プログラムについて

#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_up(25);
	go_forward(35);
	turn_left(117);
        go_down(25);
	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);

3画目から4画目への移動

	go_forward(25);
	go_up(25);

ここまでが4画目

	turn_right(78);
	go_forward(38);
	turn_left(39);

ここは4画目から5画目への移動

	go_down(25);
	go_back(13);
	go_up(25);

ここまでが5画目

	turn_right(39);
	go_back(63);
	turn_right(39);
	go_down(25);

ここは5画目から6画目への移動

	go_back(13);
	go_up(25);
	turn_right(45);

ここまでが6画目これで糸へんはおしまい

	go_forward(100);
	turn_right(90);
	go_down(25);

ここは6画目から7画目への移動

	go_forward(50);
	turn_left(117);
        go_up(25);

ここまでが7画目

	go_forward(35);
	turn_left(117);
        go_down(25);

ここが変則的 純の字の縦につっきる部分を先に書く

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

これで完成

おわりに

とりあえず完成はしたが、かなりいびつになってしまった。

原因はタイヤがたまに空回りすることだと思った。

純の字かの字か悩んだが、戻るほうが大変なのでこっちにした。

直接ロボットが動くほうが頭の中で想像しやすくプログラミングしやすいので、こっちを選んでよかった。


添付ファイル: fileIMG_20150605_124126.jpg 130件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-06-11 (木) 22:27:47