2010a/A5R

課題 似顔絵ロボット

目標

似顔絵を描く。

コンパクトにする。

ロボットの外観

初めは次のようなロボットを製作しました。三輪、前輪で駆動&旋回。
shodai.JPGshodai2.JPG
arm_shodai.JPG

これで書いた絵
kao1.JPG

しかし前輪と後輪が離れているために小回りが利かず円は書くことはできたものの細かい動きはできませんでした。 またペンの位置も不安定でした。 上記の問題点を解決するために前輪と後輪の距離はできるだけ近くにし、ペンの位置は頭の中心に取り付けることによってプログラミングをするときにペンの位置を観察しやすいようにしました。 試行錯誤を重ねて作り上げた二代目
kansei.JPG

アームは少し斜めに取り付けることによってペンを下しているときにしっかりと紙につくようになりました。
arm.JPG

ロボット内部中央(ブロック縦2マス、横4マス、高さ2マスの小さな隙間)にペンの上げ下げをする棒を取り付けることによってどの班のロボットよりも小さくて軽い左右対称ロボットを実現することができました。 このアームこそ一番苦労した部分です。


arm_nakami.JPG

はじめは固定された後輪だったために回転したときに後輪を引きずるような感じになり回転後の位置がいつも一定になりませんでした。そこで後輪を回るようにして回転後の位置が正確になるようにしました。
taiya.JPG

Andoのプログラム

#define tt 49	//90°(基準値)
#define ct 51	//ターンの位置調整時間
sub pon()	//ペン接地
{
   OnFwd(OUT_B);Wait(100);
   Off(OUT_B);
}
sub poff()	//ペン上げ
{
   OnRev(OUT_B);Wait(150);
   Off(OUT_B);
}
void left(int t)
{
   OnRev(OUT_A); OnFwd(OUT_C); Wait(t);
   Off(OUT_A+OUT_C);
}
void right(int t)
{
   OnFwd(OUT_A); OnRev(OUT_C); Wait(t);
   Off(OUT_A+OUT_C);
}
void go(int t)
{
   OnFwd(OUT_A+OUT_C); Wait(t);
   Off(OUT_A+OUT_C);
}
void back(int t)
{   
   OnRev(OUT_A+OUT_C);Wait(t);
   Off(OUT_A+OUT_C);
}
void adj()	//位置調整
{
	poff();
	go(ct);
}
void goon(int t)	//描画前進
{
	back(ct);
	pon();
	go(t);
}
sub jigzag()	//ジグザグ走行
{
	OnFwd(OUT_A);Wait(30);Off(OUT_A);
	OnFwd(OUT_C);Wait(30);Off(OUT_C);
}
task main()
{
	//輪郭
	goon(100);
	adj();
	left(tt);
	goon(80);
	adj();
	left(tt);
	goon(100);
	
	//目
	poff();
	go(30);
	left(tt);
	back(ct);
	go(20);
	pon();
	go(20);
	poff();
	go(20);
	pon();
	go(20);
	poff();
	go(20);
	//眉毛
	adj();
	right(tt/3*5+10);//150°+10
	goon(28);
	adj();
	right(tt/3*2);//60°
	goon(28);
	adj();
	left(tt/3*2);//60°
	goon(28);
	adj();
	right(tt/3*2);//60°
	goon(28);
	
	adj();
	right(tt/3*2);//60°
	
	//口
	right(10);
	
	go(50);
	right(tt);
	go(20);
	goon(40);
	adj();
	go(20);
	right(tt+10);
	
	go(40+ct);
	right(tt);
	back(ct);
	
	//髪
	pon();
	repeat(3)
	{
		jigzag();
	}
	
	//終わり
	poff();
	//back(150);
}

ロボットの位置修正のためにそのば凌ぎプログラムが増えてしまい、とても長くなりました。

完成した絵


kao2.JPG

余計な線が多め。挫折のようなものを感じました。現実は厳しい。

YUのプログラム

#define TURN_TIME 51 //関数を使い繰り返しをうまくまとめる。
 void turn_left() //左に90度回転

{

   
  OnRev(OUT_A); 
  OnFwd(OUT_C); 
  Wait(TURN_TIME);
 
  Off(OUT_A+OUT_C);

}

 void turn_right() //右に90度回転

{

  OnFwd(OUT_A);
  OnRev(OUT_C);
  Wait(TURN_TIME);
  
  Off(OUT_A+OUT_C);

}

 
void go_straight(int t) //直進           

{

  
  OnFwd(OUT_A+OUT_C);
  Wait(t);  // t/100 秒直進する
  
  Off(OUT_A+OUT_C);

}

 void go_back(int t) //後ろに進む

{

  
  OnRev(OUT_A+OUT_C);
  Wait(t);
 
  Off(OUT_A+OUT_C);

}

 void pen_on(int t) //ペンを下す。

{

   
  OnFwd(OUT_B);
  Wait(t);
 
  Off(OUT_B);

}

 void pen_off(int t) //ペンをあげる。

{

  
  OnRev(OUT_B);
  Wait(t);
  
  Off(OUT_B);

}

 task main()

{

   
  go_straight(120); //顔の輪郭一画目
 
  pen_off(150);
 
  go_straight(51);
 
  turn_left();   
 
  go_back(51);
 
  pen_on(110);
 
  go_straight(100); //顔の輪郭二画目
 
  pen_off(150);
 
  go_straight(51);
 
  turn_left();   
  
  go_back(51);
 
  pen_on(110);
 
  go_straight(120); //顔の輪郭三画目
 
  pen_off(150);
 
  go_straight(51);
 
  turn_left();   

  go_back(40);
 
  pen_on(110);
 
  go_straight(28); //目
 
  pen_off(150);
 
  go_straight(15);
 
  pen_on(110);
 
  go_straight(28); //目
 
  pen_off(150);
 
  go_straight(13);
 
  turn_left();
 
  go_back(15);
 
  pen_on(110);
 
  go_straight(20); //鼻

  pen_off(100);
 
  go_straight(20);
 
  pen_on(120);
 
  turn_left(); //にっこりした口   

}

完成した絵


kao3.JPG

問題点、工夫した所

後輪をよく動くようにした。機動力が上がった。

コンパクトさで重心が前になりすぎて、旋回時や停止時に余計な線を書いてしまった。

棒を押し出してアームをあげる仕組みにしたら、上げ幅がとても小さくなった。

感想

思いのほか大変でした。ロボットが握りが弱い寿司のように崩れる場面があって、 メンテナンスの事も考えて作る必要があると感じました。うまくいくときいかないときがあるので確実性も必要だと思いました。(Ando)

綺麗な顔が書けるようにとにかく小回りのきくロボットを作るようにしました。とくに筆を持たせるアーム部分は苦労の連続で安定した動きをさせるようにするにはかなり時間がかかりましたが、二人で何回も話し合って納得のいくロボットを作り上げることができました。(YU)

コメントをどうぞ



添付ファイル: filearm_shodai.JPG 280件 [詳細] fileshodai2.JPG 294件 [詳細] filetaiya.JPG 318件 [詳細] fileshodai.JPG 265件 [詳細] filekao3.JPG 276件 [詳細] filekao2.JPG 262件 [詳細] filekao1.JPG 307件 [詳細] filearm_nakami.JPG 294件 [詳細] filearm.JPG 273件 [詳細] filekansei.JPG 361件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-21 (金) 12:44:57