* 書道ロボット [#c0e62fb4]

** お題 [#gce7f8c1]
「胡」という文字を書く
** 課題 [#gce7f8c1]
各自の名前の中から1文字を書く。私は「胡」という文字を書くことにした

** ロボット外観 [#c79738c0]

前輪を自由車輪にし、タイヤの軸の中心にペンを下ろすことで旋回による角度つけが可能となった
*** コメント [#de27c6f9]
私は本に載っていたスタンダードタイプの走行ロボットをそのまま文字の通りに走らせて書くことにした。

ペンの上げ下ろしはタイヤに挟んでプログラミングで上下できるようにした。
#ref(./image2.JPG)

はじめ作ったロボットでは車体の中心からペンを下ろすと中心点がズレていて、
旋回時に、要らない扇型が描かれてしまった。

そこで
前輪を自由車輪にし、タイヤの軸の中心にペンを下ろすことで旋回した時にペンを動かさず中心軸にして回転できるようになった。による角度つけが可能となった

#ref(./image1.JPG)
#ref(./image2.JPG)

#ref(./image3.JPG)

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

*** 定数 [#a74c7114]
 #define Mtime 10	//筆上下する時間

ここで規定した時間はペンの上げ下ろしで同時間にしてあるが
以下のマクロにある通り、ペンを下ろす時はフロートにして若干の力で自然に紙にペンが触れるように工夫した。

*** マクロ [#j051db33]
 #define pen_down OnRev(OUT_B);Wait(Mtime);Float(OUT_B);	//ペンを降ろす
 #define pen_up OnFwd(OUT_B);Wait(Mtime);Off(OUT_B);	 //ペンを上げる

 #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); //前進
 #define back(s) OnRev(OUT_AC);Wait(s);Off(OUT_AC); //後退

 #define turn_left(l) OnFwd(OUT_C);OnRev(OUT_A);Wait(l);Off(OUT_AC); //左旋回
 #define turn_right(r) OnRev(OUT_C);OnFwd(OUT_A);Wait(r);Off(OUT_AC); //右旋回

*** メイン [#e3359fe3]

「胡」の「古」の部分の左上、書き順の始まりから始める。
書き順は無視し書いた場所もなぞりながら書いていく

 task main ()
 {

	pen_down;
	go(200);
	back(100);
	turn_right(90);
	back(100);
	go(200);
	pen_up;
	turn_left(90);
	go(100);
	pen_down;

	repeat(4){
		turn_right(90);
		go(200);
		}

	pen_up //古の部分書き終わり

	turn_right(90);
	go(200);
	turn_left(90);
	go(100);
	turn_left(90);

	pen_down; //月の部分書き始め

	go(400);
	turn_left(90);
	go(100);
	turn_left(90);

	pen_up;
	back(200);
	turn_left(90);
	pen_down;
	go(100);
	pen_up;

	turn_left(90);
	go(100);
	turn_left(90);

	pen_down;
	go(100);
	pen_up;
 }

** 考察 [#r38d8b5f]

今回書いた文字はまっすぐな線。曲がり角は全て直角で簡単だったため走行しながらなぞっていくロボットにしてしまったが
アームを使って人の手のような筆使いで書くロボットも作ってみたい。
ペンの上げ下ろしをする部分は自由タイヤも使って摩擦を大きく固定してみた。
一般性を重視してスタンダード型からの改造を試みたロボットであったが専用のロボットとして作り極めていくことも大事だと思った。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS