2017a/Member

目次

1.課題について

コースマップ

この課題は、図のピンクの丸に置かれた缶をGOALまで運び、積んでいくものである(課題3参照)。。

2.方針

僕たちの班は缶を積むロボットと缶を集めてGOALまで運ぶロボットに分けてやることにした。

積むロボット

-積むロボットは最初にロータリーからスタートして、T地点の缶を掴んで待機しておく。 -bluetoothの信号が来たら、缶を積む。 -積まれた缶の一番下を掴んで持ち上げて待機 以降◆↓を繰り返し。

運ぶロボット

-缶を集めてGOAL地点に届ける。 -積むロボットに信号を送る。 以降 ↓△魴り返し

3.ロボット

缶を積むロボット

積むロボット_アーム

アームの先端にゴムタイヤをつけることで缶を支えられるように した。また、このアームの先端部にモータを組み込むことで先端部を開閉できるようにし、缶を掴むという動作をできるようにした。

積むロボット_全体

四角形を変形させるようにしてアームの先端を上下させている。 缶を積むときにアームを水平に保つためにこの機構を採用した。 モータでアームを上下させるが、そのままでは回らなかったため、ギアをかませて回転させている。 アームを下に下げ切ったときに前につんのめってしまうため、タイヤの前につっかえを取り付けた。また、左右に振られるの抑えるために前輪を4つにした。

缶を運ぶロボット

運ぶロボット

本体は課題2で用いた機体に缶を保持して運ぶためのアームを取り付けた。また、缶が倒れないようにアームに幅を持たせた。

4.プログラム

・運ぶロボットはmattuを参照してください。

・積むロボットはこちら↓

//A・・・足回り  B・・・アーム上下  C・・・アーム
#define CONN 0
#define INBOX MAILBOX3
#define ang_up 340				//持ち上げ用角度
#define ang_put 80				//カン置く角度
#define ANGLE 50				//掴む用角度
#define POWER 30				//正転
#define POWER_LEGS 40			        //足回り用
#define POWER_RE -30			        //逆転
  
sub go_f(int l){		//指定距離前進
	float Ang=l*2.0463;				//回転角度計算
	RotateMotor(OUT_A,POWER_LEGS,Ang);	        //前進
	Off(OUT_A);
}
 
sub hold(){					//カンを掴む
	go_f(100);					//前進してカンの位置を合わせる
	RotateMotor(OUT_C,POWER_RE,ANGLE);	    //カン掴む
}

sub stack(){					//カンを積む
	go_f(170);					//前進してカンの位置を合わせる
	go_f(-10);					//カンから離れて位置調整
	RotateMotor(OUT_B,POWER_RE,ang_put);		//カンを置く(積む)
}

sub down_arm(){						//アームを下げる
	OnFwd(OUT_B,POWER_RE);
	Wait(1100);						
	Off(OUT_B);
}

task main(){
	int msg=0;
	until(BluetoothStatus(CONN)==NO_ERR);        //bluetoothが確立するまで待機
	go_f(-50);                                          //アームを下げるための位置調整
	down_arm(); 			               	    //アームを下げてカンを掴む準備
	while(1){
		hold();				        //カン掴む
		OnFwd(OUT_C,POWER_RE);		     //保持し続ける
		RotateMotor(OUT_B,50,ang_up);      //持ち上げる
		go_f(-150);			        //位置調整
		ReceiveRemoteNumber(MAILBOX3,true,msg);	//集める側からの信号が来るまで待機
		while(msg!=2){
			ReceiveRemoteNumber(MAILBOX3,true,msg);
			Wait(10);
		}
		stack();				//2の信号が来たら積む
		Off(OUT_C);				//カンを保持する力を抜く
		RotateMotor(OUT_C,POWER,ANGLE);		//カン離す
		go_f(-100);				//位置調整
		down_arm(); 				//アームを下げて次の準備
	}
}

詳しくはkiryuを参照してください。

5.結果

実際の発表では集めるロボットのプログラムの調整がうまくいかず、積むことをあきらめて缶をGOALの領域に運ぶことになってしまった。 結果は缶を二つをGOALまで運び6点獲得した。

6.まとめ・感想

最終的に缶を積む方のロボットをうまく動かすことができなかったのは残念である。この課題において自分は主にロボット本体の作成と積むプログラムの調整を行った。テストやサークル活動などでメンバー全員で集まる機会をなかなか作ることができず、コースを使って2台で連携させる機会が少なかったのを反省点として考える。過去2回の課題でも最後の調整に最も時間がかかっていたことを考慮に入れておくべきだった。ただ、集めて運んでくるロボットはうまく動いたのはよかった。

自分が書いたプログラムをロボット本体に転送しても自分が考えていた動きとは全く違う動きをすることが多く、それを一つずつ直していくのは大変でもあったが、楽しくやりがいを感じた。簡単な動作をさせるだけでもとても大変なことであることがわかった。自分は繊維学部機械・ロボット学科に所属しているのでこのような機会はこれからもたくさんあると思うが、ここで学んだ基礎を大切にしたい。


添付ファイル: file1502697435869.jpg 79件 [詳細] file1502697422071.jpg 76件 [詳細] file1502697403614.jpg 93件 [詳細] file2017a-mission3[1].png 76件 [詳細]

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