2014a/Member/gamigami/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/Member]]
目次
#contents
* メンバー紹介[#f5b97111]
gamigami (自分)
gomibakudan (協力した仲間)
*課題の説明 [#r3df13cf]
詳しくは[[2014a/Mission1]]
*ロボットの紹介 [#kb75725f]
**ピンポン玉をキャッチする前の画像 [#b758cf68]
#ref(2014a/Member/gamigami/Mission1/robo1.jpg,100%,ロボッ...
右側に前進する
多少のずれでもピンポン玉がとれるように大きめの枠にしてある
**ピンポン玉キャッチ後の画像 [#lbd58cef]
#ref(2014a/Member/gamigami/Mission1/robo3.jpg,100%,ピンポ...
前進方向は左側
**センサーの位置 [#vc394b4b]
#ref(2014a/Member/gamigami/Mission1/robo4.jpg,100%,センサ...
センサーを細かく判断できるようにかなりラインに近くセンサ...
回転した時のズレ抑えるため多少内側を向いている
*プログラム内容 [#a3f2c6e8]
#ref(2014a/Member/gamigami/Mission1/ko-susetumei.jpg,%,コ...
・ラインの左側をトレースしていく
・最初のオレンジの点でピンポン玉をとる
・水色の点で一度判断ミスが起こるので修正プログラムを入れ...
・水色とオレンジの点の数をカウントさせて行動させる
・緑の点でたまに誤認識することがたまにある
・ゴール側の四角でピンポン玉を離す
*プログラム [#o2155e95]
**定義付け [#hba138b1]
#define THRESHOLD 36 // しきい値
#define sp_H SetPower(OUT_AC,7); // スピード調整:早い
#define sp_L SetPower(OUT_AC,2); // スピード調整:遅い
#define go sp_H; OnFwd(OUT_AC); // 前進
#define turn_left1 sp_L; OnFwd(OUT_C); OnRev(OUT_A) // ...
#define turn_left0 sp_L; OnFwd(OUT_C); Off(OUT_A) // 右...
#define turn_right1 sp_L; OnFwd(OUT_A); OnRev(OUT_C); //...
#define turn_right0 sp_L; OnFwd(OUT_A); Off(OUT_C); // ...
#define STEP 1 // 行動を行う
#define nMAX 10 // 線上での行動が連続で10回行うとき指示...
#define CROSS_TIME 50 // 交差点で直進させる時間
#define cross_line sp_L; OnFwd(OUT_AC); Wait(CROSS_TIME)...
#define turn_time 60 // 旋回させる時間
#define the_time 16 // ボールを取る部分のモーターが動く...
**基本の動作のプログラム [#k5706497]
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); // 光センサーを使う...
int online=0; // 交差点または急カーブを判別
int next=0; // 交差点と急カーブの数をカウント
go; Wait(100); // 枠の中からライン上に移動
while(true) {
while (online < nMAX) { // ライン上での行動が10回同じ...
if (SENSOR_2 < THRESHOLD - 6) {
turn_left1; // もしセンサーがしきい値より6未満の明...
online++; // 判別開始
} else if (SENSOR_2 < THRESHOLD - 1) {
turn_left0; //もしセンサーがしきい値より1未満の明...
online=0; // 判別し直し
} else if (SENSOR_2 < THRESHOLD + 2) {
go; //もしセンサーがしきい値より2大きい明るさまで...
online=0; // 判別し直し
} else if (SENSOR_2 < THRESHOLD + 5) {
turn_right0; //もしセンサーがしきい値より5大きい明...
online=0; //判別し直し
} else if (SENSOR_2 < THRESHOLD +100) {
turn_right1; // もしセンサーがしきい値より100大...
online=0; // 判別し直し
}
Wait(STEP); // 行動を一回行う
}
**交差点または直角カーブでのプログラム [#wf4a21df]
***最初のカーブ(曲がり切れないため) [#ce306594]
if (next < 1 ) { // 最初のカーブの内側で曲が...
PlaySound(SOUND_UP); // 音を...
Wait(5); turn_left1;
Wait(50;
next++; // 次の動作に移行させる
online=0; // 判別し直し
}
***最初の交差点でのプログラム [#h4e6e2e3]
else if (next == 1 ) {
turn_right1; // 旋回して方向...
Wait(turn_time);
OnFwd(OUT_B);Wait(the_time); O...
cross_line; // 交差点を通過さ...
online=0;
next++; //次の動作に移行
}
***二個目の交差点でのプログラム [#e5094a6b]
else if (next == 2 ){ // 二個...
turn_right1; // 旋回で方向転換
Wait(55);
OnFwd(OUT_AC); Wait(10); // ...
online=0; // 判別し直し
next++; // 次の動作に移行
}
***直角カーブでのプログラム [#paf27051]
else if (next == 3 ) {
PlaySound(SOUND_DOWN); // 音に...
Wait(5); turn_left1;
Wait(50);
next++; // 次の動作に移行
online=0; // 判別し直し
}
***三個目の交差点でのプログラム [#k49287bf]
else if(next == 4 )
turn_right1; // 方向転換
Wait(turn_time - 15); // 直進...
cross_line; // 交差点を直進
online=0; // 判別し直し
next++; // 次の行動に移行
}
***シュートのプログラム [#b0e8f2c0]
else if(next == 5 ) {
PlaySound(SOUND_UP); // 音で...
OnRev(OUT_B); Wait(the_time); ...
OnFwd(OUT_AC); Wait(90); Off(O...
}
}
}
*反省 [#kadee4dc]
・仲間と違う機構でプログラムをしてしまいなかなか完成しな...
・ピンポン玉をキャッチする部分を付けてからプログラムを打...
・プログラムではカウント式にしたので直角カーブと交差点の...
・最後まで誤作動をなくすことはできなかった
以上の点を次回の課題では改善したいと思う..
終了行:
[[2014a/Member]]
目次
#contents
* メンバー紹介[#f5b97111]
gamigami (自分)
gomibakudan (協力した仲間)
*課題の説明 [#r3df13cf]
詳しくは[[2014a/Mission1]]
*ロボットの紹介 [#kb75725f]
**ピンポン玉をキャッチする前の画像 [#b758cf68]
#ref(2014a/Member/gamigami/Mission1/robo1.jpg,100%,ロボッ...
右側に前進する
多少のずれでもピンポン玉がとれるように大きめの枠にしてある
**ピンポン玉キャッチ後の画像 [#lbd58cef]
#ref(2014a/Member/gamigami/Mission1/robo3.jpg,100%,ピンポ...
前進方向は左側
**センサーの位置 [#vc394b4b]
#ref(2014a/Member/gamigami/Mission1/robo4.jpg,100%,センサ...
センサーを細かく判断できるようにかなりラインに近くセンサ...
回転した時のズレ抑えるため多少内側を向いている
*プログラム内容 [#a3f2c6e8]
#ref(2014a/Member/gamigami/Mission1/ko-susetumei.jpg,%,コ...
・ラインの左側をトレースしていく
・最初のオレンジの点でピンポン玉をとる
・水色の点で一度判断ミスが起こるので修正プログラムを入れ...
・水色とオレンジの点の数をカウントさせて行動させる
・緑の点でたまに誤認識することがたまにある
・ゴール側の四角でピンポン玉を離す
*プログラム [#o2155e95]
**定義付け [#hba138b1]
#define THRESHOLD 36 // しきい値
#define sp_H SetPower(OUT_AC,7); // スピード調整:早い
#define sp_L SetPower(OUT_AC,2); // スピード調整:遅い
#define go sp_H; OnFwd(OUT_AC); // 前進
#define turn_left1 sp_L; OnFwd(OUT_C); OnRev(OUT_A) // ...
#define turn_left0 sp_L; OnFwd(OUT_C); Off(OUT_A) // 右...
#define turn_right1 sp_L; OnFwd(OUT_A); OnRev(OUT_C); //...
#define turn_right0 sp_L; OnFwd(OUT_A); Off(OUT_C); // ...
#define STEP 1 // 行動を行う
#define nMAX 10 // 線上での行動が連続で10回行うとき指示...
#define CROSS_TIME 50 // 交差点で直進させる時間
#define cross_line sp_L; OnFwd(OUT_AC); Wait(CROSS_TIME)...
#define turn_time 60 // 旋回させる時間
#define the_time 16 // ボールを取る部分のモーターが動く...
**基本の動作のプログラム [#k5706497]
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); // 光センサーを使う...
int online=0; // 交差点または急カーブを判別
int next=0; // 交差点と急カーブの数をカウント
go; Wait(100); // 枠の中からライン上に移動
while(true) {
while (online < nMAX) { // ライン上での行動が10回同じ...
if (SENSOR_2 < THRESHOLD - 6) {
turn_left1; // もしセンサーがしきい値より6未満の明...
online++; // 判別開始
} else if (SENSOR_2 < THRESHOLD - 1) {
turn_left0; //もしセンサーがしきい値より1未満の明...
online=0; // 判別し直し
} else if (SENSOR_2 < THRESHOLD + 2) {
go; //もしセンサーがしきい値より2大きい明るさまで...
online=0; // 判別し直し
} else if (SENSOR_2 < THRESHOLD + 5) {
turn_right0; //もしセンサーがしきい値より5大きい明...
online=0; //判別し直し
} else if (SENSOR_2 < THRESHOLD +100) {
turn_right1; // もしセンサーがしきい値より100大...
online=0; // 判別し直し
}
Wait(STEP); // 行動を一回行う
}
**交差点または直角カーブでのプログラム [#wf4a21df]
***最初のカーブ(曲がり切れないため) [#ce306594]
if (next < 1 ) { // 最初のカーブの内側で曲が...
PlaySound(SOUND_UP); // 音を...
Wait(5); turn_left1;
Wait(50;
next++; // 次の動作に移行させる
online=0; // 判別し直し
}
***最初の交差点でのプログラム [#h4e6e2e3]
else if (next == 1 ) {
turn_right1; // 旋回して方向...
Wait(turn_time);
OnFwd(OUT_B);Wait(the_time); O...
cross_line; // 交差点を通過さ...
online=0;
next++; //次の動作に移行
}
***二個目の交差点でのプログラム [#e5094a6b]
else if (next == 2 ){ // 二個...
turn_right1; // 旋回で方向転換
Wait(55);
OnFwd(OUT_AC); Wait(10); // ...
online=0; // 判別し直し
next++; // 次の動作に移行
}
***直角カーブでのプログラム [#paf27051]
else if (next == 3 ) {
PlaySound(SOUND_DOWN); // 音に...
Wait(5); turn_left1;
Wait(50);
next++; // 次の動作に移行
online=0; // 判別し直し
}
***三個目の交差点でのプログラム [#k49287bf]
else if(next == 4 )
turn_right1; // 方向転換
Wait(turn_time - 15); // 直進...
cross_line; // 交差点を直進
online=0; // 判別し直し
next++; // 次の行動に移行
}
***シュートのプログラム [#b0e8f2c0]
else if(next == 5 ) {
PlaySound(SOUND_UP); // 音で...
OnRev(OUT_B); Wait(the_time); ...
OnFwd(OUT_AC); Wait(90); Off(O...
}
}
}
*反省 [#kadee4dc]
・仲間と違う機構でプログラムをしてしまいなかなか完成しな...
・ピンポン玉をキャッチする部分を付けてからプログラムを打...
・プログラムではカウント式にしたので直角カーブと交差点の...
・最後まで誤作動をなくすことはできなかった
以上の点を次回の課題では改善したいと思う..
ページ名: