2019a/Member/yuta/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
・目次
#contents
*課題内容 [#zcba08a0]
#ref(IMG_1181.PNG,,80%)
~今回の課題の内容は
「A地点を出発し、次のいずれかの経路を黒い線にそって動くロ...
1:A地点から出発 → B → C(直進) → D(一時停止の後、直進) →...
2:A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) →...
交差点では1秒間停止し、丁字路では直角方向に進入する時のみ...
というものである。
私が挑んだコースは1番のコースである。
*ロボットについて [#v51a31f2]
**全体像 [#tc9239e9]
#ref(IMG_1183.JPG,,30%)
上のようなロボットをつくった。基本構造としては、説明書と...
**ボールを掴む機構 [#tcd08375]
#ref(IMG_1182.JPG,,30%)
ボールをつかみ、シュートする機構は上のようにした。アーム...
*プログラムについて [#u8502922]
**ライントレース [#w4e6f68c]
黒い線に沿って動かすためにライントレースというプログラム...
段階 完全な黒 黒よりの灰色 灰色 白よりの...
値 32 42 45 55 ...
である。また、それぞれの値でのときの動作のプログラムは次...
#define SPEED 20
#define turn_left OnFwd(OUT_B,SPEED);Off(OUT_C); ...
#define turn_right Off(OUT_B);OnFwd(OUT_C,SPEED); ...
#define right_senkai OnRev(OUT_B,SPEED);OnFwd(OUT_C,SPEE...
#define left_senkai OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED...
***線の左端を走るライントレース [#j159b223]
線の左端を走るライントレースのプログラムは次のようになる。
sub follow_line(){SetSensorLight(S3);
long t0=CurrentTick();
while(CurrentTick()-t0<100){ /...
if(SENSOR_3>=60){ /...
right_senkai; /...
t0=CurrentTick(); /...
}else if(SENSOR_3>=55){ /...
turn_right; /...
t0=CurrentTick();
}else if(SENSOR_3>=45){ /...
OnFwd(OUT_BC,SPEED); /...
t0=CurrentTick();
}else if(SENSOR_3>=42){ /...
turn_left; /...
t0=CurrentTick();
}else if(SENSOR_3>=32){ /...
left_senkai; /...
}
} Off(OUT_BC); /...
}
***線の右端を走るライントレース [#wa9a35a4]
線の右端を走るライントレースのプログラムは次のようになる
sub line_trace(){ SetSensorLight(S3);
long t0=CurrentTick();
while(CurrentTick()-t0<100){
if(SENSOR_3>=60){
left_senkai;
t0=CurrentTick();
}else if(SENSOR_3>=55){
turn_left;
t0=CurrentTick();
}else if(SENSOR_3>=45){
OnFwd(OUT_BC,SPEED);
t0=CurrentTick();
}else if(SENSOR_3>=42){
turn_right;
t0=CurrentTick();
}else if(SENSOR_3>=32){
right_senkai;
}
} Off(OUT_BC);
}
このプログラムの内容はfollow_lineでのプログラムとほぼ同じ...
これらのプログラムは黒い線に沿って進み、交差点で止まるよ...
**交差点の認識 [#l045e418]
交差点かどうかを判断するのにはライントレース中の真っ黒で...
~以下に交差点時の様子を図で示す。
#ref(交差点判断.png,,80%)
**交差点を通過する [#ya635dae]
交差点を通過するプログラムは次のようになる。
sub cross_line(){turn_right; //右に曲がる
Wait(1000); //1秒間
Off(OUT_C); //停止
OnFwd(OUT_BC,SPEED); //速さ20で直進する
Wait(1000); //1秒間
Off(OUT_BC); //停止
}
**全体のプログラム [#f716e665]
全体のプログラムは次のようになる。
task main()
{ follow_line();
Wait(1000); //D地点の交差点で1秒間停止
cross_line(); //D地点の交差点を通過
line_trace();
Wait(1000); //H地点の交差点で1秒間停止
turn_left; //ロボットをまっすぐに
Wait(500);
Off(OUT_BC);
OnFwd(OUT_BC,SPEED); //H地点の交差点を通過
Wait(500);
Off(OUT_BC); //停止
line_trace();
Wait(1000); //I地点の交差点で1秒間停止
turn_left; //ロボットをまっすぐに
Wait(500);
Off(OUT_BC);
OnFwd(OUT_BC,SPEED); //I地点の交差点を通過
Wait(500);
Off(OUT_BC); //停止
follow_line();
Wait(1000); //K地点で1秒間停止
OnFwd(OUT_BC,SPEED); //L地点へ直進
Wait(3000);
Off(OUT_BC); //停止
OnFwd(OUT_A,SPEED); //ボールをつかむ
Wait(1000);
Off(OUT_BC); //停止
follow_line;
Wait(1000); //M地点で停止
OnRev(OUT_A,SPEED); //ボールをシュート
Wait(2000);
Off(OUT_A); //停止
)
*まとめ [#y629d111]
ただ単にライントレースをすることだけはうまくできた。し...
終了行:
・目次
#contents
*課題内容 [#zcba08a0]
#ref(IMG_1181.PNG,,80%)
~今回の課題の内容は
「A地点を出発し、次のいずれかの経路を黒い線にそって動くロ...
1:A地点から出発 → B → C(直進) → D(一時停止の後、直進) →...
2:A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) →...
交差点では1秒間停止し、丁字路では直角方向に進入する時のみ...
というものである。
私が挑んだコースは1番のコースである。
*ロボットについて [#v51a31f2]
**全体像 [#tc9239e9]
#ref(IMG_1183.JPG,,30%)
上のようなロボットをつくった。基本構造としては、説明書と...
**ボールを掴む機構 [#tcd08375]
#ref(IMG_1182.JPG,,30%)
ボールをつかみ、シュートする機構は上のようにした。アーム...
*プログラムについて [#u8502922]
**ライントレース [#w4e6f68c]
黒い線に沿って動かすためにライントレースというプログラム...
段階 完全な黒 黒よりの灰色 灰色 白よりの...
値 32 42 45 55 ...
である。また、それぞれの値でのときの動作のプログラムは次...
#define SPEED 20
#define turn_left OnFwd(OUT_B,SPEED);Off(OUT_C); ...
#define turn_right Off(OUT_B);OnFwd(OUT_C,SPEED); ...
#define right_senkai OnRev(OUT_B,SPEED);OnFwd(OUT_C,SPEE...
#define left_senkai OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED...
***線の左端を走るライントレース [#j159b223]
線の左端を走るライントレースのプログラムは次のようになる。
sub follow_line(){SetSensorLight(S3);
long t0=CurrentTick();
while(CurrentTick()-t0<100){ /...
if(SENSOR_3>=60){ /...
right_senkai; /...
t0=CurrentTick(); /...
}else if(SENSOR_3>=55){ /...
turn_right; /...
t0=CurrentTick();
}else if(SENSOR_3>=45){ /...
OnFwd(OUT_BC,SPEED); /...
t0=CurrentTick();
}else if(SENSOR_3>=42){ /...
turn_left; /...
t0=CurrentTick();
}else if(SENSOR_3>=32){ /...
left_senkai; /...
}
} Off(OUT_BC); /...
}
***線の右端を走るライントレース [#wa9a35a4]
線の右端を走るライントレースのプログラムは次のようになる
sub line_trace(){ SetSensorLight(S3);
long t0=CurrentTick();
while(CurrentTick()-t0<100){
if(SENSOR_3>=60){
left_senkai;
t0=CurrentTick();
}else if(SENSOR_3>=55){
turn_left;
t0=CurrentTick();
}else if(SENSOR_3>=45){
OnFwd(OUT_BC,SPEED);
t0=CurrentTick();
}else if(SENSOR_3>=42){
turn_right;
t0=CurrentTick();
}else if(SENSOR_3>=32){
right_senkai;
}
} Off(OUT_BC);
}
このプログラムの内容はfollow_lineでのプログラムとほぼ同じ...
これらのプログラムは黒い線に沿って進み、交差点で止まるよ...
**交差点の認識 [#l045e418]
交差点かどうかを判断するのにはライントレース中の真っ黒で...
~以下に交差点時の様子を図で示す。
#ref(交差点判断.png,,80%)
**交差点を通過する [#ya635dae]
交差点を通過するプログラムは次のようになる。
sub cross_line(){turn_right; //右に曲がる
Wait(1000); //1秒間
Off(OUT_C); //停止
OnFwd(OUT_BC,SPEED); //速さ20で直進する
Wait(1000); //1秒間
Off(OUT_BC); //停止
}
**全体のプログラム [#f716e665]
全体のプログラムは次のようになる。
task main()
{ follow_line();
Wait(1000); //D地点の交差点で1秒間停止
cross_line(); //D地点の交差点を通過
line_trace();
Wait(1000); //H地点の交差点で1秒間停止
turn_left; //ロボットをまっすぐに
Wait(500);
Off(OUT_BC);
OnFwd(OUT_BC,SPEED); //H地点の交差点を通過
Wait(500);
Off(OUT_BC); //停止
line_trace();
Wait(1000); //I地点の交差点で1秒間停止
turn_left; //ロボットをまっすぐに
Wait(500);
Off(OUT_BC);
OnFwd(OUT_BC,SPEED); //I地点の交差点を通過
Wait(500);
Off(OUT_BC); //停止
follow_line();
Wait(1000); //K地点で1秒間停止
OnFwd(OUT_BC,SPEED); //L地点へ直進
Wait(3000);
Off(OUT_BC); //停止
OnFwd(OUT_A,SPEED); //ボールをつかむ
Wait(1000);
Off(OUT_BC); //停止
follow_line;
Wait(1000); //M地点で停止
OnRev(OUT_A,SPEED); //ボールをシュート
Wait(2000);
Off(OUT_A); //停止
)
*まとめ [#y629d111]
ただ単にライントレースをすることだけはうまくできた。し...
ページ名: