2012b/Member/j-abc/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012b/Member]]
#contents
*メンバー [#j4b177c9]
-j-abc&br;
-vocalist
*課題1の説明 [#c33ef1d9]
+ スタート地点から出発し、スタート地点外のすぐ近くに置か...
+ ピンポン玉をつかんだら速やかにスタート地点の境界の黒線...
+ ゴール地点に到達したら、ゴールエリア外からピンポン玉を...
CENTER:&ref(2012b/Member/j-abc/Mission1/kadai1_course.png...
*ロボットの説明 [#c67ef93e]
CENTER:&ref(2012b/Member/j-abc/Mission1/robot.jpg,70%,ど...
**全体について [#i19e9438]
&ref(2012b/Member/j-abc/Mission1/robot_wide.jpg,50%,ギリ...
&ref(2012b/Member/j-abc/Mission1/robot_balance.jpg,50%,ず...
+ロボット本体はmindstormsに付属されていた説明書の初期状態...
ポールにギリギリではあるが接触しない程度の小型化を行った。
+本体をロボットの中心に置きそこの横にアームを取り付けると...
**ライトセンサについて [#t9a8d198]
&ref(2012b/Member/j-abc/Mission1/robot_sensor.jpg,50%,ロ...
-ライトセンサを車軸に近づけることで、より正確にロボットが...
**アーム(シュート機構)について [#d90a30b8]
***ボールのロック [#e770f713]
&ref(2012b/Member/j-abc/Mission1/robot_lock1.jpg,50%,矢印...
&ref(2012b/Member/j-abc/Mission1/robot_lock2.jpg,50%,ボー...
-青の矢印の方向に回ることで、バーが赤の矢印の方向に動きボ...
***ボールのシュート [#ed3a66c8]
&ref(2012b/Member/j-abc/Mission1/robot_shoot1.jpg,50%,矢...
&ref(2012b/Member/j-abc/Mission1/robot_shoot2.jpg,50%,こ...
&ref(2012b/Member/j-abc/Mission1/robot_shoot3.jpg,50%,こ...
&ref(2012b/Member/j-abc/Mission1/robot_shoot4.jpg,50%,シ...
-青の矢印の方向に回ることで、バーが赤の矢印の方向に動きボ...
*プログラムの説明 [#ecbd6e15]
**プログラム [#x95fe75b]
#define THRESHOLD 47 // 閾値
#define SPEED_H 50 // 通常時の速度
#define SPEED_L 30 // 旋回時の速度
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H, SPEED_H); // 前進する
#define turn_left1 OnRL(SPEED_L, -SPEED_L); // 左旋回...
#define turn_left0 OnRL(SPEED_L, 0); // 左折する
#define turn_right0 OnRL(0, SPEED_L); // 右折する
#define turn_right1 OnRL(-SPEED_L, SPEED_L); // 右旋回...
#define STEP 1 // 1回の判断で動作させる時間
#define nMAX 250 //通常のカーブとして認識できる回数のの...
#define short_break Off(OUT_BC); Wait(100); // 少し止まる
#define CROSS_TIME 600 // 交差点を渡る時間
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
#define shoot_back OnRL(-SPEED_L,-SPEED_L);Wait(CROSS_TI...
#define ball_lock OnFwd(OUT_A,-40);Wait(500) //ボール...
#define shoot_ball OnFwd(OUT_A,70);Wait(1); //ボール...
task main()
{
SetSensorLight(S3);
int black_count=0; // 続けて黒になった回数 (カウンタ)
int cross_count=0; // T字路を認識した回数
long startTime; // 競技が始まった時間
long cross1Time; // 1回目のT字路を認識し渡り終わった...
startTime = CurrentTick(); //競技が始まった時間を記...
go_forward //ボールの位置まで前進する
Wait(500);
Off(OUT_BC);
ball_lock; //ボールをロックする
Off(OUT_A);
turn_right0;Wait(1500); //ラインに戻るように右折...
Off(OUT_BC);
while (cross_count < 2) {
while(CurrentTick() - startTime < 12000){ //...
if (SENSOR_3 < THRESHOLD-12) { ...
turn_left1;
} else {
if (SENSOR_3 < THRESHOLD-7) { ...
turn_left1; ...
}
else if (SENSOR_3 < THRESHOLD+7) { ...
go_forward;
}
else if (SENSOR_3 < THRESHOLD+15) { ...
turn_right1;
} else { ...
turn_right1;
}
Wait(STEP);
}
while ((black_count < nMAX)&&(cross_count < 1)){ // ...
if (SENSOR_3 < THRESHOLD-12) {
turn_left1;
black_count++; // カウンタを増やす
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right1;
} else {
turn_right1;
}
black_count=0; // カウンタをリセット
}
Wait(STEP);
}
short_break; // 小休憩
turn_right1; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
cross_count++; // T字路を認識したカウン...
black_count=0; // カウンタをリセット
cross1Time = CurrentTick(); // 1回目のT字路を渡り終...
while (CurrentTick() - cross1Time < 16000){ // ...
if(SENSOR_3 < THRESHOLD-12) {
turn_left1;
black_count++; // カウンタを増やす
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right1;
} else {
turn_right1;
}
black_count=0; // カウンタをリセット
}
Wait(STEP);
}
while (black_count < nMAX){ ...
if (SENSOR_3 < THRESHOLD-12) {
turn_left1;
black_count++; // カウンタを増やす
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right1;
} else {
turn_right1;
}
black_count=0; // カウンタをリセット
}
Wait(STEP);
}
short_break; // 小休憩
turn_right1; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
cross_count++;
black_count=0; //カウンタをリセット
if(cross_count == 2){short_break; ...
shoot_back;
shoot_ball;
Off(OUT_BC);
}
}
}
**プログラムの説明 [#z7109826]
&ref(2012b/Member/j-abc/Mission1/kadai1_course2.png,70%,...
&ref(2012b/Member/j-abc/Mission1/kadai1_course3.png,70%,...
このプログラムは左図の赤い矢印のようにラインの左側をトレ...
&br;
+ボールをとりに行く&br;
+橙1の区間では青1のT字路を渡らないように、青1を通過するま...
+黄1区間では緑1のT字路を渡るように、T字路を認識させるプロ...
+橙2の区間では青2の直角をT字路と誤認識しないように、青2を...
+黄2区間では緑2のT字路を認識させるように、T字路を認識させ...
+T字路を認識したカウンターが2になったところで、ボールを...
*感想 [#wf94abbb]
初めは簡単に課題をクリアできると思っていたけれど、実際に...
上手くいかないところもあったが、自分が思っていた通りにロ...
次の課題も上手くいくように頑張ろうと思う。
終了行:
[[2012b/Member]]
#contents
*メンバー [#j4b177c9]
-j-abc&br;
-vocalist
*課題1の説明 [#c33ef1d9]
+ スタート地点から出発し、スタート地点外のすぐ近くに置か...
+ ピンポン玉をつかんだら速やかにスタート地点の境界の黒線...
+ ゴール地点に到達したら、ゴールエリア外からピンポン玉を...
CENTER:&ref(2012b/Member/j-abc/Mission1/kadai1_course.png...
*ロボットの説明 [#c67ef93e]
CENTER:&ref(2012b/Member/j-abc/Mission1/robot.jpg,70%,ど...
**全体について [#i19e9438]
&ref(2012b/Member/j-abc/Mission1/robot_wide.jpg,50%,ギリ...
&ref(2012b/Member/j-abc/Mission1/robot_balance.jpg,50%,ず...
+ロボット本体はmindstormsに付属されていた説明書の初期状態...
ポールにギリギリではあるが接触しない程度の小型化を行った。
+本体をロボットの中心に置きそこの横にアームを取り付けると...
**ライトセンサについて [#t9a8d198]
&ref(2012b/Member/j-abc/Mission1/robot_sensor.jpg,50%,ロ...
-ライトセンサを車軸に近づけることで、より正確にロボットが...
**アーム(シュート機構)について [#d90a30b8]
***ボールのロック [#e770f713]
&ref(2012b/Member/j-abc/Mission1/robot_lock1.jpg,50%,矢印...
&ref(2012b/Member/j-abc/Mission1/robot_lock2.jpg,50%,ボー...
-青の矢印の方向に回ることで、バーが赤の矢印の方向に動きボ...
***ボールのシュート [#ed3a66c8]
&ref(2012b/Member/j-abc/Mission1/robot_shoot1.jpg,50%,矢...
&ref(2012b/Member/j-abc/Mission1/robot_shoot2.jpg,50%,こ...
&ref(2012b/Member/j-abc/Mission1/robot_shoot3.jpg,50%,こ...
&ref(2012b/Member/j-abc/Mission1/robot_shoot4.jpg,50%,シ...
-青の矢印の方向に回ることで、バーが赤の矢印の方向に動きボ...
*プログラムの説明 [#ecbd6e15]
**プログラム [#x95fe75b]
#define THRESHOLD 47 // 閾値
#define SPEED_H 50 // 通常時の速度
#define SPEED_L 30 // 旋回時の速度
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H, SPEED_H); // 前進する
#define turn_left1 OnRL(SPEED_L, -SPEED_L); // 左旋回...
#define turn_left0 OnRL(SPEED_L, 0); // 左折する
#define turn_right0 OnRL(0, SPEED_L); // 右折する
#define turn_right1 OnRL(-SPEED_L, SPEED_L); // 右旋回...
#define STEP 1 // 1回の判断で動作させる時間
#define nMAX 250 //通常のカーブとして認識できる回数のの...
#define short_break Off(OUT_BC); Wait(100); // 少し止まる
#define CROSS_TIME 600 // 交差点を渡る時間
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
#define shoot_back OnRL(-SPEED_L,-SPEED_L);Wait(CROSS_TI...
#define ball_lock OnFwd(OUT_A,-40);Wait(500) //ボール...
#define shoot_ball OnFwd(OUT_A,70);Wait(1); //ボール...
task main()
{
SetSensorLight(S3);
int black_count=0; // 続けて黒になった回数 (カウンタ)
int cross_count=0; // T字路を認識した回数
long startTime; // 競技が始まった時間
long cross1Time; // 1回目のT字路を認識し渡り終わった...
startTime = CurrentTick(); //競技が始まった時間を記...
go_forward //ボールの位置まで前進する
Wait(500);
Off(OUT_BC);
ball_lock; //ボールをロックする
Off(OUT_A);
turn_right0;Wait(1500); //ラインに戻るように右折...
Off(OUT_BC);
while (cross_count < 2) {
while(CurrentTick() - startTime < 12000){ //...
if (SENSOR_3 < THRESHOLD-12) { ...
turn_left1;
} else {
if (SENSOR_3 < THRESHOLD-7) { ...
turn_left1; ...
}
else if (SENSOR_3 < THRESHOLD+7) { ...
go_forward;
}
else if (SENSOR_3 < THRESHOLD+15) { ...
turn_right1;
} else { ...
turn_right1;
}
Wait(STEP);
}
while ((black_count < nMAX)&&(cross_count < 1)){ // ...
if (SENSOR_3 < THRESHOLD-12) {
turn_left1;
black_count++; // カウンタを増やす
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right1;
} else {
turn_right1;
}
black_count=0; // カウンタをリセット
}
Wait(STEP);
}
short_break; // 小休憩
turn_right1; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
cross_count++; // T字路を認識したカウン...
black_count=0; // カウンタをリセット
cross1Time = CurrentTick(); // 1回目のT字路を渡り終...
while (CurrentTick() - cross1Time < 16000){ // ...
if(SENSOR_3 < THRESHOLD-12) {
turn_left1;
black_count++; // カウンタを増やす
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right1;
} else {
turn_right1;
}
black_count=0; // カウンタをリセット
}
Wait(STEP);
}
while (black_count < nMAX){ ...
if (SENSOR_3 < THRESHOLD-12) {
turn_left1;
black_count++; // カウンタを増やす
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right1;
} else {
turn_right1;
}
black_count=0; // カウンタをリセット
}
Wait(STEP);
}
short_break; // 小休憩
turn_right1; Wait(nMAX*STEP); // 進行方向修正
cross_line; // 交差点を渡る
cross_count++;
black_count=0; //カウンタをリセット
if(cross_count == 2){short_break; ...
shoot_back;
shoot_ball;
Off(OUT_BC);
}
}
}
**プログラムの説明 [#z7109826]
&ref(2012b/Member/j-abc/Mission1/kadai1_course2.png,70%,...
&ref(2012b/Member/j-abc/Mission1/kadai1_course3.png,70%,...
このプログラムは左図の赤い矢印のようにラインの左側をトレ...
&br;
+ボールをとりに行く&br;
+橙1の区間では青1のT字路を渡らないように、青1を通過するま...
+黄1区間では緑1のT字路を渡るように、T字路を認識させるプロ...
+橙2の区間では青2の直角をT字路と誤認識しないように、青2を...
+黄2区間では緑2のT字路を認識させるように、T字路を認識させ...
+T字路を認識したカウンターが2になったところで、ボールを...
*感想 [#wf94abbb]
初めは簡単に課題をクリアできると思っていたけれど、実際に...
上手くいかないところもあったが、自分が思っていた通りにロ...
次の課題も上手くいくように頑張ろうと思う。
ページ名: