2013a/Member/yno8/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*メンバー紹介 [#e1f5406c]
-金野泰之 工学部電気電子工学科 元メガネ
-鈴木健太 工学部機械システム工学科 Dr.Mario
*ロボットの紹介 [#f182aefa]
-&ref(2013a/Member/yno8/Mission1/ダウンロード.jpg,221×166...
-アームを赤外線センサーより少し前に出す工夫を行ったおかげ...
-アーム部分をできるだけ軽く作って、ロボットが前傾しないよ...
*コース攻略法 [#de95ab40]
※自分は右回り担当です
-&ref(2013a/Member/yno8/Mission1/gajga.png,870×525,コース...
-コースを攻略するにあたって難所が3つありました。??はライ...
-&ref(2013a/Member/yno8/Mission1/ロボ資料1.png,428×288,1);
-&ref(2013a/Member/yno8/Mission1/ろのじょ.png,416×288,wa);
-注意点のように私が書いたプログラムでは鋭角の交差点は直進...
-&ref(2013a/Member/yno8/Mission1/ろぼgdn.png,429×288,2);
-?は?と同様鋭角部分だけを通るよう左右切り替えを行いました...
-&ref(2013a/Member/yno8/Mission1/ロボkdfなs.png,429×2...
-?は缶を置くためだけの工夫です。どうやって正確に缶を置か...
*プログラムの説明 [#d3859879]
#define zone1 37
#define zone2 45
#define zone3 60
#define zone4 65
#define zensin OnFwd(OUT_BC,40) //前進します
#define sasetu OnFwd(OUT_B,40);Off(OUT_C) //左折します
#define kyuusasetu OnFwd(OUT_B,40);OnRev(OUT_C,35) //左...
#define usetu OnFwd(OUT_C,40);Off(OUT_B) //右折します
#define kyuuusetu OnFwd(OUT_C,40);OnRev(OUT_B,35) //右旋...
#define STEP 1
#define nMAX 200
#define short_break Off(OUT_BC);Wait(1000);
task main ()
{
SetSensorLight(S3);
int nOnline=0;
long t0 = CurrentTick();
int n=0;
-↑前進するときはzensin右折はusetuなどわかりやすく定義しま...
while (CurrentTick()-t0 <= 6000) { //最初の6秒間は...
if (SENSOR_3 < zone1) {
kyuuusetu;
} else if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
Wait(STEP);
}
OnRev(OUT_A,50);Wait(500);Off(OUT_A); //缶を掴み...
-↑このwhile節では缶を掴むまでライントレースをさせています
while (CurrentTick()-t0 <= 18000) {
while(nOnline < nMAX && CurrentTick()-t0 <= 18000...
if (SENSOR_3 < zone1) {
kyuuusetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuusasetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;
}sasetu;Wait(100);
-↑18秒後のライントレースの左右切り替え、つまり「プログラ...
while (CurrentTick()-t0 <= 34000) {
while(nOnline < nMAX && CurrentTick()-t0 <= 34000...
if (SENSOR_3 < zone1) {
kyuusasetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
sasetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
usetu;
} else {
kyuuusetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuuusetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;
}usetu;Wait(200);
-↑?用のwhile節です。?では説明を省きましたが、while節の下...
while (CurrentTick()-t0 <= 40000) {
while(nOnline < nMAX && CurrentTick()-t0 <= 40000...
if (SENSOR_3 < zone1) {
kyuuusetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuusasetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;
}
-↑これは?の図で言う赤印の手前までのプログラムです。赤印を...
while (n<2) {
while(nOnline < nMAX && n<2) {
if (SENSOR_3 < zone1) {
kyuuusetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuusasetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;n++;
}
-↑赤印から青い円までのプログラムで、見ての通りカウンタを...
OnRev(OUT_BC,50);Wait(500);
OnFwd(OUT_C,50);OnRev(OUT_B,50);Wait(300);
OnFwd(OUT_C,50);OnRev(OUT_B,50);until(SENSOR_3 < 50);
long t1 = CurrentTick();
-↑ここは180°旋回させるだけのプログラムなので、上の行から...
while (CurrentTick()-t1 <= 1800) {
if (SENSOR_3 < zone1) {
kyuusasetu;
} else if (SENSOR_3 < zone2) {
sasetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
usetu;
} else {
kyuuusetu;
}
Wait(STEP);
}
-↑缶を置く場所までライントレース(時間を測りまくった結果、...
usetu;Wait(270);Off(OUT_BC);
OnFwd(OUT_A,50);Wait(300);Off(OUT_A);
OnRev(OUT_BC,50);Wait(400);
OnFwd(OUT_B,50);OnRev(OUT_C,50);Wait(300);
OnFwd(OUT_B,50);OnRev(OUT_C,50);until(SENSOR_3 < 50);
long t2 = CurrentTick();
-↑ここも缶をおいた後缶を倒さないように180°旋回させるだけ...
while (CurrentTick()-t2 <= 3900) {
if (SENSOR_3 < zone1) {
kyuuusetu;
} else if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
Wait(STEP);
}
Off(OUT_BC);
}
-↑普通にライントレースをして出口から出てってもらってます。
*まとめ [#waf7ecb4]
-ロボット本体を重くしすぎたせいで動作に安定性がなくなり、...
*次回の課題で大切にしたいこと [#yfbd8a45]
-ロボットの軽量化
-電池の残量に左右されないプログラムの作成
-出来るだけ協力して課題を攻略する
-プログラムよりもロボットの構造
-重いものは下に
終了行:
*メンバー紹介 [#e1f5406c]
-金野泰之 工学部電気電子工学科 元メガネ
-鈴木健太 工学部機械システム工学科 Dr.Mario
*ロボットの紹介 [#f182aefa]
-&ref(2013a/Member/yno8/Mission1/ダウンロード.jpg,221×166...
-アームを赤外線センサーより少し前に出す工夫を行ったおかげ...
-アーム部分をできるだけ軽く作って、ロボットが前傾しないよ...
*コース攻略法 [#de95ab40]
※自分は右回り担当です
-&ref(2013a/Member/yno8/Mission1/gajga.png,870×525,コース...
-コースを攻略するにあたって難所が3つありました。??はライ...
-&ref(2013a/Member/yno8/Mission1/ロボ資料1.png,428×288,1);
-&ref(2013a/Member/yno8/Mission1/ろのじょ.png,416×288,wa);
-注意点のように私が書いたプログラムでは鋭角の交差点は直進...
-&ref(2013a/Member/yno8/Mission1/ろぼgdn.png,429×288,2);
-?は?と同様鋭角部分だけを通るよう左右切り替えを行いました...
-&ref(2013a/Member/yno8/Mission1/ロボkdfなs.png,429×2...
-?は缶を置くためだけの工夫です。どうやって正確に缶を置か...
*プログラムの説明 [#d3859879]
#define zone1 37
#define zone2 45
#define zone3 60
#define zone4 65
#define zensin OnFwd(OUT_BC,40) //前進します
#define sasetu OnFwd(OUT_B,40);Off(OUT_C) //左折します
#define kyuusasetu OnFwd(OUT_B,40);OnRev(OUT_C,35) //左...
#define usetu OnFwd(OUT_C,40);Off(OUT_B) //右折します
#define kyuuusetu OnFwd(OUT_C,40);OnRev(OUT_B,35) //右旋...
#define STEP 1
#define nMAX 200
#define short_break Off(OUT_BC);Wait(1000);
task main ()
{
SetSensorLight(S3);
int nOnline=0;
long t0 = CurrentTick();
int n=0;
-↑前進するときはzensin右折はusetuなどわかりやすく定義しま...
while (CurrentTick()-t0 <= 6000) { //最初の6秒間は...
if (SENSOR_3 < zone1) {
kyuuusetu;
} else if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
Wait(STEP);
}
OnRev(OUT_A,50);Wait(500);Off(OUT_A); //缶を掴み...
-↑このwhile節では缶を掴むまでライントレースをさせています
while (CurrentTick()-t0 <= 18000) {
while(nOnline < nMAX && CurrentTick()-t0 <= 18000...
if (SENSOR_3 < zone1) {
kyuuusetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuusasetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;
}sasetu;Wait(100);
-↑18秒後のライントレースの左右切り替え、つまり「プログラ...
while (CurrentTick()-t0 <= 34000) {
while(nOnline < nMAX && CurrentTick()-t0 <= 34000...
if (SENSOR_3 < zone1) {
kyuusasetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
sasetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
usetu;
} else {
kyuuusetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuuusetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;
}usetu;Wait(200);
-↑?用のwhile節です。?では説明を省きましたが、while節の下...
while (CurrentTick()-t0 <= 40000) {
while(nOnline < nMAX && CurrentTick()-t0 <= 40000...
if (SENSOR_3 < zone1) {
kyuuusetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuusasetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;
}
-↑これは?の図で言う赤印の手前までのプログラムです。赤印を...
while (n<2) {
while(nOnline < nMAX && n<2) {
if (SENSOR_3 < zone1) {
kyuuusetu;
nOnline++;
} else {
if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
nOnline=0;
}
Wait(STEP);
}
kyuusasetu;Wait(nMAX*STEP);
OnFwd(OUT_BC,40);Wait(200);
nOnline=0;n++;
}
-↑赤印から青い円までのプログラムで、見ての通りカウンタを...
OnRev(OUT_BC,50);Wait(500);
OnFwd(OUT_C,50);OnRev(OUT_B,50);Wait(300);
OnFwd(OUT_C,50);OnRev(OUT_B,50);until(SENSOR_3 < 50);
long t1 = CurrentTick();
-↑ここは180°旋回させるだけのプログラムなので、上の行から...
while (CurrentTick()-t1 <= 1800) {
if (SENSOR_3 < zone1) {
kyuusasetu;
} else if (SENSOR_3 < zone2) {
sasetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
usetu;
} else {
kyuuusetu;
}
Wait(STEP);
}
-↑缶を置く場所までライントレース(時間を測りまくった結果、...
usetu;Wait(270);Off(OUT_BC);
OnFwd(OUT_A,50);Wait(300);Off(OUT_A);
OnRev(OUT_BC,50);Wait(400);
OnFwd(OUT_B,50);OnRev(OUT_C,50);Wait(300);
OnFwd(OUT_B,50);OnRev(OUT_C,50);until(SENSOR_3 < 50);
long t2 = CurrentTick();
-↑ここも缶をおいた後缶を倒さないように180°旋回させるだけ...
while (CurrentTick()-t2 <= 3900) {
if (SENSOR_3 < zone1) {
kyuuusetu;
} else if (SENSOR_3 < zone2) {
usetu;
} else if (SENSOR_3 < zone3) {
zensin;
} else if (SENSOR_3 < zone4) {
sasetu;
} else {
kyuusasetu;
}
Wait(STEP);
}
Off(OUT_BC);
}
-↑普通にライントレースをして出口から出てってもらってます。
*まとめ [#waf7ecb4]
-ロボット本体を重くしすぎたせいで動作に安定性がなくなり、...
*次回の課題で大切にしたいこと [#yfbd8a45]
-ロボットの軽量化
-電池の残量に左右されないプログラムの作成
-出来るだけ協力して課題を攻略する
-プログラムよりもロボットの構造
-重いものは下に
ページ名: