2013a/Member/donky/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013a/Member]]
#contents
*課題について [#ne4d392e]
-ライントレースを行いつつ、空き缶を運搬する。コースは下図...
#ref(2013a/Member/donky/Mission1/IMG_0217.JPG,10%,コース図)
*ロボット本体紹介 [#rae32843]
**ロボットの特徴 [#e517eb0d]
-1巨大なアームと下あご
#ref(2013a/Member/donky/Mission1/IMG_0220.JPG,10%,ハサミ...
空き缶を保持したままライントレースするために巨大なアーム...
-2本体を安定させるための重り
#ref(2013a/Member/donky/Mission1/IMG_0219.JPG,10%,ロボッ...
ロボット本体後部に取り付けている緑の部品は、巨大なアーム...
*コース攻略法 [#aae72a31]
**1 垂直カーブ部分 [#w09cd101]
右折のプログラムを二種類に分けることで素早く稼動できる。
**2 交差点部分 [#y1705265]
交差点判別のプログラムの他に、急左折のあとに前進のプログ...
**3 急カーブ部分 [#h37cc678]
急カーブではロボットが脱線することが多かったのでタイマー...
**4 空き缶運搬 [#oed0b9c1]
タイマーでアームに取り付けたモーターを稼働させ、空き缶の...
*プログラムの紹介 [#s7cb083f]
#define THRESHOLD 42
#define HIPOWER 9 // 直線用の強めのパワー
#define LOWPOWER 1 // カーブ、旋回用の弱めのパワー
#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; Off(OUT_A); OnFwd(OUT_C)...
#define turn_right1 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define turn_left2 set_power_L; OnRev(OUT_A); OnFwd(OUT_...
#define turn_right2 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define STEP 1 // 1回の判断で動作させる時間
#define nMAX 7 // 通常のカーブとして許容できる繰り返しの...
#define short_break Off(OUT_AC); Wait(100); // 小休止
#define CROSS_TIME 20 // 交差点通過にかかる時間
#define cross_line go_forward;Wait(CROSS_TIME);short_bre...
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); // 「2」に光センサ...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1000) { // 10秒間通常のライン...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_right2;
} else
if (SENSOR_2 < THRESHOLD-1) { // 光センサーの値が4...
turn_right1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_left1;
} else { // その他の時は左に旋回
turn_left2;
}
Wait(STEP);
}
int nOnline=0; // 続けて黒になった回数を数える
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1600) { // 16秒間交差点のプ...
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-3)) { //...
turn_right2;
nOnline++; // カウンタを増やす
} else {
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-1)) { ...
turn_right1;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
go_forward;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
turn_left1;
} else if ((nOnline < nMAX)&&(SENSOR_2 >= THRESHOL...
turn_left2;
}
nOnline=0; // カウンタをリセット
} if(nOnline >= nMAX) { // 黒がnMAX回繰り返された...
short_break; // 小休憩
turn_left2; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
nOnline=0; // カウンタをリセット
}
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
OnFwd(OUT_AC);Wait(50);Off(OUT_AC); // 0.5秒間前進(...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 3500) { // 35秒間交差点のプロ...
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-3)) { 黒...
turn_left2;
nOnline++; // カウンタを増やす
} else {
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-1)) { ...
turn_left1;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
go_forward;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
turn_right1;
} else if ((nOnline < nMAX)&&(SENSOR_2 >= THRESHOL...
turn_right2;
}
nOnline=0; // カウンタをリセット
} if(nOnline >= nMAX) { // 黒がnMAX回繰り返された...
short_break; // 小休憩
turn_right2; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
nOnline=0; // カウンタをリセット
}
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
OnFwd (OUT_AC);Wait (50); // 0.5秒間前進(次の右沿い...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1800) { // 18秒間交差点のプロ...
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-3)) { //...
turn_right2;
nOnline++; // カウンタをリセット
} else {
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-1)) { ...
turn_right1;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
go_forward;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
turn_left1;
} else if ((nOnline < nMAX)&&(SENSOR_2 >= THRESHOL...
turn_left2;
}
nOnline=0;
} if(nOnline >= nMAX) { // 黒がnMAX回繰り返された...
short_break; // 小休憩
turn_left2; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
nOnline=0; // カウンタをリセット
}
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1600) { // 16秒間通常のライント...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_right2; // 光センサーの値が41未満の時、右にカ...
turn_right1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_left1;
} else { その他の時は左に旋回
turn_left2;
}
Wait(STEP);
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
OnFwd(OUT_A); OnRev(OUT_C);OnRev(OUT_B);Wait(50);Off(...
ClearTimer(0); // カウンタをリセット
while (FastTimer(0) <= 500) { // 5秒間通常のライントレ...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_left2;
} else
if (SENSOR_2 < THRESHOLD-1) { // 光センサーの値が4...
turn_left1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_right1;
} else { // その他の時は右に旋回
turn_right2;
}
Wait(STEP);
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnFwd(OUT_B);Wait(100);Off(OUT_B); // 1秒間上あごを...
OnRev(OUT_AC);Wait(100);Off(OUT_AC); // 1秒間後進
OnRev(OUT_A); OnFwd(OUT_C);Wait(80);Off(OUT_AC); // ...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 2000) { // 20秒間通常のライント...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_right2;
} else
if (SENSOR_2 < THRESHOLD-1) { // 光センサーの値が4...
turn_right1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_left1;
} else { // その他の時は左に旋回
turn_left2;
}
Wait(STEP);
}
}
*まとめ [#zc91b1c6]
**課題について [#j4705986]
結果として課題攻略には失敗してしまいました。(練習時には成...
***原因の考察 [#b4eaf86a]
-タイマーの多用
タイマーを多用しすぎたために時間が少しずれると関連して他...
-アームの固定力
アームの固定力が少し弱かった。もっとコンパクトな設計を心...
**感想 [#u1a1faf0]
いろいろと失敗してしまったので悔しいです。しかし改善点や...
終了行:
[[2013a/Member]]
#contents
*課題について [#ne4d392e]
-ライントレースを行いつつ、空き缶を運搬する。コースは下図...
#ref(2013a/Member/donky/Mission1/IMG_0217.JPG,10%,コース図)
*ロボット本体紹介 [#rae32843]
**ロボットの特徴 [#e517eb0d]
-1巨大なアームと下あご
#ref(2013a/Member/donky/Mission1/IMG_0220.JPG,10%,ハサミ...
空き缶を保持したままライントレースするために巨大なアーム...
-2本体を安定させるための重り
#ref(2013a/Member/donky/Mission1/IMG_0219.JPG,10%,ロボッ...
ロボット本体後部に取り付けている緑の部品は、巨大なアーム...
*コース攻略法 [#aae72a31]
**1 垂直カーブ部分 [#w09cd101]
右折のプログラムを二種類に分けることで素早く稼動できる。
**2 交差点部分 [#y1705265]
交差点判別のプログラムの他に、急左折のあとに前進のプログ...
**3 急カーブ部分 [#h37cc678]
急カーブではロボットが脱線することが多かったのでタイマー...
**4 空き缶運搬 [#oed0b9c1]
タイマーでアームに取り付けたモーターを稼働させ、空き缶の...
*プログラムの紹介 [#s7cb083f]
#define THRESHOLD 42
#define HIPOWER 9 // 直線用の強めのパワー
#define LOWPOWER 1 // カーブ、旋回用の弱めのパワー
#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; Off(OUT_A); OnFwd(OUT_C)...
#define turn_right1 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define turn_left2 set_power_L; OnRev(OUT_A); OnFwd(OUT_...
#define turn_right2 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define STEP 1 // 1回の判断で動作させる時間
#define nMAX 7 // 通常のカーブとして許容できる繰り返しの...
#define short_break Off(OUT_AC); Wait(100); // 小休止
#define CROSS_TIME 20 // 交差点通過にかかる時間
#define cross_line go_forward;Wait(CROSS_TIME);short_bre...
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); // 「2」に光センサ...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1000) { // 10秒間通常のライン...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_right2;
} else
if (SENSOR_2 < THRESHOLD-1) { // 光センサーの値が4...
turn_right1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_left1;
} else { // その他の時は左に旋回
turn_left2;
}
Wait(STEP);
}
int nOnline=0; // 続けて黒になった回数を数える
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1600) { // 16秒間交差点のプ...
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-3)) { //...
turn_right2;
nOnline++; // カウンタを増やす
} else {
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-1)) { ...
turn_right1;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
go_forward;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
turn_left1;
} else if ((nOnline < nMAX)&&(SENSOR_2 >= THRESHOL...
turn_left2;
}
nOnline=0; // カウンタをリセット
} if(nOnline >= nMAX) { // 黒がnMAX回繰り返された...
short_break; // 小休憩
turn_left2; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
nOnline=0; // カウンタをリセット
}
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
OnFwd(OUT_AC);Wait(50);Off(OUT_AC); // 0.5秒間前進(...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 3500) { // 35秒間交差点のプロ...
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-3)) { 黒...
turn_left2;
nOnline++; // カウンタを増やす
} else {
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-1)) { ...
turn_left1;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
go_forward;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
turn_right1;
} else if ((nOnline < nMAX)&&(SENSOR_2 >= THRESHOL...
turn_right2;
}
nOnline=0; // カウンタをリセット
} if(nOnline >= nMAX) { // 黒がnMAX回繰り返された...
short_break; // 小休憩
turn_right2; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
nOnline=0; // カウンタをリセット
}
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
OnFwd (OUT_AC);Wait (50); // 0.5秒間前進(次の右沿い...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1800) { // 18秒間交差点のプロ...
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-3)) { //...
turn_right2;
nOnline++; // カウンタをリセット
} else {
if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD-1)) { ...
turn_right1;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
go_forward;
} else if ((nOnline < nMAX)&&(SENSOR_2 < THRESHOLD...
turn_left1;
} else if ((nOnline < nMAX)&&(SENSOR_2 >= THRESHOL...
turn_left2;
}
nOnline=0;
} if(nOnline >= nMAX) { // 黒がnMAX回繰り返された...
short_break; // 小休憩
turn_left2; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
nOnline=0; // カウンタをリセット
}
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnRev(OUT_B);Wait(120);Off(OUT_B); // 上あごを動かし...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 1600) { // 16秒間通常のライント...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_right2; // 光センサーの値が41未満の時、右にカ...
turn_right1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_left1;
} else { その他の時は左に旋回
turn_left2;
}
Wait(STEP);
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
OnFwd(OUT_A); OnRev(OUT_C);OnRev(OUT_B);Wait(50);Off(...
ClearTimer(0); // カウンタをリセット
while (FastTimer(0) <= 500) { // 5秒間通常のライントレ...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_left2;
} else
if (SENSOR_2 < THRESHOLD-1) { // 光センサーの値が4...
turn_left1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_right1;
} else { // その他の時は右に旋回
turn_right2;
}
Wait(STEP);
}
PlaySound(SOUND_UP); // ピロピロ〜と高い音を鳴らす
Off(OUT_AC); // タイヤを止める
OnFwd(OUT_B);Wait(100);Off(OUT_B); // 1秒間上あごを...
OnRev(OUT_AC);Wait(100);Off(OUT_AC); // 1秒間後進
OnRev(OUT_A); OnFwd(OUT_C);Wait(80);Off(OUT_AC); // ...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 2000) { // 20秒間通常のライント...
if (SENSOR_2 < THRESHOLD-3) { // 光センサーの値が39...
turn_right2;
} else
if (SENSOR_2 < THRESHOLD-1) { // 光センサーの値が4...
turn_right1;
} else if (SENSOR_2 < THRESHOLD+2) { // 光センサー...
go_forward;
} else if (SENSOR_2 < THRESHOLD+10) { // 光センサ...
turn_left1;
} else { // その他の時は左に旋回
turn_left2;
}
Wait(STEP);
}
}
*まとめ [#zc91b1c6]
**課題について [#j4705986]
結果として課題攻略には失敗してしまいました。(練習時には成...
***原因の考察 [#b4eaf86a]
-タイマーの多用
タイマーを多用しすぎたために時間が少しずれると関連して他...
-アームの固定力
アームの固定力が少し弱かった。もっとコンパクトな設計を心...
**感想 [#u1a1faf0]
いろいろと失敗してしまったので悔しいです。しかし改善点や...
ページ名: