2015a/Member/KN/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
目次
#contents
*課題[#f6117813]
次の経路を黒い線にそって動くロボットを作成した。
•C地点からA地点へ (Q交差点では直進、P三叉路では右折)
そして、途中(P地点とQ地点の間)においたボール(ピンポン玉)...
可能であれば、A,B,Cのそれぞれにエリアに入る三叉路付近から...
#ref(./2015a-mission2.png,50%,コース);
*ロボット本体の説明 [#x19f9220]
ロボットの移動に関して、左右両方の車輪にモーターを使用す...
光センサーに関して、ロボットの先端に付けると、ロボットが...
ピンポン玉をつかむためのアームに関して、初めはブロックを...
#ref(./kikai1.jpg,20%);
ピンポン玉を押さえている様子
#ref(./kikai2.jpg,20%);
*プログラムの説明 [#lc099cda]
**定義 [#e043bae8]
#define THRESHOLD 42 ...
#define set_power_L SetPower(OUT_AC,3); ...
#define go_forward OnFwd(OUT_AC); ...
#define turn_left0 set_power_L;OnFwd(OUT_C);OnRev(OUT_A)...
#define turn_right0 set_power_L;OnFwd(OUT_A);OnRev(OUT_C...
#define turn_left1 set_power_L;OnFwd(OUT_C);Off(OUT_A);...
#define turn_right1 set_power_L;OnFwd(OUT_A);Off(OUT_C);...
#define STEP 1 ...
#define nMAX 6 ...
#define cross_line go_forward;Wait(15); ...
#define hold set_power_L;OnFwd(OUT_B);Wait(15);Off(OUT_B...
#define shoot(t) set_power_L;OnRev(OUT_B);Wait(15);Off(O...
**サブルーチン(ライントレース) [#sde12d9a]
sub trace_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int nOnline=0; // ...
ClearTimer(0); // ...
/* 10秒間、通常のライントレースをする */
while (FastTimer(0) <= 1000) {
/* 黒を続けてnMAX回繰り返さない間、通常のライント...
while (nOnline < nMAX) {
if (SENSOR_2 < THRESHOLD-5) { ...
turn_left0; ...
nOnline++; ...
} else {
if (SENSOR_2 < THRESHOLD-2) { ...
turn_left1; ...
} else if (SENSOR_2 < THRESHOLD +2) { ...
go_forward; ...
} else if (SENSOR_2 < THRESHOLD +5) { ...
turn_right1; ...
} else { ...
turn_right0; ...
}
nOnline=0; ...
}
Wait(STEP);
}
PlaySound(SOUND_CLICK); ...
Off(OUT_AC);Wait(200); ...
cross_line; ...
nOnline=0; ...
}
}
**メインタスク [#hae17844]
task main()
{
trace_line(); ...
Off(OUT_AC);Wait(100); ...
hold; ...
trace_line(); ...
Off(OUT_AC);Wait(100); ...
shoot(100); ...
}
*反省点 [#s7053745]
シュートをするためにつかんでいるピンポン玉をはなしながら...
*まとめ [#gb0c5a6a]
定義やサブルーチンを使い、メインタスクを簡単に表すことが...
ライントレースに関して、閾値を5つに分けて、旋回だけでなく...
終了行:
[[2015a/Member]]
目次
#contents
*課題[#f6117813]
次の経路を黒い線にそって動くロボットを作成した。
•C地点からA地点へ (Q交差点では直進、P三叉路では右折)
そして、途中(P地点とQ地点の間)においたボール(ピンポン玉)...
可能であれば、A,B,Cのそれぞれにエリアに入る三叉路付近から...
#ref(./2015a-mission2.png,50%,コース);
*ロボット本体の説明 [#x19f9220]
ロボットの移動に関して、左右両方の車輪にモーターを使用す...
光センサーに関して、ロボットの先端に付けると、ロボットが...
ピンポン玉をつかむためのアームに関して、初めはブロックを...
#ref(./kikai1.jpg,20%);
ピンポン玉を押さえている様子
#ref(./kikai2.jpg,20%);
*プログラムの説明 [#lc099cda]
**定義 [#e043bae8]
#define THRESHOLD 42 ...
#define set_power_L SetPower(OUT_AC,3); ...
#define go_forward OnFwd(OUT_AC); ...
#define turn_left0 set_power_L;OnFwd(OUT_C);OnRev(OUT_A)...
#define turn_right0 set_power_L;OnFwd(OUT_A);OnRev(OUT_C...
#define turn_left1 set_power_L;OnFwd(OUT_C);Off(OUT_A);...
#define turn_right1 set_power_L;OnFwd(OUT_A);Off(OUT_C);...
#define STEP 1 ...
#define nMAX 6 ...
#define cross_line go_forward;Wait(15); ...
#define hold set_power_L;OnFwd(OUT_B);Wait(15);Off(OUT_B...
#define shoot(t) set_power_L;OnRev(OUT_B);Wait(15);Off(O...
**サブルーチン(ライントレース) [#sde12d9a]
sub trace_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int nOnline=0; // ...
ClearTimer(0); // ...
/* 10秒間、通常のライントレースをする */
while (FastTimer(0) <= 1000) {
/* 黒を続けてnMAX回繰り返さない間、通常のライント...
while (nOnline < nMAX) {
if (SENSOR_2 < THRESHOLD-5) { ...
turn_left0; ...
nOnline++; ...
} else {
if (SENSOR_2 < THRESHOLD-2) { ...
turn_left1; ...
} else if (SENSOR_2 < THRESHOLD +2) { ...
go_forward; ...
} else if (SENSOR_2 < THRESHOLD +5) { ...
turn_right1; ...
} else { ...
turn_right0; ...
}
nOnline=0; ...
}
Wait(STEP);
}
PlaySound(SOUND_CLICK); ...
Off(OUT_AC);Wait(200); ...
cross_line; ...
nOnline=0; ...
}
}
**メインタスク [#hae17844]
task main()
{
trace_line(); ...
Off(OUT_AC);Wait(100); ...
hold; ...
trace_line(); ...
Off(OUT_AC);Wait(100); ...
shoot(100); ...
}
*反省点 [#s7053745]
シュートをするためにつかんでいるピンポン玉をはなしながら...
*まとめ [#gb0c5a6a]
定義やサブルーチンを使い、メインタスクを簡単に表すことが...
ライントレースに関して、閾値を5つに分けて、旋回だけでなく...
ページ名: