2015b/Member/Yoshimasa/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/Member]]
目次
#contents
*課題内容 [#w3767585]
・ライントレースカーの作成
#ref(./2015b-mission2.png,60%)
上の図が課題のコースです。
私は、A地点からB地点へ行くプログラムを作成しました。具体...
*ロボット本体 [#f282aa06]
&ref(./robo.png,40%);
&ref(./robo1.png,34%);
上の写真がロボットの全体です。赤い丸が付いているのが光セ...
*トレースの方法 [#f25e7892]
私は黒と白の間を基準に走行する方法で行いました。線は左か...
明るさを5段階に分けました。理由としては、滑らかな動きをさ...
分け方は、最も暗いときはその場で左回転、暗いときは斜め左...
1,2回目の交差点では斜め左前に進みます。理由はモータの力の...
3,4回目は左奥に進みます。こうすることで線を左から処理する...
線がきれいではないため途中で交差点の処理をすることがあり...
*プログラム [#z455f13e]
同じ動作が多いため先にマクロで定義しました。光量の中間値...
#define go(p) Off(OUT_BC);OnFwd(OUT_BC,p); ...
#define right(p,P) Off(OUT_BC);OnFwd(OUT_C,p);OnFwd(OUT_...
#define left(p,P) Off(OUT_BC);OnFwd(OUT_B,p);OnFwd(OUT_C...
#define THE 53 ...
#define tmax 115 ...
#define Mu PlaySound(SOUND_CLICK); ...
・交差点でない場合のプログラム
task main()
{
SetSensorLight(S1); //光センサー
long t0=0,t=0; //変数の宣言と初期化
int c=0,x=0,y=0; //交差点処理に使用
t0=CurrentTick(); //交差点判断での時間
t=CurrentTick(); //処理を行わない時間
while(true){ //繰り返し
while(CurrentTick()-t0<tmax){ //交差点か否かの判断
if(SENSOR_1<THE){ //黒の場合
if(SENSOR_1>35){ //白よりの黒の場合
left(45,10);
t0=CurrentTick();} //交差点でないため時間(t0)を初...
else if(SENSOR_1<35){ //最も黒い場合
left(35,-40);
}
}
else if(SENSOR_1>THE){ //白の場合
if(SENSOR_1<65){ //黒よりの白の場合
right(45,10);
t0=CurrentTick();}
else if(SENSOR_1>65){ //最も白い場合
right(40,-40);
t0=CurrentTick();}
else{
go(50);t0=CurrentTick();} //中間値の場合
}}
・交差点かどうか判断するプログラム。
交差点の処理をするとカウントが増えていく。cはPとQを...
if(c<=1){ //交差点を直進 ...
Mu;Off(OUT_BC);Wait(1000);right(30,50); //音を鳴らし交差...
Wait(300);c++;x++;y++;t0=CurrentTick();,t=CurrentTick();}
タイマーも条件式に加えている理由は、コースがあまりきれい...
else if(x==2&&CurrentTick()-t>6500){ //xのカウントが...
Mu;Off(OUT_BC);Wait(1000); //時、処...
right(40,-50);Wait(300);go(30);Wait(500); //音を...
x++;y++;t0=CurrentTick();}
else if(y==3){ //yのカウントが...
Mu;Off(OUT_BC);Wait(1000); //を右折
right(50,-20);Wait(400);go(30); //音を鳴...
Wait(500);y++;t0=CurrentTick();}
上のプログラムだけでは、最後の交差点Pを判断しないのでPを...
else if(y==4&&CurrentTick()-t>20000){ //yのカウントが4...
Mu;Off(OUT_BC); //らの時...
Wait(1000);t0=CurrentTick();y++;} //音を鳴らし交差...
交差点だと判断しないプログラム
else{t0=CurrentTick();}
}}
*工夫点 [#kb29c14f]
線がきれいに描けなかったため円の中などの交差点以外の急な...
一つの定義の分で左右のタイヤを同時に動かせるようにするこ...
*反省・感想 [#n1d85cd1]
反省点は、帰ってくるときのQを交差点として判断できなかった...
今回の課題は書道ロボットと違いロボット自身が判断するプロ...
終了行:
[[2015b/Member]]
目次
#contents
*課題内容 [#w3767585]
・ライントレースカーの作成
#ref(./2015b-mission2.png,60%)
上の図が課題のコースです。
私は、A地点からB地点へ行くプログラムを作成しました。具体...
*ロボット本体 [#f282aa06]
&ref(./robo.png,40%);
&ref(./robo1.png,34%);
上の写真がロボットの全体です。赤い丸が付いているのが光セ...
*トレースの方法 [#f25e7892]
私は黒と白の間を基準に走行する方法で行いました。線は左か...
明るさを5段階に分けました。理由としては、滑らかな動きをさ...
分け方は、最も暗いときはその場で左回転、暗いときは斜め左...
1,2回目の交差点では斜め左前に進みます。理由はモータの力の...
3,4回目は左奥に進みます。こうすることで線を左から処理する...
線がきれいではないため途中で交差点の処理をすることがあり...
*プログラム [#z455f13e]
同じ動作が多いため先にマクロで定義しました。光量の中間値...
#define go(p) Off(OUT_BC);OnFwd(OUT_BC,p); ...
#define right(p,P) Off(OUT_BC);OnFwd(OUT_C,p);OnFwd(OUT_...
#define left(p,P) Off(OUT_BC);OnFwd(OUT_B,p);OnFwd(OUT_C...
#define THE 53 ...
#define tmax 115 ...
#define Mu PlaySound(SOUND_CLICK); ...
・交差点でない場合のプログラム
task main()
{
SetSensorLight(S1); //光センサー
long t0=0,t=0; //変数の宣言と初期化
int c=0,x=0,y=0; //交差点処理に使用
t0=CurrentTick(); //交差点判断での時間
t=CurrentTick(); //処理を行わない時間
while(true){ //繰り返し
while(CurrentTick()-t0<tmax){ //交差点か否かの判断
if(SENSOR_1<THE){ //黒の場合
if(SENSOR_1>35){ //白よりの黒の場合
left(45,10);
t0=CurrentTick();} //交差点でないため時間(t0)を初...
else if(SENSOR_1<35){ //最も黒い場合
left(35,-40);
}
}
else if(SENSOR_1>THE){ //白の場合
if(SENSOR_1<65){ //黒よりの白の場合
right(45,10);
t0=CurrentTick();}
else if(SENSOR_1>65){ //最も白い場合
right(40,-40);
t0=CurrentTick();}
else{
go(50);t0=CurrentTick();} //中間値の場合
}}
・交差点かどうか判断するプログラム。
交差点の処理をするとカウントが増えていく。cはPとQを...
if(c<=1){ //交差点を直進 ...
Mu;Off(OUT_BC);Wait(1000);right(30,50); //音を鳴らし交差...
Wait(300);c++;x++;y++;t0=CurrentTick();,t=CurrentTick();}
タイマーも条件式に加えている理由は、コースがあまりきれい...
else if(x==2&&CurrentTick()-t>6500){ //xのカウントが...
Mu;Off(OUT_BC);Wait(1000); //時、処...
right(40,-50);Wait(300);go(30);Wait(500); //音を...
x++;y++;t0=CurrentTick();}
else if(y==3){ //yのカウントが...
Mu;Off(OUT_BC);Wait(1000); //を右折
right(50,-20);Wait(400);go(30); //音を鳴...
Wait(500);y++;t0=CurrentTick();}
上のプログラムだけでは、最後の交差点Pを判断しないのでPを...
else if(y==4&&CurrentTick()-t>20000){ //yのカウントが4...
Mu;Off(OUT_BC); //らの時...
Wait(1000);t0=CurrentTick();y++;} //音を鳴らし交差...
交差点だと判断しないプログラム
else{t0=CurrentTick();}
}}
*工夫点 [#kb29c14f]
線がきれいに描けなかったため円の中などの交差点以外の急な...
一つの定義の分で左右のタイヤを同時に動かせるようにするこ...
*反省・感想 [#n1d85cd1]
反省点は、帰ってくるときのQを交差点として判断できなかった...
今回の課題は書道ロボットと違いロボット自身が判断するプロ...
ページ名: