2012b/Member/mokomiti/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012b/Member]]
*目次 [#o153d90a]
#contents
*課題 [#p09665e7]
-一人目
スタート地点から出発し、スタート地点外のすぐ近くに置かれ...
ピンポン玉をつかんだら速やかにスタート地点の境界の黒線に...
ゴール地点に到達したら、ゴールエリア外からピンポン玉をゴ...
-二人目
一人目とは逆方向からスタート。コースが微妙に違う。
コース
#ref(./RIMG0093.JPG)
*メンバー紹介 [#s002d2a8]
-chef 繊維学部機械・ロボット学系 相方。パソコンが好きら...
-mokomiti 工学部機械システム工学科 このページの作者。最...
*ロボット紹介 [#rbaf49b0]
名前「SPTadao」
名前の由来はバイクのマフラー「SP忠男」からとったもの。...
全体図
#ref(./RIMG0087.JPG)
前輪及びピンポン玉をつかむ機構
#ref(./RIMG0090.JPG)
キャスターを装備し小回りがきくように改良。光センサをタイ...
#ref(./RIMG0089.JPG)
*プログラム [#d2ee73aa]
プログラム名「ただお」
一応走ることができたがまだ完全ではないので、ひらがなで表...
#ref(./TADAO.jpg)
図のように走るプログラムを作った。最初は、左側をトレース...
まず定義
#define THRESHOLD 48
#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; OnFwd(OUT_AC); /*強い力...
#define turn_left1 set_power_L; OnFwd(OUT_C); OnRev(OUT_...
#define turn_left0 set_power_L; OnFwd(OUT_C); Off(OUT_A)...
#define turn_right0 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define turn_right1 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define STEP 1 /*0.01秒ごとに判定*/
int n=0; /*黒の連続回数を数えるカウンタ*/
最初の左側をトレースするプログラム
task main()
{
go_forward;
Wait(80);
Off(OUT_AC);
OnFwd(OUT_B);
Wait(100);
Off(OUT_B);
n==0; /*ボールを回収する動作*/
SetSensor(SENSOR_2,SENSOR_LIGHT); /*光センサを...
ClearTimer(0); /*時間をリセット*/
while(FastTimer(0)<700){ /*最初の交差点を渡るまで...
if(SENSOR_2<THRESHOLD-6) {
turn_left1; /*真っ黒な時*/
} else if (SENSOR_2<THRESHOLD-2) {
turn_left0; /*黒いとき*/
} else if (SENSOR_2<THRESHOLD+2) {
go_forward; /*中間色の時*/
} else if (SENSOR_2<THRESHOLD+7) {
turn_right0; /*少し白いとき*/
} else {
turn_right1; /*それ以外、つまり...
}
}
次の右側をトレースするプログラム。7秒以上経つと右側にトレ...
while(700<=FastTimer(0)&&FastTimer(0)<=2000){ /*緩...
if(SENSOR_2<THRESHOLD-6) {
turn_right1;
} else if (SENSOR_2<THRESHOLD-2) {
turn_right0;
} else if (SENSOR_2<THRESHOLD+2) {
go_forward;
} else if (SENSOR_2<THRESHOLD+7) {
turn_left0;
} else {
turn_left1; /*左側トレースの...
} Wait(STEP);
}
カーブを曲がってから最初の交差点をカウンタを使って交差点...
while(FastTimer(0)>2000){ /*ここから次の交差点を無...
if(SENSOR_2<THRESHOLD-9) {
turn_right1;
n++; /*黒くなったのでカウント*/
} else if (n>=3) { /*交差点(右に曲がる命令が...
PlaySound(SOUND_UP); /*いつ反応したかわかりやす...
go_forward;
Wait(150);
Off(OUT_AC); /*交差点を越える動作*/
ClearTimer(1); /*二つ目のタイマーをリセッ...
while(700>FastTimer(1)){ /*ゴールの手前まで走る*/
if(SENSOR_2<THRESHOLD-9) {
turn_right1;
} else if (SENSOR_2<THRESHOLD-5) {
turn_right0;
} else if (SENSOR_2<THRESHOLD+2) {
go_forward;
} else if (SENSOR_2<THRESHOLD+7) {
turn_left0;
} else {
turn_left1;
} Wait(STEP);
} while(700<FastTimer(1)){ /*シュートする*/
go_forward;
Wait(100);
Off(OUT_AC);
OnRev(OUT_B);
Wait(100);
Off(OUT_B);
OnFwd(OUT_AC);
Wait(50);
OnRev(OUT_AC);
Wait(50);
Off(OUT_AC);
Wait(1000); /*ゴールに押し込む動作*/
}
} else if (SENSOR_2<THRESHOLD-5) {
turn_right0;
n++; /*黒かったのでカウント*/
} else if (SENSOR_2<THRESHOLD+2) {
go_forward;
n==0; /*連続じゃなかったのでカ...
} else if (SENSOR_2<THRESHOLD+7) {
turn_left0;
n==0; /*連続じゃなかったので...
} else {
turn_left1;
n==0; /*連続じゃなかったので...
} Wait(STEP);
}
} /*task mainのかっこ*/
左折や直進するとカウンタをリセットする。これで連続で右の...
*考察 [#ab2fdbdc]
**良かった点 [#o392796f]
+ライントレースは安定して進むことができた
+障害物には接触しなかった
**悪かった点 [#gf6e6881]
+ゴールの判定が安定してできなかった
+途中からタイヤが空回りしていて動きが悪くなった
+ゴールに押し込む精度が悪かった
+本体の構造で脆い部分があった
+交差点で反応しない時が多々あった
+ピンポン玉がたまにつかめないときがあった
**改善点 [#d17f446b]
+ホイールとゴムの間が滑ってまともに前進しないので滑らない...
+カウンタの増加するときや連続の数を変更することで最初より...
+開始地点を固定してピンポン玉をつかむまでのずれを少なくし...
+動きが早すぎてコケるので、ギアの比を小さくして遅く走るよ...
終了行:
[[2012b/Member]]
*目次 [#o153d90a]
#contents
*課題 [#p09665e7]
-一人目
スタート地点から出発し、スタート地点外のすぐ近くに置かれ...
ピンポン玉をつかんだら速やかにスタート地点の境界の黒線に...
ゴール地点に到達したら、ゴールエリア外からピンポン玉をゴ...
-二人目
一人目とは逆方向からスタート。コースが微妙に違う。
コース
#ref(./RIMG0093.JPG)
*メンバー紹介 [#s002d2a8]
-chef 繊維学部機械・ロボット学系 相方。パソコンが好きら...
-mokomiti 工学部機械システム工学科 このページの作者。最...
*ロボット紹介 [#rbaf49b0]
名前「SPTadao」
名前の由来はバイクのマフラー「SP忠男」からとったもの。...
全体図
#ref(./RIMG0087.JPG)
前輪及びピンポン玉をつかむ機構
#ref(./RIMG0090.JPG)
キャスターを装備し小回りがきくように改良。光センサをタイ...
#ref(./RIMG0089.JPG)
*プログラム [#d2ee73aa]
プログラム名「ただお」
一応走ることができたがまだ完全ではないので、ひらがなで表...
#ref(./TADAO.jpg)
図のように走るプログラムを作った。最初は、左側をトレース...
まず定義
#define THRESHOLD 48
#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; OnFwd(OUT_AC); /*強い力...
#define turn_left1 set_power_L; OnFwd(OUT_C); OnRev(OUT_...
#define turn_left0 set_power_L; OnFwd(OUT_C); Off(OUT_A)...
#define turn_right0 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define turn_right1 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define STEP 1 /*0.01秒ごとに判定*/
int n=0; /*黒の連続回数を数えるカウンタ*/
最初の左側をトレースするプログラム
task main()
{
go_forward;
Wait(80);
Off(OUT_AC);
OnFwd(OUT_B);
Wait(100);
Off(OUT_B);
n==0; /*ボールを回収する動作*/
SetSensor(SENSOR_2,SENSOR_LIGHT); /*光センサを...
ClearTimer(0); /*時間をリセット*/
while(FastTimer(0)<700){ /*最初の交差点を渡るまで...
if(SENSOR_2<THRESHOLD-6) {
turn_left1; /*真っ黒な時*/
} else if (SENSOR_2<THRESHOLD-2) {
turn_left0; /*黒いとき*/
} else if (SENSOR_2<THRESHOLD+2) {
go_forward; /*中間色の時*/
} else if (SENSOR_2<THRESHOLD+7) {
turn_right0; /*少し白いとき*/
} else {
turn_right1; /*それ以外、つまり...
}
}
次の右側をトレースするプログラム。7秒以上経つと右側にトレ...
while(700<=FastTimer(0)&&FastTimer(0)<=2000){ /*緩...
if(SENSOR_2<THRESHOLD-6) {
turn_right1;
} else if (SENSOR_2<THRESHOLD-2) {
turn_right0;
} else if (SENSOR_2<THRESHOLD+2) {
go_forward;
} else if (SENSOR_2<THRESHOLD+7) {
turn_left0;
} else {
turn_left1; /*左側トレースの...
} Wait(STEP);
}
カーブを曲がってから最初の交差点をカウンタを使って交差点...
while(FastTimer(0)>2000){ /*ここから次の交差点を無...
if(SENSOR_2<THRESHOLD-9) {
turn_right1;
n++; /*黒くなったのでカウント*/
} else if (n>=3) { /*交差点(右に曲がる命令が...
PlaySound(SOUND_UP); /*いつ反応したかわかりやす...
go_forward;
Wait(150);
Off(OUT_AC); /*交差点を越える動作*/
ClearTimer(1); /*二つ目のタイマーをリセッ...
while(700>FastTimer(1)){ /*ゴールの手前まで走る*/
if(SENSOR_2<THRESHOLD-9) {
turn_right1;
} else if (SENSOR_2<THRESHOLD-5) {
turn_right0;
} else if (SENSOR_2<THRESHOLD+2) {
go_forward;
} else if (SENSOR_2<THRESHOLD+7) {
turn_left0;
} else {
turn_left1;
} Wait(STEP);
} while(700<FastTimer(1)){ /*シュートする*/
go_forward;
Wait(100);
Off(OUT_AC);
OnRev(OUT_B);
Wait(100);
Off(OUT_B);
OnFwd(OUT_AC);
Wait(50);
OnRev(OUT_AC);
Wait(50);
Off(OUT_AC);
Wait(1000); /*ゴールに押し込む動作*/
}
} else if (SENSOR_2<THRESHOLD-5) {
turn_right0;
n++; /*黒かったのでカウント*/
} else if (SENSOR_2<THRESHOLD+2) {
go_forward;
n==0; /*連続じゃなかったのでカ...
} else if (SENSOR_2<THRESHOLD+7) {
turn_left0;
n==0; /*連続じゃなかったので...
} else {
turn_left1;
n==0; /*連続じゃなかったので...
} Wait(STEP);
}
} /*task mainのかっこ*/
左折や直進するとカウンタをリセットする。これで連続で右の...
*考察 [#ab2fdbdc]
**良かった点 [#o392796f]
+ライントレースは安定して進むことができた
+障害物には接触しなかった
**悪かった点 [#gf6e6881]
+ゴールの判定が安定してできなかった
+途中からタイヤが空回りしていて動きが悪くなった
+ゴールに押し込む精度が悪かった
+本体の構造で脆い部分があった
+交差点で反応しない時が多々あった
+ピンポン玉がたまにつかめないときがあった
**改善点 [#d17f446b]
+ホイールとゴムの間が滑ってまともに前進しないので滑らない...
+カウンタの増加するときや連続の数を変更することで最初より...
+開始地点を固定してピンポン玉をつかむまでのずれを少なくし...
+動きが早すぎてコケるので、ギアの比を小さくして遅く走るよ...
ページ名: