2012a/A4/Tnakano/M3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012a/MemberOnly/進行状況A]]
[[2012a/Member]]
[[2012a/A4]]
[[2012a/A4/Tnakano]]
目次
#contents
*課題3 ロボコン [#z6fe44ae]
-内容
ロボットが決められた位置にある空き缶を運び中身の入っ...
#ref(robocon2012a[1].png,left,nowrap,コース図)
-競技説明
詳しい競技説明とルール、得点については以下をご覧くだ...
[[2012a/ロボコン]]
**ハードウェアについて [#s91bee54]
***全体像 [#f35091e2]
これがロボットの全体像です。前方に缶を挟むための大きなハ...
#ref(robocon1.png,left,nowrap,全体像)
***ハサミ部分について [#m28ad9a2]
これがハサミの全体像です。後ろにレールをつけて、ハサミ全...
#ref(robocon2.png,left,nowrap,ハサミ全体)
これがハサミの機構です。1つのモータでハサミの両側を動かす...
#ref(robocon3.png,left,nowrap,ハサミ機構)
***駆動輪について [#oe220216]
これがマスター側の駆動輪、光センサー部分です。光センサー...
#ref(robocon4.png,left,nowrap,駆動輪、センサー)
ハサミ部分は、真ん中の上の方についている大きな2つのタイヤ...
#ref(robocon5.png,left,nowrap,ハサミ上下の機構)
これが持ち上げた時の様子です。
#ref(robocon6.png,left,nowrap,sample)
***ハードウェア反省 [#q85f300f]
反省は、まずロボット自体が大きくなりすぎてしまい、小回り...
**プログラムについて [#obb22336]
マスター側でセンサーと駆動輪、スレイブ側でハサミの開閉上...
***プラン [#q3161c04]
最初に、下の図のように一番手前の缶をターゲットにして、前...
#ref(robocon2012a[2].png,left,nowrap,プラン)
***プログラムリスト [#a4bddab2]
マスター側プログラム
//**************************************//
// nxtプログラム MASTER //
//**************************************//
#define turn90 420
#define turn45 170
#define close 2000
#define open 2500
#define up 490
#define down 480
#define BT_CONN 1
#define get_sBOX 1
#define get_fBOX 2
#define out_sBOX 3
#define out_fBOX 4
void turn_l(int i){
Float(OUT_BC);
RotateMotor(OUT_C,70,i);
Wait(200);
Off(OUT_BC);
Wait(200);
}
void turn_r(int i){
Float(OUT_BC);
RotateMotor(OUT_B,70,i);
Wait(200);
Off(OUT_BC);
Wait(200);
}
task main(void){
int get_s=0,get_f=0,out_s=0,out_f=0;
int modeM;
SetSensorLight(IN_2);
SetSensorLight(IN_3);
ResetTachoCount(OUT_B);
modeM=1;
while(1){
switch(modeM){
case 1:
turn_r(turn45);
modeM=2;
break;
case 2:
RotateMotor(OUT_BC,50,1300);
Wait(200);
modeM=3;
break;
case 3:
modeM=4;
CoastEx(OUT_BC,0);
get_s=1;
break;
case 4:
SendRemoteBool(BT_CONN,get_sBOX,get_s); //...
ReceiveRemoteBool(get_fBOX, true,get_f); //...
if(get_f==1){ //...
modeM=5;
PlayTone(TONE_C4,150);
}
break;
case 5:
Wait(200);
modeM=6;
break;
case 6:
OnFwd(OUT_BC,40);
if(Sensor(IN_3)<40){
modeM=7;
}
break;
case 7:
if(Sensor(IN_3)<55){
modeM=8;
CoastEx(OUT_BC,0);
}
break;
case 8:
OnFwd(OUT_B,50);
if(Sensor(IN_2)<35){
modeM=9;
}
break;
case 9:
RotateMotor(OUT_B,60,180);
Wait(200);
CoastEx(OUT_BC,0);
out_s=1;
modeM=10;
break;
case 10:
SendRemoteBool(BT_CONN,out_sBOX,out_s); //...
ReceiveRemoteBool(out_fBOX, true,out_f); //...
if(out_f==1){ //...
modeM=11;
}
break;
case 11:
RotateMotor(OUT_BC,-50,500);
modeM=12;
break;
case 12:
CoastEx(OUT_BC,0);
break;
}
}
}
スレイブ側プログラム
//**************************************//
// nxtプログラム SLAVE //
//**************************************//
#define turn90 420
#define turn45 210
#define close 2500
#define open 2500
#define up 490
#define down 480
#define BT_CONN 1
#define get_sBOX 1
#define get_fBOX 2
#define out_sBOX 3
#define out_fBOX 4
task main(void){
int get_s=0,get_f=0,out_s=0,out_f=0;
int modeS;
modeS=1;
while(1){
switch(modeS){
case 1:
ReceiveRemoteBool(get_sBOX,true,get_s); //...
if(get_s==1){ //...
modeS=2;
}
break;
case 2:
PlayTone(TONE_C4,150);
RotateMotor(OUT_A,-90,close);
Wait(200);
modeS=3;
break;
case 3:
RotateMotor(OUT_BC,-65,up);
Wait(200);
modeS=4;
break;
case 4:
get_f=1;
SendResponseBool(get_fBOX,get_f); //...
ReceiveRemoteBool(out_sBOX,true,out_s); //...
if(out_s==1){ //...
modeS=5;
}
break;
case 5:
PlayTone(TONE_C4,150);
RotateMotor(OUT_A,90,open);
Wait(200);
modeS=6;
break;
case 6:
out_f=1;
SendResponseBool(out_fBOX,out_f); //...
break;
}
}
}
***プログラム反省 [#d2efedff]
プログラムの反省は、最初に通信がうまくいかず、設定等に時...
**失敗例 [#p398c0b1]
最初、下の写真のようなマジックハンドのようにして、缶を持...
#ref(robocon7.png,left,nowrap,失敗例)
また、超音波センサーを使って缶との距離を測ろうとすると、...
**反省感想 [#t5df03c5]
今回テスト等もあり、時間が少なく、制作にあまり時間が当て...
終了行:
[[2012a/MemberOnly/進行状況A]]
[[2012a/Member]]
[[2012a/A4]]
[[2012a/A4/Tnakano]]
目次
#contents
*課題3 ロボコン [#z6fe44ae]
-内容
ロボットが決められた位置にある空き缶を運び中身の入っ...
#ref(robocon2012a[1].png,left,nowrap,コース図)
-競技説明
詳しい競技説明とルール、得点については以下をご覧くだ...
[[2012a/ロボコン]]
**ハードウェアについて [#s91bee54]
***全体像 [#f35091e2]
これがロボットの全体像です。前方に缶を挟むための大きなハ...
#ref(robocon1.png,left,nowrap,全体像)
***ハサミ部分について [#m28ad9a2]
これがハサミの全体像です。後ろにレールをつけて、ハサミ全...
#ref(robocon2.png,left,nowrap,ハサミ全体)
これがハサミの機構です。1つのモータでハサミの両側を動かす...
#ref(robocon3.png,left,nowrap,ハサミ機構)
***駆動輪について [#oe220216]
これがマスター側の駆動輪、光センサー部分です。光センサー...
#ref(robocon4.png,left,nowrap,駆動輪、センサー)
ハサミ部分は、真ん中の上の方についている大きな2つのタイヤ...
#ref(robocon5.png,left,nowrap,ハサミ上下の機構)
これが持ち上げた時の様子です。
#ref(robocon6.png,left,nowrap,sample)
***ハードウェア反省 [#q85f300f]
反省は、まずロボット自体が大きくなりすぎてしまい、小回り...
**プログラムについて [#obb22336]
マスター側でセンサーと駆動輪、スレイブ側でハサミの開閉上...
***プラン [#q3161c04]
最初に、下の図のように一番手前の缶をターゲットにして、前...
#ref(robocon2012a[2].png,left,nowrap,プラン)
***プログラムリスト [#a4bddab2]
マスター側プログラム
//**************************************//
// nxtプログラム MASTER //
//**************************************//
#define turn90 420
#define turn45 170
#define close 2000
#define open 2500
#define up 490
#define down 480
#define BT_CONN 1
#define get_sBOX 1
#define get_fBOX 2
#define out_sBOX 3
#define out_fBOX 4
void turn_l(int i){
Float(OUT_BC);
RotateMotor(OUT_C,70,i);
Wait(200);
Off(OUT_BC);
Wait(200);
}
void turn_r(int i){
Float(OUT_BC);
RotateMotor(OUT_B,70,i);
Wait(200);
Off(OUT_BC);
Wait(200);
}
task main(void){
int get_s=0,get_f=0,out_s=0,out_f=0;
int modeM;
SetSensorLight(IN_2);
SetSensorLight(IN_3);
ResetTachoCount(OUT_B);
modeM=1;
while(1){
switch(modeM){
case 1:
turn_r(turn45);
modeM=2;
break;
case 2:
RotateMotor(OUT_BC,50,1300);
Wait(200);
modeM=3;
break;
case 3:
modeM=4;
CoastEx(OUT_BC,0);
get_s=1;
break;
case 4:
SendRemoteBool(BT_CONN,get_sBOX,get_s); //...
ReceiveRemoteBool(get_fBOX, true,get_f); //...
if(get_f==1){ //...
modeM=5;
PlayTone(TONE_C4,150);
}
break;
case 5:
Wait(200);
modeM=6;
break;
case 6:
OnFwd(OUT_BC,40);
if(Sensor(IN_3)<40){
modeM=7;
}
break;
case 7:
if(Sensor(IN_3)<55){
modeM=8;
CoastEx(OUT_BC,0);
}
break;
case 8:
OnFwd(OUT_B,50);
if(Sensor(IN_2)<35){
modeM=9;
}
break;
case 9:
RotateMotor(OUT_B,60,180);
Wait(200);
CoastEx(OUT_BC,0);
out_s=1;
modeM=10;
break;
case 10:
SendRemoteBool(BT_CONN,out_sBOX,out_s); //...
ReceiveRemoteBool(out_fBOX, true,out_f); //...
if(out_f==1){ //...
modeM=11;
}
break;
case 11:
RotateMotor(OUT_BC,-50,500);
modeM=12;
break;
case 12:
CoastEx(OUT_BC,0);
break;
}
}
}
スレイブ側プログラム
//**************************************//
// nxtプログラム SLAVE //
//**************************************//
#define turn90 420
#define turn45 210
#define close 2500
#define open 2500
#define up 490
#define down 480
#define BT_CONN 1
#define get_sBOX 1
#define get_fBOX 2
#define out_sBOX 3
#define out_fBOX 4
task main(void){
int get_s=0,get_f=0,out_s=0,out_f=0;
int modeS;
modeS=1;
while(1){
switch(modeS){
case 1:
ReceiveRemoteBool(get_sBOX,true,get_s); //...
if(get_s==1){ //...
modeS=2;
}
break;
case 2:
PlayTone(TONE_C4,150);
RotateMotor(OUT_A,-90,close);
Wait(200);
modeS=3;
break;
case 3:
RotateMotor(OUT_BC,-65,up);
Wait(200);
modeS=4;
break;
case 4:
get_f=1;
SendResponseBool(get_fBOX,get_f); //...
ReceiveRemoteBool(out_sBOX,true,out_s); //...
if(out_s==1){ //...
modeS=5;
}
break;
case 5:
PlayTone(TONE_C4,150);
RotateMotor(OUT_A,90,open);
Wait(200);
modeS=6;
break;
case 6:
out_f=1;
SendResponseBool(out_fBOX,out_f); //...
break;
}
}
}
***プログラム反省 [#d2efedff]
プログラムの反省は、最初に通信がうまくいかず、設定等に時...
**失敗例 [#p398c0b1]
最初、下の写真のようなマジックハンドのようにして、缶を持...
#ref(robocon7.png,left,nowrap,失敗例)
また、超音波センサーを使って缶との距離を測ろうとすると、...
**反省感想 [#t5df03c5]
今回テスト等もあり、時間が少なく、制作にあまり時間が当て...
ページ名: