目標

「舜」という字を書く。

ロボット

試作2号機です。文字の通りに走らせて書く事にしました。

new_IMG_0280.jpg

new_IMG_0283.jpg

試作1号機ではペンをロボット本体の中心に設置しても回転軸のズレから、ロボットがカーブすると筆跡はいびつな形になってしまいました。

そこで、回転軸の中心にペンをおくため、中心がわかりやすい三輪車にする事にしました。前輪には動力はついていません。

これが前輪の画像です。

new_IMG_0282.jpg

そして、回転軸の中心は後車輪の真ん中とわかったのでそこにペンを設置。これで直線のズレは防ぐことができます。

この装置はタイヤでペンを挟んでプログラミングでペンの上下が可能です。

new_IMG_0281.jpg

書き順

今回、正式な書き順じゃなくても良かったのでロボットにはできるだけ最短距離を進ませる事にしました。あと、効率を重視して近くの線に向かわせることです。

new_書き順.jpg

プログラム

定義

筆上下する時間は微調整が必要でした。右左折はあらかじめよく使う時間を設定しました。

#define Mtime 10 //筆上下する時間
#define pen_down OnRev(OUT_B);Float(OUT_B); //ペンを下ろす
#define pen_up OnFwd(OUT_B);Off(OUT_B); //ペンを上げる
#define turn_left1 OnFwd(OUT_C);OnRev(OUT_A);Wait(90);Off(OUT_AC); //90度左折
#define turn_left2 OnFwd(OUT_C);OnRev(OUT_A);Wait(45);Off(OUT_AC); //45度左折
#define turn_left3 OnFwd(OUT_C);OnRev(OUT_A);Wait(135);Off(OUT_AC); //135度左折
#define turn_right1 OnFwd(OUT_A);OnRev(OUT_C);Wait(45);Off(OUT_AC); //45度右折
#define turn_right2 OnFwd(OUT_A);OnRev(OUT_C);Wait(90);Off(OUT_AC); //90度右折
#define turn_right3 OnFwd(OUT_A);OnRev(OUT_C);Wait(135);Off(OUT_AC); //135度右折
#define go_short OnFwd(OUT_AC);Wait(20);Off(OUT_AC); //直進

プログラミング

task main()
{
	pen_down; // 1画目
	OnFwd(OUT_AC);
	Wait(30);
	Off(OUT_AC);
	pen_up;

	turn_left3;
	
	go_short;

	turn_left1;
	
	pen_down; // 2画目
	go_short;
	pen_up;

	turn_right2;

	go_short;

	turn_right2;

	pen_down; // 3画目
	go_short;
	pen_up;

	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);

	turn_left3;
	
	pen_down; // 4画目
	OnFwd(OUT_AC);
	Wait(30);
	Off(OUT_AC);
	pen_up;

	turn_right3;

	OnFwd(OUT_AC);
	Wait(40);
	Off(OUT_AC);

	turn_left3;

	pen_down; // 5,6,7画目
	go_short;
	turn_left3;
	OnFwd(OUT_AC);
	Wait(40);
	Off(OUT_AC);
	turn_left1;
	go_short;
	pen_up;

	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);

	turn_left1;

	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);

	turn_left2;

	pen_down; // 8,9,10画目
	go_short;
   	turn_right1;
	OnFwd(OUT_AC);
	Wait(10);
	turn_right3;
	OnFwd(OUT_AC);
	Wait(30);
	Off(OUT_AC);
	turn_left3;
	pen_up;
	
	go_short;
	
	turn_left1;

	pen_down; // 11画目
	go_short;
	pen_up;

	turn_right2;

	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);

	turn_right2;
	
	go_short;

	turn_right2;

	pen_down; // 12画目
	go_short;
	pen_up;

	OnRev(OUT_AC);
	Wait(10);
	Off(OUT_AC);

	turn_right2;

	pen_down; // 13画目
	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);
	pen_up;

	turn_left1;

	OnRev(OUT_AC);
	Wait(15);
	Off(OUT_AC);

	pen_down; // 14画目
	OnFwd(OUT_AC);
	Wait(15);
	Off(OUT_AC);
	pen_up;

	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);

	pen_down; // 15画目
	OnFwd(OUT_AC);
	Wait(10);
	Off(OUT_AC);
	pen_up;

}

反省点

後輪の車輪が大きすぎて予想より多く進んでしまった。

試作1号機の写真も残しておけばよかったです。

プログラムは非常に長くなってしまった。OnRevを使えばもう少し短くなったと思います。


添付ファイル: filenew_書き順.jpg 197件 [詳細] filenew_IMG_0283.jpg 215件 [詳細] filenew_IMG_0282.jpg 207件 [詳細] filenew_IMG_0281.jpg 237件 [詳細] filenew_IMG_0280.jpg 217件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-07-16 (木) 19:12:45