#contents

*目標 [#o42d4d1e]
「舜」という字を書く。

*ロボット [#m9935bfe]
試作2号機です。文字の通りに走らせて書く事にしました。

&ref(new_IMG_0280.jpg);

&ref(new_IMG_0283.jpg);

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

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

これが前輪の画像です。

&ref(new_IMG_0282.jpg);

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

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

&ref(new_IMG_0281.jpg);

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

&ref(new_書き順.jpg);

*プログラム [#rb5f1b67]
**定義 [#ubc86ed1]
筆上下する時間は微調整が必要でした。右左折はあらかじめよく使う時間を設定しました。

 #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); //直進

**プログラミング [#ia7c91d7]

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

*反省点 [#i6e65064]
後輪の車輪が大きすぎて予想より多く進んでしまった。

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

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



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