2015a/Member/Non/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*はじめに [#a20c1352]
課題2は「ライントレーサー」。ただ線上を動くのではなく点P...
#ref(./zu.png,60%)
以下、ロボットとプログラムを説明していく。
*ロボットの構造 [#v4ef1fd6]
**光センサー [#q07c4e38]
光センサー自体はキットに付属されていたものだが、工夫した...
#ref(./sensor.jpg,20%)
上図のようにセンサーはロボットの内側に組み込んだ。最初セ...
**アーム [#kb237ce5]
続いてピンポン玉をつかむアームの部分。私たちのチームはつ...
&ref(./arm.jpg,15%);
&ref(./arm2.jpg,15%);
ギアを2つ使い、アームの上げ下げが可能になった(上左図)。
また、シュートがまっすぐ放たれなかったため、ロボの下側に...
**ロボット全体 [#yd34b44d]
&ref(./zentai.jpg,20%);
こうしてできたロボットが左図である。かなりシンプルでコン...
*プログラム [#kd7c44fb]
**動きを定義 [#pf3667b2]
まずはプログラムの中で使用する一定の動きや数値を定義する。
#define threshold 45
#define hipower 7
#define lowpower 2
#define set_power_H SetPower(OUT_AC,hipower); ...
#define set_power_L SetPower(OUT_AC,lowpower); ...
#define go_forward set_power_H;OnRev(OUT_AC); ...
#define turn_left1 set_power_L;OnRev(OUT_C);OnFwd(OUT_A)...
#define turn_left0 set_power_L;OnRev(OUT_C);Off(OUT_A);...
#define turn_right0 set_power_L;OnRev(OUT_A);Off(OUT_C);...
#define turn_right1 set_power_L;OnRev(OUT_A);OnRev(OUT_C...
#define step 1
#define nMax 3
#define short_break Off(OUT_AC);Wait(20); ...
#define cross_time 30 ...
#define cross_line OnRev(OUT_AC);Wait(cross_time);short_...
#define Qmade 1100
#define Pmade 1600
#define Pkara 2600
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B); //アー...
#define sageru OnFwd(OUT_B);Wait(15);Off(OUT_B); //アー...
#define utsu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);...
左折と右折は、片方のタイヤを止めて曲がるものと進行方向に...
**サブルーチンの利用 [#s6d22a32]
サブルーチンを使用して通常のライントレースと交差点を渡る...
***通常のライントレース [#s46b6bf4]
この時のプログラムは以下の通り。
sub line_traceN() //通常のトレース
{
if (SENSOR_2 < threshold -8) {
turn_left1; //37以...
} else if (SENSOR_2 < threshold -3) {
go_forward; //37以...
} else if (SENSOR_2 < threshold -1) {
turn_right0; //42以...
} else {
turn_right1; //それ...
}
Wait(step);
}
数値で少し細かく場合を分け、よりなめらかにトレースできる...
***交差点でのライントレース [#zd667f04]
プログラムは以下の通り。
sub line_traceK() //交差点でのトレース
{
int nOnline=0; //続けて黒になった回数(カウンタ)
sageru;
while (FastTimer(0) <= Pmade+1) {
while (nOnline < nMax) { ...
if (SENSOR_2 < threshold -8) {
turn_left1; ...
nOnline++; ...
} else {
if (SENSOR_2 < threshold -6) {
turn_left0; ...
} else if (SENSOR_2 < threshold -3) {
go_forward; ...
} else if (SENSOR_2 < threshold -1) {
turn_right0; ...
} else {
turn_right1; ...
}
nOnline=0; ...
}
Wait(step);
}
short_break;
turn_right1;Wait(nMax*step); ...
cross_line; ...
nOnline=0; ...
}
}
ここではカウンタを利用し、交差点の判断をさせる。
**メインルーチン [#a1684afa]
以上からメインルーチンは以下のようになる。
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0) <= Qmade) {
line_traceN(); //Qまで通常のトレース
}
PlaySound(SOUND_UP);
while (FastTimer(0) <= Pmade) {
line_traceK(); //QからPまで交差点の...
}
PlaySound(SOUND_UP);
while (FastTimer(0) <= Pkara) {
line_traceN(); //Pを通過するとき通常...
}
PlaySound(SOUND_UP);
utsu;
}
タイマーでトレース方法の切り替えを行う。Pmade、Qmadeとは...
この時間が少し違うだけでロボが誤って旋回してしまったりと...
トレース方法が実際に変わっているのか分かりにくかったので...
*課題2を終えて [#a84a01cf]
今回、自分にとって最も困難だったのはプログラムを理解する...
ロボットを作るにあたっては、チーム内でアイデアを出しなが...
終了行:
#contents
*はじめに [#a20c1352]
課題2は「ライントレーサー」。ただ線上を動くのではなく点P...
#ref(./zu.png,60%)
以下、ロボットとプログラムを説明していく。
*ロボットの構造 [#v4ef1fd6]
**光センサー [#q07c4e38]
光センサー自体はキットに付属されていたものだが、工夫した...
#ref(./sensor.jpg,20%)
上図のようにセンサーはロボットの内側に組み込んだ。最初セ...
**アーム [#kb237ce5]
続いてピンポン玉をつかむアームの部分。私たちのチームはつ...
&ref(./arm.jpg,15%);
&ref(./arm2.jpg,15%);
ギアを2つ使い、アームの上げ下げが可能になった(上左図)。
また、シュートがまっすぐ放たれなかったため、ロボの下側に...
**ロボット全体 [#yd34b44d]
&ref(./zentai.jpg,20%);
こうしてできたロボットが左図である。かなりシンプルでコン...
*プログラム [#kd7c44fb]
**動きを定義 [#pf3667b2]
まずはプログラムの中で使用する一定の動きや数値を定義する。
#define threshold 45
#define hipower 7
#define lowpower 2
#define set_power_H SetPower(OUT_AC,hipower); ...
#define set_power_L SetPower(OUT_AC,lowpower); ...
#define go_forward set_power_H;OnRev(OUT_AC); ...
#define turn_left1 set_power_L;OnRev(OUT_C);OnFwd(OUT_A)...
#define turn_left0 set_power_L;OnRev(OUT_C);Off(OUT_A);...
#define turn_right0 set_power_L;OnRev(OUT_A);Off(OUT_C);...
#define turn_right1 set_power_L;OnRev(OUT_A);OnRev(OUT_C...
#define step 1
#define nMax 3
#define short_break Off(OUT_AC);Wait(20); ...
#define cross_time 30 ...
#define cross_line OnRev(OUT_AC);Wait(cross_time);short_...
#define Qmade 1100
#define Pmade 1600
#define Pkara 2600
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B); //アー...
#define sageru OnFwd(OUT_B);Wait(15);Off(OUT_B); //アー...
#define utsu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);...
左折と右折は、片方のタイヤを止めて曲がるものと進行方向に...
**サブルーチンの利用 [#s6d22a32]
サブルーチンを使用して通常のライントレースと交差点を渡る...
***通常のライントレース [#s46b6bf4]
この時のプログラムは以下の通り。
sub line_traceN() //通常のトレース
{
if (SENSOR_2 < threshold -8) {
turn_left1; //37以...
} else if (SENSOR_2 < threshold -3) {
go_forward; //37以...
} else if (SENSOR_2 < threshold -1) {
turn_right0; //42以...
} else {
turn_right1; //それ...
}
Wait(step);
}
数値で少し細かく場合を分け、よりなめらかにトレースできる...
***交差点でのライントレース [#zd667f04]
プログラムは以下の通り。
sub line_traceK() //交差点でのトレース
{
int nOnline=0; //続けて黒になった回数(カウンタ)
sageru;
while (FastTimer(0) <= Pmade+1) {
while (nOnline < nMax) { ...
if (SENSOR_2 < threshold -8) {
turn_left1; ...
nOnline++; ...
} else {
if (SENSOR_2 < threshold -6) {
turn_left0; ...
} else if (SENSOR_2 < threshold -3) {
go_forward; ...
} else if (SENSOR_2 < threshold -1) {
turn_right0; ...
} else {
turn_right1; ...
}
nOnline=0; ...
}
Wait(step);
}
short_break;
turn_right1;Wait(nMax*step); ...
cross_line; ...
nOnline=0; ...
}
}
ここではカウンタを利用し、交差点の判断をさせる。
**メインルーチン [#a1684afa]
以上からメインルーチンは以下のようになる。
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0) <= Qmade) {
line_traceN(); //Qまで通常のトレース
}
PlaySound(SOUND_UP);
while (FastTimer(0) <= Pmade) {
line_traceK(); //QからPまで交差点の...
}
PlaySound(SOUND_UP);
while (FastTimer(0) <= Pkara) {
line_traceN(); //Pを通過するとき通常...
}
PlaySound(SOUND_UP);
utsu;
}
タイマーでトレース方法の切り替えを行う。Pmade、Qmadeとは...
この時間が少し違うだけでロボが誤って旋回してしまったりと...
トレース方法が実際に変わっているのか分かりにくかったので...
*課題2を終えて [#a84a01cf]
今回、自分にとって最も困難だったのはプログラムを理解する...
ロボットを作るにあたっては、チーム内でアイデアを出しなが...
ページ名: