ロボコン

ルール

基本-箱を運びある範囲に積む。

試作品 ロボット

役割

4つの箱を積み上げる。
もっとも初めに考えたロボットで1つのロボットを使い4つの箱を横から縦に変えて4つセットなものを四角い場所に運んでくる、もう一つのロボットで4つの箱をつかみ上げ下げを2回行うと成功するのではと思われた。

構造

この構造は箱を4つつかむ機構

掴む機構

上の絵で解るようにこの機構を使うと多くの面を使い紙パックを押し付けることができる。実際に作くると下のような感じになる。

掴む機構

プーリを使うことによりモータを回転し続け緩まないようになっている。
また1つのモータで前後左右の2つの方向に押すことができる。

このロボットの問題点

ロボット 1つの場合(試作)

役割

このロボットの役割は箱をつかんで後ろの籠に積みながら入れていくものです。

役割

構造

ロボット試作

試作品なのでアームと籠を付けただけの簡単なものです。 この時点でいくつかの問題点がありました。

ロボット 1つの場合(試合用)

前回の失敗を改善、何とか動く。

ロボット完成品

役割

上記の役割はそのままに

構造

構造の問題点

数々の失敗をしてしまいましたがいくつか大きなもの紹介します。

プログラム

2011b/A4/Bluetoothを使った通信方法

アームを操作する側のNXT(マスター)

#define BT_CONN 1	//接続するスレーブの番号(ポート1)
#define IN_BOX 1		//受信するメールボックス(1)
#define OUT_BOX 5	//送信するメールボックス(5)

int washaflag=0;		//後ろの籠を動かすか否かのフラグ

/*
 スレーブ側からメッセージが届くまでマスターのプログラムを停止させる。
 */
sub Mblock(){		
	int in;
	while(true){
		ReceiveRemoteNumber(IN_BOX,true,in);//メッセージを受けるまで無限ループ
		if(in==1){
			break;
		}
	}
}

/*
 スレーブへメッセージを送り、スレーブ側のプログラムを動かす。
*/
sub Mokay(){
	SendRemoteNumber(BT_CONN,OUT_BOX,1);
}

/*
 後ろの籠を動かすタスク(submainと同時起動)
*/
task washawasha(){
	while(true){
		if(washaflag){	//グローバル変数washaflagによって動かすか判定
	  		OnFwd(OUT_C,100);
	  		Wait(300);
	  		OnRev(OUT_C,100);
	  		Wait(250);
		}
	}
}

/*
 メインの関数(washawashaと同時起動)
*/
task submain(){
	washaflag=1;
	SetSensorTouch(IN_1);
	RotateMotor(OUT_A,60,2700);	//アームを下ろす
	OnFwd(OUT_B,100);		//アーム先を閉める
	Wait(30000);
	OnRev(OUT_A,60);			//Sensor1が押されるまで
	while(!Sensor(IN_1));		//アームを上げる
	Off(OUT_A);			//
	OnRev(OUT_B,100);		//アーム先を開ける
	Wait(30000);
	Off(OUT_B);
	Mokay();				//スレーブに制御を渡す
	Mblock();				//
	
	RotateMotor(OUT_A,60,2700);	//以下同
	OnFwd(OUT_B,100);
	Wait(30000);
	OnRev(OUT_A,60);
	while(!Sensor(IN_1));
	Off(OUT_A);
	OnRev(OUT_B,100);
	Wait(30000);
	Off(OUT_B);
	Mokay();
	Mblock();

	RotateMotor(OUT_A,60,2700);
	OnFwd(OUT_B,100);
	Wait(30000);
	OnRev(OUT_A,60);
	while(!Sensor(IN_1));
	Off(OUT_A);
	OnRev(OUT_B,100);
	Wait(30000);
	Off(OUT_B);
 } 

task main(){
	Precedes(submain, washawasha);	//タスクsubmain, washawashaを並列起動。
}

移動を制御する側のNXT(スレーブ)

ロボット完成が遅く実際のコースを体験することなく試合当日になってしまいました。 申し訳ありませんでした。

感想 と来年以降NXTを使用する皆様へ一言

志村

今回は時間を多くかけたにもかかわらずこのような結果を招いたことを申し訳なく思います。もう少しレゴの負担を少なくするべきでした。試作品が完成し実走させて動かないことを確認した後で大きなフォルムチェンジをしコース走行可能な状態になったのが試合3日前、テスト走行は試合当日になってから、部分的なテストはしていたものの、実際の動きは大きくずれがありとても制御することができるものではありませんでした。
来年以降の人にアドバイスするなら無理な構造は早くあきらめて他の方法についてしっかり考えることだと思います。あまり焦って作ってもいいものはできません。予想される問題についてもしっかり吟味する必要があります。NXTの部品はピンを使用した固定が主になると思います。ピンはせん断には強いですが引張りにはあまり効果がありませんのでそのことをよく考えて作ってください。 最後に、NXTはRCXに比べて部品数が少ない気がしますが弱音を吐かずに頑張ってください。

中村

まずはギアの破損についてお詫び申し上げたいと思います。すみませんでした。原因や、機械的なことは志村君が書いたもので十分だと思うので、プログラムについてと感想を書きます。

まず、プログラムについて。NXCは割と癖のある言語です。C言語やC++言語に非常に似てはいるのですが、ポインタが存在しないなどの大きな違いがあります。これには戸惑うこともあると思いますが、割と何とかなります。NXTはかなり高性能なので、無理な記述も可能でしょう。とにかく本番と同じ条件で何度も動かすことが重要です。誤差が出たら何回も修正していきましょう。

次に、感想を。結局あのような結果になってしまったものの、今回私はかなりの達成感を得ることができました。土日を挟んだために実際のコースで走らせられる時間は少なかったものの、ロボット製作は楽しいものでしたし、紙パックをかごに入れることができたときにはとてもうれしかったです。

コメント

気になったこと等ありましたらお気軽にコメントして下さい。



添付ファイル: filekago2.jpg 426件 [詳細] filekago.jpg 441件 [詳細] fileude_2.gif 67件 [詳細] fileude_04.jpg 582件 [詳細] filekanseirobo.jpg 470件 [詳細] fileyakuwari.gif 565件 [詳細] filehakai.jpg 413件 [詳細] filesensa.gif 504件 [詳細] filetest001_1.jpg 396件 [詳細] file超音波センサー.jpg 522件 [詳細] fileNXC配置.jpg 447件 [詳細] fileIMG_0871-1.jpg 193件 [詳細] filetest01_1.jpg 232件 [詳細] filetest01_2.jpg 227件 [詳細] filetest02_1.jpg 425件 [詳細] filetest02_2.gif 519件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-02-23 (木) 22:06:32