2013a/Member/R207/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013a/Member]]
*ロボットの紹介 [#g458c89d]
小回りが利くように、ロボットの組み方を工夫した。具体的には、
+タイヤを動かすモーター2つを、地面に対して横ではなく縦に並べた。
+重心の調整をして、後輪を使わずに直立する形状にした。
+光センサー、超音波センサーはスペースをとるため、タイヤを動かすモーターの凹部にはまり込むように配置した。
*コース攻略法 [#y268f67a]
交差点を渡るという動作に重点をおいて攻略した。
*プログラム紹介 [#n456f60f]
#define BLACK1 35
#define BLACK2 40
#define WHITE1 50
#define WHITE2 60
#define SPEED1 75
#define SPEED2 25
#define SPEED3 20
#define go_forward OnFwd(OUT_BC,SPEED1); //直進
#define turn_left0 OnFwd(OUT_C,SPEED2); Float(OUT_B); //左折
#define turn_left1 OnFwd(OUT_C,SPEED2); OnRev(OUT_B,SPEED3); //左旋回(B:右モータ)
#define turn_right0 Float(OUT_C); OnFwd(OUT_B,SPEED2); //右折
#define turn_right1 OnRev(OUT_C,SPEED2);OnFwd(OUT_B,SPEED2); //右旋回(C:左モータ)
#define STEP 1
#define nMAX 180 //調整箇所
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 160 //交差点通過時間(調整箇所)
#define cross_line OnFwd(OUT_BC,SPEED1); Wait(CROSS_TIME);short_break; //交差点通過
task main()
{
SetSensorLight(S3);
int nOnline=0; //続けて黒になった回数
while (true) {
while (nOnline < nMAX) {
if (SENSOR_3 < BLACK1) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < BLACK2) {
turn_right0;
} else if (SENSOR_3 < WHITE1) {
go_forward;
} else if (SENSOR_3 < WHITE2) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1; Wait(nMAX*STEP);
cross_line;
nOnline=0;
}
}
*まとめ [#pc3a5b57]
当日は体調不良のため、参加出来なかった。時間が足りず缶をつかむプログラムを組み込むことが出来なかった。
終了行:
[[2013a/Member]]
*ロボットの紹介 [#g458c89d]
小回りが利くように、ロボットの組み方を工夫した。具体的には、
+タイヤを動かすモーター2つを、地面に対して横ではなく縦に並べた。
+重心の調整をして、後輪を使わずに直立する形状にした。
+光センサー、超音波センサーはスペースをとるため、タイヤを動かすモーターの凹部にはまり込むように配置した。
*コース攻略法 [#y268f67a]
交差点を渡るという動作に重点をおいて攻略した。
*プログラム紹介 [#n456f60f]
#define BLACK1 35
#define BLACK2 40
#define WHITE1 50
#define WHITE2 60
#define SPEED1 75
#define SPEED2 25
#define SPEED3 20
#define go_forward OnFwd(OUT_BC,SPEED1); //直進
#define turn_left0 OnFwd(OUT_C,SPEED2); Float(OUT_B); //左折
#define turn_left1 OnFwd(OUT_C,SPEED2); OnRev(OUT_B,SPEED3); //左旋回(B:右モータ)
#define turn_right0 Float(OUT_C); OnFwd(OUT_B,SPEED2); //右折
#define turn_right1 OnRev(OUT_C,SPEED2);OnFwd(OUT_B,SPEED2); //右旋回(C:左モータ)
#define STEP 1
#define nMAX 180 //調整箇所
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 160 //交差点通過時間(調整箇所)
#define cross_line OnFwd(OUT_BC,SPEED1); Wait(CROSS_TIME);short_break; //交差点通過
task main()
{
SetSensorLight(S3);
int nOnline=0; //続けて黒になった回数
while (true) {
while (nOnline < nMAX) {
if (SENSOR_3 < BLACK1) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < BLACK2) {
turn_right0;
} else if (SENSOR_3 < WHITE1) {
go_forward;
} else if (SENSOR_3 < WHITE2) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1; Wait(nMAX*STEP);
cross_line;
nOnline=0;
}
}
*まとめ [#pc3a5b57]
当日は体調不良のため、参加出来なかった。時間が足りず缶をつかむプログラムを組み込むことが出来なかった。
ページ名: