2015a/Member

ボールを転がして空き缶に当てるロボット

はじめに

今回は半径1m以内にある空き缶を探して、25cmの距離からボールを転がしてその空き缶に当てるロボットを作った。超音波センサーを使ってボールを当てる対象物である缶を発見する。一周目の回転で缶のある場所を覚えて、二週目の回転でその位置まで回転し、15僂里箸海蹐泙廼瓩鼎い董▲タパルトから缶に向かって、ボールを発射する。

ロボット本体構造

モーターA,Bに左右のタイヤをつけ、モーターCにアームを取り付けた

機体の外観

カタパルトがついている IMG_2417.JPG

ボールを投げる構造(カタパルト)

投石器の様にアームを使って投げることが出来る様になっている。 IMG_2413.JPG  IMG_2415.JPG IMG_2416.JPG IMG_2420.JPG IMG_2419.JPG

超音波センサー

IMG_2417.JPG

プログラム定義

   #define turn_left OnFwd(OUT_A,25);OnRev(OUT_B,25);
   #define turn_right OnFwd(OUT_B,25);OnRev(OUT_A,25);
   #define go_forward OnFwd(OUT_AB,25);
   #define TURN_TIME_10=147; //10°回転する時間

空き缶の位置を超音波センサーで探すプログラム

10°ずつ回転して超音波センサーで測定する。測定した値が保持している最小値よりも小さかった場合、測定した最小値を更新していく。

       int scan_angle(int a){ //0<=a<=36で指定 a*10°の範囲をスキャンする
	PlaySound(SOUND_CLICK);
	Wait(500);
	int min_temp=0; //仮の最小
	int min=100; //最小
	int angle=0; //最小を記録した角度[°]
	int i=0; //i*10[°]ごと記録する
	int turn_time=TURN_TIME_10;
	repeat(a){
		min_temp=SensorUS(S4);
		if(min>=min_temp){ //最小値比較
			min=min_temp; //最小値更新
			angle=i*10; //最小値
			PlaySound(SOUND_LOW_BEEP);
			Wait(500);
		}
		turn_right;
		Wait(turn_time);
		i++;
	}
	return angle;

空き缶の位置まで回転するプログラム

       task main(){
	int machine_turn_time=0; //ロボット回転時間
	SetSensorLowspeed(S4);
	int angle=scan_angle(36); //360°スキャン
	if(angle<=180){
		machine_turn_time=TURN_TIME_10*angle;
		go_forward;
		Wait(machine_turn_time);
		Off(OUT_AB);
	}else{
		machine_turn_time=TURN_TIME_10*angle;
		go_forward;
		Wait(machine_turn_time);
		Off(OUT_AB);
               }

缶まで前進するプログラム

       int flg=0;
	while(flg==0){
       go_forward;
       if(SensorUS(S4)<=15){
	flg=1;
		}
	}
       Off(OUT_AB);

ボールを投げるプログラム

OnFwd(OUT_C,100); //ボール射出
Wait(500);
}

問題点

電池の消耗で回転に要する時間が変わって正確な角度まで回転できない。 ボールの射出方式が悪く、ボールを遠くに飛ばせなかった。

感想

超音波センサーが反応して素直に感動した。ボールを缶に当てるつもりだったがなかなか難しかった。


添付ファイル: fileIMG_2420.JPG 200件 [詳細] fileIMG_2419.JPG 206件 [詳細] fileIMG_2418.JPG 101件 [詳細] fileIMG_2417.JPG 221件 [詳細] fileIMG_2416.JPG 214件 [詳細] fileIMG_2415.JPG 208件 [詳細] fileIMG_2414.JPG 82件 [詳細] fileIMG_2413.JPG 220件 [詳細]

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