2013a/Member/chise/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*ロボットの紹介 [#m74ece44]
~ ロボット担当の相方が作ってくれた機体。ライトセンサーの...
また、質量の大きいモーターをできる限り低位置に設置して重...
にするなどの工夫がされている。
#ref(2013a/Member/chise/Mission1/GRL_0020.JPG,30%, [課題1...
*コース攻略法 [#bd55932c]
~ ?カーブと、ふたつの交差点の違いを認識させる
~ ?缶をつかむタイミングと放すタイミングの計算
*プログラムの説明 [#i0f65056]
#define THRESHOLD 55
#define SP_H 40
#define SP_L 15
#define OnRL(spR,spL) OnFwd(OUT_B,spR);OnFwd(OUT_C,spL);
#define go OnRL(SP_H,SP_H);
#define back OnRL(-SP_L,-SP_L);
#define turn_90 OnRL(SP_H,-SP_H);Wait(300);
#define turn_180 OnRL(SP_H,-SP_H);Wait(1400);
#define left_1 OnRL(SP_L,-SP_L);
#define left_0 OnRL(SP_L+5,0);
#define right_1 OnRL(-SP_L,SP_L);
#define right_0 OnRL(0,SP_L+5);
#define catch OnFwd(OUT_A,50);Wait(500);go;Wait(200);OnR...
#define hanasu OnFwd(OUT_A,50);Wait(500);back;Wait(500);...
#define STEP 1
#define nMAX 230
#define short_break Off(OUT_BC);Wait(1000);
#define C_T 500
#define C_L OnRL(SP_L,SP_L);Wait(C_T);short_break;
task main()
{
SetSensorLight(S3);
int nOnline_1=0;
long t0=CurrentTick();
while(CurrentTick()-t0<1000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0==1000){
turn_90;
}
↑左回り用のプログラムのため、90度左回転してスタート地点か...
while(CurrentTick()-t0>1000&&CurrentTick()-t0<3000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0==3000){
Wait(1000);
PlaySound(SOUND_UP);
catch;
}
↑ライントレースして缶まで到達。缶をつかむ。
while(CurrentTick()-t0>3000&&CurrentTick()-t0<15000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0>=15000&&CurrentTick()-t0<=55000){
while(nOnline_1<nMAX){
if(SENSOR_3<THRESHOLD-10){
left_1;
nOnline_1++;
}else{
if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
nOnline_1=0;
}
Wait(STEP);
}
Wait(1000);
PlaySound(SOUND_CLICK);
short_break;
back;Wait(200);
short_break;
right_1;Wait(1400);
C_L;
nOnline_1=0;
}
↑交差点を4回横断するためのプログラム。時間を計りながらで...
while(CurrentTick()-t0>55000&&CurrentTick()-t0<70000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0=70000){
Wait(1000);
PlaySound(SOUND_UP);
turn_180;
hanasu;
turn_180;
}
↑ライントレースして缶を置く位置まで行き、一旦そこを通過し...
while(CurrentTick()-t0>70000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
}
*まとめ [#l86cb91d]
~ 主にプログラムを担当していたけれど、交差点を含むライン...
終了行:
*ロボットの紹介 [#m74ece44]
~ ロボット担当の相方が作ってくれた機体。ライトセンサーの...
また、質量の大きいモーターをできる限り低位置に設置して重...
にするなどの工夫がされている。
#ref(2013a/Member/chise/Mission1/GRL_0020.JPG,30%, [課題1...
*コース攻略法 [#bd55932c]
~ ?カーブと、ふたつの交差点の違いを認識させる
~ ?缶をつかむタイミングと放すタイミングの計算
*プログラムの説明 [#i0f65056]
#define THRESHOLD 55
#define SP_H 40
#define SP_L 15
#define OnRL(spR,spL) OnFwd(OUT_B,spR);OnFwd(OUT_C,spL);
#define go OnRL(SP_H,SP_H);
#define back OnRL(-SP_L,-SP_L);
#define turn_90 OnRL(SP_H,-SP_H);Wait(300);
#define turn_180 OnRL(SP_H,-SP_H);Wait(1400);
#define left_1 OnRL(SP_L,-SP_L);
#define left_0 OnRL(SP_L+5,0);
#define right_1 OnRL(-SP_L,SP_L);
#define right_0 OnRL(0,SP_L+5);
#define catch OnFwd(OUT_A,50);Wait(500);go;Wait(200);OnR...
#define hanasu OnFwd(OUT_A,50);Wait(500);back;Wait(500);...
#define STEP 1
#define nMAX 230
#define short_break Off(OUT_BC);Wait(1000);
#define C_T 500
#define C_L OnRL(SP_L,SP_L);Wait(C_T);short_break;
task main()
{
SetSensorLight(S3);
int nOnline_1=0;
long t0=CurrentTick();
while(CurrentTick()-t0<1000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0==1000){
turn_90;
}
↑左回り用のプログラムのため、90度左回転してスタート地点か...
while(CurrentTick()-t0>1000&&CurrentTick()-t0<3000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0==3000){
Wait(1000);
PlaySound(SOUND_UP);
catch;
}
↑ライントレースして缶まで到達。缶をつかむ。
while(CurrentTick()-t0>3000&&CurrentTick()-t0<15000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0>=15000&&CurrentTick()-t0<=55000){
while(nOnline_1<nMAX){
if(SENSOR_3<THRESHOLD-10){
left_1;
nOnline_1++;
}else{
if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
nOnline_1=0;
}
Wait(STEP);
}
Wait(1000);
PlaySound(SOUND_CLICK);
short_break;
back;Wait(200);
short_break;
right_1;Wait(1400);
C_L;
nOnline_1=0;
}
↑交差点を4回横断するためのプログラム。時間を計りながらで...
while(CurrentTick()-t0>55000&&CurrentTick()-t0<70000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
while(CurrentTick()-t0=70000){
Wait(1000);
PlaySound(SOUND_UP);
turn_180;
hanasu;
turn_180;
}
↑ライントレースして缶を置く位置まで行き、一旦そこを通過し...
while(CurrentTick()-t0>70000){
if(SENSOR_3<THRESHOLD-10){
left_1;
}else if(SENSOR_3<THRESHOLD-5){
left_0;
}else if(SENSOR_3<THRESHOLD+5){
go;
}else if(SENSOR_3<THRESHOLD+10){
right_0;
}else{
right_1;
}
Wait(STEP);
}
}
*まとめ [#l86cb91d]
~ 主にプログラムを担当していたけれど、交差点を含むライン...
ページ名: