ロボット

概要

DSC_0342.JPG DSC_0343.JPG

写真のとおりヒトの腕に見立てたロボットを組み立てた。

モーターはそれぞれ

  • ペンの上げ下げ
  • 手首の役割
  • 肘の役割

ロボット本体は据え置きでアームの動きだけで書くところへ移動できる。

書ける範囲は限られるが手首と肘の動きの組み合わせで直線も曲線もしっかりと書くことができる。

工夫

・肘のモーターの下にタイヤを寝かせて付けることでモーターを動かしてもずれないようにした。

・ペンは円運動で上げ下げするのでペン先を引きずらないようストッパーを取り付けた。

DSC_0359.JPG

プログラム

#define up_pen OnRev(OUT_A,10);Wait(700);Off(OUT_A);			//ペンを上げる
#define down_pen OnFwd(OUT_A,10);Wait(800);Off(OUT_A);			//ペンを下げる
#define turn_left_b(t) OnRev(OUT_B,20);Wait(t);Off(OUT_B);		//手首を左
#define turn_right_b(t) OnFwd(OUT_B,20);Wait(t);Off(OUT_B);		//手首を右
#define turn_left_c(t) OnFwd(OUT_C,25);Wait(t);Off(OUT_C);		//肘を左
#define turn_right_c(t) OnRev(OUT_C,25);Wait(t);Off(OUT_C);		//肘を右
#define all_off Off(OUT_ABC);Wait(1800);				//モーターを止め静止
  
  
  
task main ()
{
 	turn_left_b(900);
	turn_right_c(200);
	down_pen;
	all_off;				//最初の位置へ向かう
	     
	OnRev(OUT_B,20);
	OnRev(OUT_C,25);
	Wait(250);
	all_off;				//1   
      
	up_pen;
	turn_left_c(100);
	down_pen;
	all_off;	            //2へ向かう
     
	OnRev(OUT_B,20);
	OnRev(OUT_C,25);
	Wait(200);
	all_off;				//2  
     
	up_pen;
	turn_left_b(600);
	turn_left_c(100);
	down_pen;
	all_off;                //3へ向かう
     
	OnFwd(OUT_B,25);
	OnRev(OUT_C,20);
	Wait(300);
	all_off;				//3 
     
	up_pen;
	turn_right_b(300);
	turn_left_c(100)
	down_pen;
	all_off;                //4へ向かう
     
	OnFwd(OUT_B,20);
	OnRev(OUT_C,20);
	Wait(400);
	all_off;				//4
    
	OnRev(OUT_B,18);
	OnRev(OUT_C,25);
	Wait(650);
	all_off;				//5
    
	OnRev(OUT_B,21);
	OnFwd(OUT_C,25);
	Wait(200);
	Off(OUT_B);
	Wait(50);	
	all_off;				//6
   
	OnFwd(OUT_B,25);
	OnFwd(OUT_C,20);
	Wait(250);	
	all_off;				//7
    
	up_pen;	
	OnRev(OUT_B,18);
	OnRev(OUT_C,18);
	Wait(150);
	all_off;
	down_pen;
	all_off;	            //8へ向かう			
    
	OnFwd(OUT_B,14);
	OnRev(OUT_C,20);
	Wait(550);
	all_off;				//8 
     
	up_pen;
	OnRev(OUT_B,18);
	OnRev(OUT_C,20);
	Wait(500);
	all_off;				
	down_pen;
	all_off;                //9へ向かう
     
	OnRev(OUT_B,17);
	OnRev(OUT_C,18);			//9  
	Wait(400);
	all_off;
	 
	up_pen;
	turn_right_b(100)	
	turn_left_c(100)
	down_pen;	
	all_off;                //10へ向かう
    
	OnRev(OUT_B,20);
	OnRev(OUT_C,20);
	Wait(180);
	all_off;				//10
    
	up_pen;
	turn_right_b(200);
	turn_right_c(200);
	down_pen;
	all_off;	            //11へ向かう			
     
	OnRev(OUT_B,15);
	OnRev(OUT_C,20);
	Wait(330);
	all_off;				//11
	 
	up_pen;
	turn_left_b(100)
	turn_left_c(200)
	down_pen;
	all_off;	            //12へ向かう
    
	OnFwd(OUT_B,18);
	OnRev(OUT_C,30);
	Wait(270);
	all_off;				//12
    
	up_pen;
	turn_left_b(200)
	turn_left_c(100)
	down_pen;
	all_off;                //13へ向かう
	   
	OnRev(OUT_B,20);
	Wait(600);
	all_off;				//13
     
	up_pen;
	OnFwd(OUT_B,13);
	OnRev(OUT_C,17);
	Wait(400);
	all_off;
	down_pen;
	all_off;			    //14へ向かう	
       
	OnRev(OUT_B,17);
	OnRev(OUT_C,25);
	Wait(600);
	all_off;				//14
     
	OnFwd(OUT_B,15);
	OnRev(OUT_C,20);
	Wait(400);
	all_off;				//15
     
	OnFwd(OUT_B,20);
	OnFwd(OUT_C,20);
	Wait(100);
	all_off;				//16
	 
	  
   
}

書き順は下の写真の通りである。

DSC_0368.JPG

肘と手首のモーターを動かす向きと大きさを把握するために下の写真のものを使った。

DSC_0348.JPG

簡単にアームを再現したものである。 穴に鉛筆を差して字を書くことでモーターを動かす数値をある程度決めることができた。

肘と手首のモーターの動かす向き、大きさ、時間の組み合わせのバリエーションがとても多いのでマクロは使わなかった。

ペンを上げているときは肘と手首を同時に動かす必要はないのでマクロを利用した。

DSC_0350.JPG

完成した「滉」

反省

数値は同じでもペンを降ろす場所によって描く線が変わるので調整に時間がかかった。

マクロやサブルーチンをあまり使えなかった。変数を使えばできるのではないかと考えたので利用してみたかった。


添付ファイル: fileDSC_0368.JPG 125件 [詳細] fileDSC_0348.JPG 135件 [詳細] fileDSC_0359.JPG 119件 [詳細] fileDSC_0350.JPG 117件 [詳細] fileDSC_0342.JPG 131件 [詳細] fileDSC_0343.JPG 129件 [詳細]

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