2016a/Member/fujison/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*目次 [#qc6cf508]
#contents
*課題 [#k4944c16]
【課題のコース】
#ref(./2016a-mission2.png,課題のコース)
今回の課題は指定されたコースをライントレースするロボット...
B地点からC地点へ
B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点
*ロボットの構造 [#a2d6a64e]
【ロボットの側面】
#ref(./image2 (1).JPG,ロボットの側面)
【ロボットの前面】
#ref(./image3 (1).JPG,ロボットの前面)
【ロボットの後ろ】
#ref(./image1 (1).JPG,ロボットの後ろ)
ロボット本体の構造は課題1と大きく変わらないが、ロボット...
*プログラム [#e4975907]
【プログラムの定義】
#define turn_right1 OnRev(OUT_C);OnFwd(OUT_A); //右旋回
#define turn_left1 OnRev(OUT_A);OnFwd(OUT_C); //左旋回
#define turn_right2 OnFwd(OUT_A);Off(OUT_C); //右折
#define turn_left2 OnFwd(OUT_C);Off(OUT_A); //左折
#define go OnFwd(OUT_AC); //前進
#define TMAX
TMAX(t)…連続して黒になってもライントレースを続ける時間...
Off…停止
Wait(t)…t秒間経過するまで、次のプログラムに移行しない
【道のりごとの手順】
?ライントレース(マジックで書かれた黒いコースの線上を移動...
task main()
{
int t;
t = 0;
交差点を通った回数を調べるために変数tを使用した
t=t+1とプログラムすることで、交差点を通るたびにカウ...
SetSensor(SENSOR_2, SENSOR_LIGHT);
while(t <= 7)
{
ClearTimer(0);
while(FastTimer(0) < TMAX)
{
if(SENSOR_2 > 54){
turn_right1;ClearTimer(0);
}
else if (SENSOR_2 < 42){
turn_left1;
} else if (SENSOR_2 > 50){
turn_right2;ClearTimer(0); ...
} else if (SENSOR_2 < 44){
turn_left2;ClearTimer(0);
} else {
go;ClearTimer(0);
}
}
while(t=○)…○の間、条件に従ってプログラムを繰り返す。
ClearTimer…ロボットに内蔵されたタイマーをリセットする。
if…ロボットが次に何をするかを判断するために必要な条件を指...
else if …ifで指定した条件以外で、さらに条件を追加したい場...
SENSOR2>50…光センサー2の値が50を超えた場合、条件に従っ...
?1つ目の交差点(Rを右折)
t = t+1;
if(t == 1){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
turn_right2;
Wait(150); ...
Off(OUT_AC);
Wait(100);
PlaySound(SOUND_UP)…音を鳴らす
PlaySound(SOUND_DOWN)…音を鳴らす
?2つ目の交差点(Qを直進)
} else if(t == 2){
PlaySound(SOUND_UP);
turn_left1;
Wait(100);
} else if(t == 3){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
go;
Wait(30);
Off(OUT_AC);
Wait(100);
?3つ目の交差点(Qを直進)
} else if(t == 4){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
go;
Wait(30);
Off(OUT_AC);
Wait(100);
?4つ目の交差点(Pを右折)
} else if(t == 5){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
turn_right2;
Wait(100);
Off(OUT_AC);
Wait(100);
?5つ目の交差点(Sを右折)
} else if(t == 6){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
turn_right2;
Wait(100);
Off(OUT_AC);
Wait(100);
?最後
} else if(t==7){
PlaySound(SOUND_DOWN);
Off(OUT_AC);
}
Off(OUT_AC);
}
}
*結果 [#u7f2ecfe]
百発百中でゴールにたどり着くわけではないが、課題通りに動...
ゴールにたどり着くまでの時間は45秒だった。
*問題点1 [#bc1bc87e]
サブルーチン、その他のプログラミングの意味や使い方をよく...
【対策】
カウンターを利用した。しかし、まだ理解しきれていないので...
*問題点2 [#tde6c549]
コースの明るさがバラバラなのか光センサーが安定しない時が...
【対策】
ところどころ色を塗り、光センサーの位置を変えることで対処...
*交差点の判断 [#je0807bf]
交差点は次の手順で判別した。
?TMAX(上に記載)を使用し、光センサーが連続で黒になった時...
[1]黒になった時間が最大値20以上の時
そこは交差点と判断して、別の動作へと切り替える。
[2]黒になった時間が20以下の時に白を計測した時
?交差点ではなかった場合
プログラムに従って、ライントレースを続けて行う。
?交差点と判断したあとの動作を指定
カウンターを利用することで、それぞれの交差点にたどり着い...
交差点を判断して、その場で右折しようとすると、右折後にラ...
?判断後は計測値をリセットし、次の交差点を探す
*感想及び反省 [#mf8abedd]
今回の課題はプログラミングを重視したものであり、調整やプ...
終了行:
[[2016a/Member]]
*目次 [#qc6cf508]
#contents
*課題 [#k4944c16]
【課題のコース】
#ref(./2016a-mission2.png,課題のコース)
今回の課題は指定されたコースをライントレースするロボット...
B地点からC地点へ
B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点
*ロボットの構造 [#a2d6a64e]
【ロボットの側面】
#ref(./image2 (1).JPG,ロボットの側面)
【ロボットの前面】
#ref(./image3 (1).JPG,ロボットの前面)
【ロボットの後ろ】
#ref(./image1 (1).JPG,ロボットの後ろ)
ロボット本体の構造は課題1と大きく変わらないが、ロボット...
*プログラム [#e4975907]
【プログラムの定義】
#define turn_right1 OnRev(OUT_C);OnFwd(OUT_A); //右旋回
#define turn_left1 OnRev(OUT_A);OnFwd(OUT_C); //左旋回
#define turn_right2 OnFwd(OUT_A);Off(OUT_C); //右折
#define turn_left2 OnFwd(OUT_C);Off(OUT_A); //左折
#define go OnFwd(OUT_AC); //前進
#define TMAX
TMAX(t)…連続して黒になってもライントレースを続ける時間...
Off…停止
Wait(t)…t秒間経過するまで、次のプログラムに移行しない
【道のりごとの手順】
?ライントレース(マジックで書かれた黒いコースの線上を移動...
task main()
{
int t;
t = 0;
交差点を通った回数を調べるために変数tを使用した
t=t+1とプログラムすることで、交差点を通るたびにカウ...
SetSensor(SENSOR_2, SENSOR_LIGHT);
while(t <= 7)
{
ClearTimer(0);
while(FastTimer(0) < TMAX)
{
if(SENSOR_2 > 54){
turn_right1;ClearTimer(0);
}
else if (SENSOR_2 < 42){
turn_left1;
} else if (SENSOR_2 > 50){
turn_right2;ClearTimer(0); ...
} else if (SENSOR_2 < 44){
turn_left2;ClearTimer(0);
} else {
go;ClearTimer(0);
}
}
while(t=○)…○の間、条件に従ってプログラムを繰り返す。
ClearTimer…ロボットに内蔵されたタイマーをリセットする。
if…ロボットが次に何をするかを判断するために必要な条件を指...
else if …ifで指定した条件以外で、さらに条件を追加したい場...
SENSOR2>50…光センサー2の値が50を超えた場合、条件に従っ...
?1つ目の交差点(Rを右折)
t = t+1;
if(t == 1){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
turn_right2;
Wait(150); ...
Off(OUT_AC);
Wait(100);
PlaySound(SOUND_UP)…音を鳴らす
PlaySound(SOUND_DOWN)…音を鳴らす
?2つ目の交差点(Qを直進)
} else if(t == 2){
PlaySound(SOUND_UP);
turn_left1;
Wait(100);
} else if(t == 3){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
go;
Wait(30);
Off(OUT_AC);
Wait(100);
?3つ目の交差点(Qを直進)
} else if(t == 4){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
go;
Wait(30);
Off(OUT_AC);
Wait(100);
?4つ目の交差点(Pを右折)
} else if(t == 5){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
turn_right2;
Wait(100);
Off(OUT_AC);
Wait(100);
?5つ目の交差点(Sを右折)
} else if(t == 6){
PlaySound(SOUND_UP);
Off(OUT_AC);
Wait(100);
turn_right2;
Wait(100);
Off(OUT_AC);
Wait(100);
?最後
} else if(t==7){
PlaySound(SOUND_DOWN);
Off(OUT_AC);
}
Off(OUT_AC);
}
}
*結果 [#u7f2ecfe]
百発百中でゴールにたどり着くわけではないが、課題通りに動...
ゴールにたどり着くまでの時間は45秒だった。
*問題点1 [#bc1bc87e]
サブルーチン、その他のプログラミングの意味や使い方をよく...
【対策】
カウンターを利用した。しかし、まだ理解しきれていないので...
*問題点2 [#tde6c549]
コースの明るさがバラバラなのか光センサーが安定しない時が...
【対策】
ところどころ色を塗り、光センサーの位置を変えることで対処...
*交差点の判断 [#je0807bf]
交差点は次の手順で判別した。
?TMAX(上に記載)を使用し、光センサーが連続で黒になった時...
[1]黒になった時間が最大値20以上の時
そこは交差点と判断して、別の動作へと切り替える。
[2]黒になった時間が20以下の時に白を計測した時
?交差点ではなかった場合
プログラムに従って、ライントレースを続けて行う。
?交差点と判断したあとの動作を指定
カウンターを利用することで、それぞれの交差点にたどり着い...
交差点を判断して、その場で右折しようとすると、右折後にラ...
?判断後は計測値をリセットし、次の交差点を探す
*感想及び反省 [#mf8abedd]
今回の課題はプログラミングを重視したものであり、調整やプ...
ページ名: