2016a/Member/kurayuki/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*はじめに [#tf82f2fe]
■課題:
黒いラインをセンサーで感知し、そのライン上を進む。
■詳細:
大きな紙に画像のようなコースを描き、その上をロボットが走...
モーターによりタイヤを動かすのは課題1と同様で、前面にセ...
#ref(2016a/Member/kurayuki/Mission2/DSC07316.jpg,100,ロボ...
一応、僕が担当になったのは『B地点 → R右折 → Q直進 → Q直進...
*プログラミング [#cce7845a]
■定義
#define THRESHOLD 42
#define BLACK 25
#define GLAY_B 38
#define GLAY_W 46
#define WHITE 51
#define GO_FWD OnFwd(OUT_AB,50);
#define TURN_L OnFwd(OUT_A,50);Off(OUT_B);
#define TURN_R OnFwd(OUT_B,50);Off(OUT_A);
#define CIRCLE_L OnFwd(OUT_A,50);OnRev(OUT_B,50)
#define CIRCLE_R OnFwd(OUT_B,50);OnRev(OUT_A,50)
■ライントレース
以下後半部分はサブルーチン未挿入。今回はこのサブルーチン...
task main()
{
SetSensorLight(S4);
int nOnline=0;
while(nOnline < 200) { // 続けて黒...
if (SENSOR_4 < BLACK) { // 線上なら
TURN_L; // 左へ
nOnline++; // カウンタ...
} else { // 上の条件...
if (SENSOR_4 > WHITE) { // 線上でな...
TURN_R; // 右へ
} else if (SENSOR_4 > GLAY_W) { // グレー白...
CIRCLE_R; // 右旋回
} else if (SENSOR_4 < GLAY_B) { // グレー黒...
CIRCLE_L; // 左旋回
}
nOnline=0; // カウンタ...
} Wait(1);
}
}
上の状態では交差点に来た時点で止まってしまう…。
*結果 [#bb252c84]
上の段階には最終日の2週間前の時点で出来ていたものの、そ...
そもそもカウンターの意味や、「{」を用いた複数の条件の設定...
■次回への反省
授業内で課題に着手する前に一通り予習しておこうと思う。こ...
*後書き [#s60c95fb]
課題3をやったことでライントレースに関する理解を深められ...
ロボットは解体してしまったので確かめる事は出来ないが、プ...
■定義
#define BLACK 34
#define WHITE 70
#define LEFT OnFwd(OUT_B,60);OnRev(OUT_C,36);
#define RIGHT OnFwd(OUT_C,60);OnRev(OUT_B,36);
#define RIGHT2 OnFwd(OUT_C,60);OnRev(OUT_B,20);Wait(500);
#define GO OnFwd(OUT_B,50);OnFwd(OUT_C,30);Wait(500);
#define GO2 OnFwd(OUT_BC,60);Wait(300);
#define nMAX 230
#define STEP 1
#define short_break Off(OUT_BC);Wait(1000);
■サブルーチン
sub normal()
{
SetSensorLight(S2);
int nOnline=0; // 「『nOnline』を使い...
while (nOnline < nMAX){ // 黒が230回未満連続す...
if (SENSOR_2 < BLACK){ // 真っ黒の時
RIGHT; // 右折
nOnline++; // カウンタ増やす
}else // それ以外の場合
if (SENSOR_2 < WHITE){ // 白〜黒に位置してる時
LEFT; // 左折
nOnline=0; // カウンタを0に
}
Wait(STEP); // 一瞬停止
}
short_break; // 一時停止
nOnline=0; // カウンタリセット
}
ライン上を見分けて交差点で停止するまでが以上の通りである。
カウンターで230回数えたら交差点と認識するようにした。
■タスクメイン
task main()
{
normal(); // B→R
RIGHT2;
normal(); // R→Q
GO;
GO2;
normal(); // Q→Q
GO;
GO2;
normal(); // Q→P
RIGHT2;
normal(); // P→S
RIGHT2;
normal(); // S→C
}
交差点に達して停止した時には、交差点から若干左へずれてい...
なので「GO」で右へ進ませ、「GO2」で交差点を渡りきらせてい...
以上である。
もう少し早く理解すべき内容であり、時すでに遅しなところで...
終了行:
[[2016a/Member]]
*はじめに [#tf82f2fe]
■課題:
黒いラインをセンサーで感知し、そのライン上を進む。
■詳細:
大きな紙に画像のようなコースを描き、その上をロボットが走...
モーターによりタイヤを動かすのは課題1と同様で、前面にセ...
#ref(2016a/Member/kurayuki/Mission2/DSC07316.jpg,100,ロボ...
一応、僕が担当になったのは『B地点 → R右折 → Q直進 → Q直進...
*プログラミング [#cce7845a]
■定義
#define THRESHOLD 42
#define BLACK 25
#define GLAY_B 38
#define GLAY_W 46
#define WHITE 51
#define GO_FWD OnFwd(OUT_AB,50);
#define TURN_L OnFwd(OUT_A,50);Off(OUT_B);
#define TURN_R OnFwd(OUT_B,50);Off(OUT_A);
#define CIRCLE_L OnFwd(OUT_A,50);OnRev(OUT_B,50)
#define CIRCLE_R OnFwd(OUT_B,50);OnRev(OUT_A,50)
■ライントレース
以下後半部分はサブルーチン未挿入。今回はこのサブルーチン...
task main()
{
SetSensorLight(S4);
int nOnline=0;
while(nOnline < 200) { // 続けて黒...
if (SENSOR_4 < BLACK) { // 線上なら
TURN_L; // 左へ
nOnline++; // カウンタ...
} else { // 上の条件...
if (SENSOR_4 > WHITE) { // 線上でな...
TURN_R; // 右へ
} else if (SENSOR_4 > GLAY_W) { // グレー白...
CIRCLE_R; // 右旋回
} else if (SENSOR_4 < GLAY_B) { // グレー黒...
CIRCLE_L; // 左旋回
}
nOnline=0; // カウンタ...
} Wait(1);
}
}
上の状態では交差点に来た時点で止まってしまう…。
*結果 [#bb252c84]
上の段階には最終日の2週間前の時点で出来ていたものの、そ...
そもそもカウンターの意味や、「{」を用いた複数の条件の設定...
■次回への反省
授業内で課題に着手する前に一通り予習しておこうと思う。こ...
*後書き [#s60c95fb]
課題3をやったことでライントレースに関する理解を深められ...
ロボットは解体してしまったので確かめる事は出来ないが、プ...
■定義
#define BLACK 34
#define WHITE 70
#define LEFT OnFwd(OUT_B,60);OnRev(OUT_C,36);
#define RIGHT OnFwd(OUT_C,60);OnRev(OUT_B,36);
#define RIGHT2 OnFwd(OUT_C,60);OnRev(OUT_B,20);Wait(500);
#define GO OnFwd(OUT_B,50);OnFwd(OUT_C,30);Wait(500);
#define GO2 OnFwd(OUT_BC,60);Wait(300);
#define nMAX 230
#define STEP 1
#define short_break Off(OUT_BC);Wait(1000);
■サブルーチン
sub normal()
{
SetSensorLight(S2);
int nOnline=0; // 「『nOnline』を使い...
while (nOnline < nMAX){ // 黒が230回未満連続す...
if (SENSOR_2 < BLACK){ // 真っ黒の時
RIGHT; // 右折
nOnline++; // カウンタ増やす
}else // それ以外の場合
if (SENSOR_2 < WHITE){ // 白〜黒に位置してる時
LEFT; // 左折
nOnline=0; // カウンタを0に
}
Wait(STEP); // 一瞬停止
}
short_break; // 一時停止
nOnline=0; // カウンタリセット
}
ライン上を見分けて交差点で停止するまでが以上の通りである。
カウンターで230回数えたら交差点と認識するようにした。
■タスクメイン
task main()
{
normal(); // B→R
RIGHT2;
normal(); // R→Q
GO;
GO2;
normal(); // Q→Q
GO;
GO2;
normal(); // Q→P
RIGHT2;
normal(); // P→S
RIGHT2;
normal(); // S→C
}
交差点に達して停止した時には、交差点から若干左へずれてい...
なので「GO」で右へ進ませ、「GO2」で交差点を渡りきらせてい...
以上である。
もう少し早く理解すべき内容であり、時すでに遅しなところで...
ページ名: