2015b/Member/sun16/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/Member]]
目次
#contents
*課題内容 [#kfaf69dd]
#ref(./2015b-mission2.png,65%,ロボット全体図)
課題は上図の黒線にそって動くライントレースロボットを制...
A地点またはB地点からスタートし、ライントレースしていき...
*ライントレースとは? [#he44cd7b]
ライントレースとは、床面に描かれた線をロボットがセンサ...
*ライントレースロボット [#of50aded]
**ロボット全体図 [#ya86efcb]
#ref(./DSC_0221.JPG,40%,ロボット全体図)
上の写真のものが、今回の課題で制作したライントレースロ...
**光センサについて [#icca71bd]
#ref(./DSC_0222.JPG,40%,センサ位置)
上の写真の赤丸で囲ってあるものが光センサになります。光...
*ライントレースをする方法[#gb308690]
ロボットが走行するために、モーターを2つ使用しています。...
今回のライントレースは光センサが1つだけということもあ...
**基本動作 [#a7686e7d]
基本となるライントレース中のロボットの動作は、光センサ...
**交差点の判断 [#jec4bdca]
今回の課題で最も難関となるのが、交差点の判断です。私は...
**コースの道順 [#k16928ad]
課題のコースをうまく走行するために、通常のライントレー...
?A地点からP地点右折前までのライントレース(右側走行)
#ref(./line_trace1.png,65%,道順1)
上図の赤線が1つ目に行うライントレースの道順です。
このライントレースでの、光センサの値に対するモーターの...
この動きを続けることで、交差点を直進することを除き、課...
?P地点右折後からB地点までのライントレース(左側走行)
#ref(./line_trace2.png,55%,道順1)
上図の青線が2つ目に行うライントレースの道順です。
このライントレースでの、光センサの値に対するモーターの...
この動きを続けることで、課題の通りにライントレースする...
2パターンに分けた理由は、上図ので橙色の丸の部分をトレ...
*プログラム [#d4fb4ffe]
**マクロ定義 [#hac9f964]
〇閾値
#define THRESHOLD 39
〇A地点からスタートする動作・・・A地点から直進運動をします。
#define START SetPower(OUT_A,7);SetPower(OUT_C,7);OnFwd(...
〇ライントレース中の直進運動・・・光センサが閾値を読み取ると...
#define ST SetPower(OUT_A,5);SetPower(OUT_C,5);Off(OUT_A...
〇A地点からP地点右折前までの左右運動
#define TR SetPower(OUT_A,1);SetPower(OUT_C,1);Off(OUT_A...
#define TL SetPower(OUT_A,2);SetPower(OUT_C,2);Off(OUT_A...
#define TRL SetPower(OUT_A,1);Off(OUT_AC);OnFwd(OUT_A);W...
#define TLL SetPower(OUT_C,2);Off(OUT_AC);OnFwd(OUT_C);W...
〇P地点右折後からB地点までの左右運動
#define TR2 SetPower(OUT_A,2);SetPower(OUT_C,2);Off(OUT_...
#define TL2 SetPower(OUT_A,1);SetPower(OUT_C,1);Off(OUT_...
#define TRL2 SetPower(OUT_A,1);Off(OUT_AC);OnFwd(OUT_A);...
#define TLL2 SetPower(OUT_A,1);Off(OUT_AC);OnFwd(OUT_C);...
〇交差点を直進
#define PQ_ST SetPower(OUT_A,2);SetPower(OUT_C,2);Off(OU...
〇左回りに車体を動かす
#define CCW SetPower(OUT_A,4);SetPower(OUT_C,4);Off(OUT_...
〇B地点にゴールする動作
#define GOAL SetPower(OUT_AC,4);Off(OUT_AC);OnFwd(OUT_A)...
〇ゴールした際に流れる音の定義
#define Do 1047 //高いド
#define LaF 831 //ラ♭
#define SiF 932 //シ♭
#define Si 988 //シ
〇交差点をカウントするための変数
int c_point;
**サブルーチン [#h824e03e]
〇交差点で停止し、カウントを1増やす・・・課題の条件にある交...
sub crossing()
{
Off(OUT_AC);
Wait(100);
c_point+=1;
}
〇音を流す・・・ライントレースが終了した際に、歓喜の歌が流れ...
sub music()
{
PlayTone(Do,20);
Wait(30);
PlayTone(Do,20);
Wait(30);
PlayTone(Do,20);
Wait(30);
PlayTone(Do,60);
Wait(62);
PlayTone(LaF,60);
Wait(62);
PlayTone(SiF,60);
Wait(62);
PlayTone(Do,20);
Wait(42);
PlayTone(Si,20);
Wait(22);
PlayTone(Do,90);
Wait(92);
}
**メインルーチン [#la66f077]
このプログラムでは、主にwhile文とif文を使っています。
ライントレース中の動きはwhile文を使っています。条件式は...
交差点での動きはif文を使っています。条件式は、走行時間...
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
START;
ClearTimer(0); //交差点判断時間
ClearTimer(1); //走行時間
c_point=0;
while (true) //ライントレース開始
{
while((FastTimer(0)<10)&&(c_point<=3)) //A地点からP地...
{
if(SENSOR_2>THRESHOLD+8) //最も白
{
TL;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+7) //少し白
{
TLL;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD) //中間
{
ST;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-2) //少し黒
{
TRL;
ClearTimer(0);
}
else //最も黒
{
TR;
}
}
while((FastTimer(0)<10)&&(c_point>=4)) //P地点右...
{
if(SENSOR_2>THRESHOLD+8) //最も白
{
TR2;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+7) //少し白
{
TRL2;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD) //中間
{
ST;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-2) //少し黒
{
TLL2;
ClearTimer(0);
}
else //最も黒
{
TL2;
}
}
if((FastTimer(1)>1400)&&(c_point==0)) //P...
{
crossing();
PQ_ST;
ClearTimer(0);
}
else
{
ClearTimer(0);
}
if((FastTimer(1)>2100)&&(c_point==1)) //Q...
{
crossing();
CCW;
PQ_ST;
ClearTimer(0);
}
if((FastTimer(1)>2800)&&(c_point==2)) //Q...
{
crossing();
ClearTimer(0);
ClearTimer(1);
}
if((FastTimer(1)>500)&&(c_point==3)) //P地...
{
crossing();
PQ_ST;
ClearTimer(0);
ClearTimer(1);
}
if((FastTimer(1)>2300)&&(c_point==4)) //Q...
{
crossing();
ClearTimer(0);
ClearTimer(1);
}
if((FastTimer(1)>500)&&(c_point==5)) //P地...
{
crossing();
ClearTimer(0);
}
if((FastTimer(1)>1300)&&(c_point==6)) //B...
{
crossing();
GOAL;
Off(OUT_AC);
Wait(50);
music();
Off(OUT_AC);
Wait(10000);
}
}
}
*結果・課題点 [#ja36522e]
課題の通りにライントレースすることはできました。ですが...
*反省・感想 [#c72d73f0]
今回の課題はプログラムを考えることが、非常に難しかった...
終了行:
[[2015b/Member]]
目次
#contents
*課題内容 [#kfaf69dd]
#ref(./2015b-mission2.png,65%,ロボット全体図)
課題は上図の黒線にそって動くライントレースロボットを制...
A地点またはB地点からスタートし、ライントレースしていき...
*ライントレースとは? [#he44cd7b]
ライントレースとは、床面に描かれた線をロボットがセンサ...
*ライントレースロボット [#of50aded]
**ロボット全体図 [#ya86efcb]
#ref(./DSC_0221.JPG,40%,ロボット全体図)
上の写真のものが、今回の課題で制作したライントレースロ...
**光センサについて [#icca71bd]
#ref(./DSC_0222.JPG,40%,センサ位置)
上の写真の赤丸で囲ってあるものが光センサになります。光...
*ライントレースをする方法[#gb308690]
ロボットが走行するために、モーターを2つ使用しています。...
今回のライントレースは光センサが1つだけということもあ...
**基本動作 [#a7686e7d]
基本となるライントレース中のロボットの動作は、光センサ...
**交差点の判断 [#jec4bdca]
今回の課題で最も難関となるのが、交差点の判断です。私は...
**コースの道順 [#k16928ad]
課題のコースをうまく走行するために、通常のライントレー...
?A地点からP地点右折前までのライントレース(右側走行)
#ref(./line_trace1.png,65%,道順1)
上図の赤線が1つ目に行うライントレースの道順です。
このライントレースでの、光センサの値に対するモーターの...
この動きを続けることで、交差点を直進することを除き、課...
?P地点右折後からB地点までのライントレース(左側走行)
#ref(./line_trace2.png,55%,道順1)
上図の青線が2つ目に行うライントレースの道順です。
このライントレースでの、光センサの値に対するモーターの...
この動きを続けることで、課題の通りにライントレースする...
2パターンに分けた理由は、上図ので橙色の丸の部分をトレ...
*プログラム [#d4fb4ffe]
**マクロ定義 [#hac9f964]
〇閾値
#define THRESHOLD 39
〇A地点からスタートする動作・・・A地点から直進運動をします。
#define START SetPower(OUT_A,7);SetPower(OUT_C,7);OnFwd(...
〇ライントレース中の直進運動・・・光センサが閾値を読み取ると...
#define ST SetPower(OUT_A,5);SetPower(OUT_C,5);Off(OUT_A...
〇A地点からP地点右折前までの左右運動
#define TR SetPower(OUT_A,1);SetPower(OUT_C,1);Off(OUT_A...
#define TL SetPower(OUT_A,2);SetPower(OUT_C,2);Off(OUT_A...
#define TRL SetPower(OUT_A,1);Off(OUT_AC);OnFwd(OUT_A);W...
#define TLL SetPower(OUT_C,2);Off(OUT_AC);OnFwd(OUT_C);W...
〇P地点右折後からB地点までの左右運動
#define TR2 SetPower(OUT_A,2);SetPower(OUT_C,2);Off(OUT_...
#define TL2 SetPower(OUT_A,1);SetPower(OUT_C,1);Off(OUT_...
#define TRL2 SetPower(OUT_A,1);Off(OUT_AC);OnFwd(OUT_A);...
#define TLL2 SetPower(OUT_A,1);Off(OUT_AC);OnFwd(OUT_C);...
〇交差点を直進
#define PQ_ST SetPower(OUT_A,2);SetPower(OUT_C,2);Off(OU...
〇左回りに車体を動かす
#define CCW SetPower(OUT_A,4);SetPower(OUT_C,4);Off(OUT_...
〇B地点にゴールする動作
#define GOAL SetPower(OUT_AC,4);Off(OUT_AC);OnFwd(OUT_A)...
〇ゴールした際に流れる音の定義
#define Do 1047 //高いド
#define LaF 831 //ラ♭
#define SiF 932 //シ♭
#define Si 988 //シ
〇交差点をカウントするための変数
int c_point;
**サブルーチン [#h824e03e]
〇交差点で停止し、カウントを1増やす・・・課題の条件にある交...
sub crossing()
{
Off(OUT_AC);
Wait(100);
c_point+=1;
}
〇音を流す・・・ライントレースが終了した際に、歓喜の歌が流れ...
sub music()
{
PlayTone(Do,20);
Wait(30);
PlayTone(Do,20);
Wait(30);
PlayTone(Do,20);
Wait(30);
PlayTone(Do,60);
Wait(62);
PlayTone(LaF,60);
Wait(62);
PlayTone(SiF,60);
Wait(62);
PlayTone(Do,20);
Wait(42);
PlayTone(Si,20);
Wait(22);
PlayTone(Do,90);
Wait(92);
}
**メインルーチン [#la66f077]
このプログラムでは、主にwhile文とif文を使っています。
ライントレース中の動きはwhile文を使っています。条件式は...
交差点での動きはif文を使っています。条件式は、走行時間...
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
START;
ClearTimer(0); //交差点判断時間
ClearTimer(1); //走行時間
c_point=0;
while (true) //ライントレース開始
{
while((FastTimer(0)<10)&&(c_point<=3)) //A地点からP地...
{
if(SENSOR_2>THRESHOLD+8) //最も白
{
TL;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+7) //少し白
{
TLL;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD) //中間
{
ST;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-2) //少し黒
{
TRL;
ClearTimer(0);
}
else //最も黒
{
TR;
}
}
while((FastTimer(0)<10)&&(c_point>=4)) //P地点右...
{
if(SENSOR_2>THRESHOLD+8) //最も白
{
TR2;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+7) //少し白
{
TRL2;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD) //中間
{
ST;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-2) //少し黒
{
TLL2;
ClearTimer(0);
}
else //最も黒
{
TL2;
}
}
if((FastTimer(1)>1400)&&(c_point==0)) //P...
{
crossing();
PQ_ST;
ClearTimer(0);
}
else
{
ClearTimer(0);
}
if((FastTimer(1)>2100)&&(c_point==1)) //Q...
{
crossing();
CCW;
PQ_ST;
ClearTimer(0);
}
if((FastTimer(1)>2800)&&(c_point==2)) //Q...
{
crossing();
ClearTimer(0);
ClearTimer(1);
}
if((FastTimer(1)>500)&&(c_point==3)) //P地...
{
crossing();
PQ_ST;
ClearTimer(0);
ClearTimer(1);
}
if((FastTimer(1)>2300)&&(c_point==4)) //Q...
{
crossing();
ClearTimer(0);
ClearTimer(1);
}
if((FastTimer(1)>500)&&(c_point==5)) //P地...
{
crossing();
ClearTimer(0);
}
if((FastTimer(1)>1300)&&(c_point==6)) //B...
{
crossing();
GOAL;
Off(OUT_AC);
Wait(50);
music();
Off(OUT_AC);
Wait(10000);
}
}
}
*結果・課題点 [#ja36522e]
課題の通りにライントレースすることはできました。ですが...
*反省・感想 [#c72d73f0]
今回の課題はプログラムを考えることが、非常に難しかった...
ページ名: