2013a/Member/taishi/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013a/Member]]
*ロボットの紹介 [#fd1e0fdb]
私たちのグループは下のようなロボットでMission2のロボコン...
#ref(ロボ1.jpg)
まず、このロボットの一番の特徴といえば、なんといってもこ...
このアームでは方向転換をしないでパスを出したり、受けたり...
#ref(無題-A.jpg)
このアームは結構角度の微調整が可能なので、ボールをキャッ...
#ref(無題-B.jpg)
このロボットは往復でターンすると向きが変わってアームが外...
また、どうしてもパス交換の時に方向転換したくなかったので...
*コース攻略 [#h8b19d4f]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
このロボットはアームがコースの内側を向いている行きの時に...
ほかの部分はプログラムの作成と並行に説明します。
*プログラムの作成 [#le3d3b4c]
・定義づけ
#define THRESHOLD 40
#define HHIPOWER 7 // 直線とボールを打ち出すとき用の強め...
#define POWER 2 // カーブ、旋回用の弱めのパワー
#define LOWPOWER 0 // ボールをキャッチする用の弱いパワー
#define set_power_HH SetPower(OUT_AC,HHIPOWER);
#define set_power_M SetPower(OUT_AC,POWER);
#define set_power_L SetPower(OUT_B,LOWPOWER);
#define go_forward set_power_HH; OnFwd(OUT_AC); // 前に...
#define go_back set_power_HH; OnRev(OUT_AC); // 後ろに進...
#define turn_left1 set_power_M; Off(OUT_A); OnFwd(OUT_C)...
#define turn_right1 set_power_M; OnFwd(OUT_A); Off(OUT_C...
#define turn_left2 set_power_M; OnRev(OUT_A); OnFwd(OUT_...
#define turn_right2 set_power_M; OnFwd(OUT_A); OnRev(OUT...
#define catch_ball set_power_L; OnFwd(OUT_B); // ボール...
#define pass_ball set_power_HH; OnRev(OUT_B);Wait(150);O...
#define STEP 1 // 1回の判断で動作させる時間
・ここからがロボットを動かすための指令
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // 「1」のところに...
SetSensor(SENSOR_2,SENSOR_TOUCH); // 「2」のところに...
SetSensor(SENSOR_3,SENSOR_LIGHT); // 「3」のところに...
?最初にボールを取るところ~
ボールをキャッチするところでは、アームの長さを生かして下...
#ref(無題-C.jpg)
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 430) { // 4.3秒間、通常のライン...
if (SENSOR_3 < THRESHOLD-4) {
turn_left2;
} else
if (SENSOR_3 < THRESHOLD-3) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+5) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+10) {
turn_right1;
} else {
turn_right2;
}
Wait(STEP);
}
PlaySound(SOUND_UP); // 4.3秒間、通常のライントレース...
set_power_M; OnRev(OUT_A); OnFwd(OUT_C); Wait(580); // ...
while(SENSOR_2==0){ // タッチセンサーがオフの間、ボー...
catch_ball;
}
Off(OUT_B);
?ボールを取ってから進行方向にロボットを向けるまで~
ボールを取ってからも光センサーが黒に反応するまで左旋回さ...
Wait(200); // 2秒間、ボールをキャッチするときの左旋回...
Off(OUT_AC);
while (SENSOR_3 > THRESHOLD-5) { // 光センサーが黒い線...
turn_left2;
}
Off(OUT_AC);
?ボールを打ち出す~
ロボットを進行方向に向けたら、すぐにボールを打ち出す動作...
go_back;Wait(80);Off(OUT_AC);Wait(100); // 0.8秒間後ろ...
pass_ball; // ボールを打ち出す
?ボールを打ち出してから、ボールを受けるまで~
通常のライントレースをして、ボールを受ける位置までタイマ...
go_forward;Wait(80);Off(OUT_AC); // 0.8秒間前進して...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 170) { // 1.7秒間、通常のライン...
if (SENSOR_3 < THRESHOLD-4) {
turn_right2;
} else
if (SENSOR_3 < THRESHOLD-3) {
turn_right1;
} else if (SENSOR_3 < THRESHOLD+5) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+10) {
turn_left1;
} else {
turn_left2;
}
Wait(STEP);
}
Off(OUT_AC); // 1.7秒間、通常のライントレースを行ったら...
Wait(1000); // 相手からのパスがくるまでの10秒間停止して...
turn_left1;Wait(100); // 1秒間左にカーブして、ボールを...
while(SENSOR_2==0){ // タッチセンサーがオフの間、ボー...
catch_ball;
}
Off(OUT_B);
PlaySound(SOUND_UP); // ボールをキャッチしたら、ピロ...
}
ロボコンで発表したプログラムはここまでです。
☆缶に向かってシュート~
缶にシュートするときのプログラムも一応作ってあったので添...
最後にブールを受ける位置から、シュートするまでのプログラ...
ここで大事なのは、シュートする位置取りなので1秒前進、0.6...
task main()
{
OnFwd(OUT_AC);Wait(100); // 1秒前進
OnRev(OUT_A); OnFwd(OUT_C);Wait(60);Off(OUT_AC); // 0....
OnRev(OUT_B);Wait(100);Off(OUT_B); // ボールを打ち出す
}
*まとめ [#z7aea378]
今回も期限に間に合わずに残念な結果になってしまいました。...
終了行:
[[2013a/Member]]
*ロボットの紹介 [#fd1e0fdb]
私たちのグループは下のようなロボットでMission2のロボコン...
#ref(ロボ1.jpg)
まず、このロボットの一番の特徴といえば、なんといってもこ...
このアームでは方向転換をしないでパスを出したり、受けたり...
#ref(無題-A.jpg)
このアームは結構角度の微調整が可能なので、ボールをキャッ...
#ref(無題-B.jpg)
このロボットは往復でターンすると向きが変わってアームが外...
また、どうしてもパス交換の時に方向転換したくなかったので...
*コース攻略 [#h8b19d4f]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
このロボットはアームがコースの内側を向いている行きの時に...
ほかの部分はプログラムの作成と並行に説明します。
*プログラムの作成 [#le3d3b4c]
・定義づけ
#define THRESHOLD 40
#define HHIPOWER 7 // 直線とボールを打ち出すとき用の強め...
#define POWER 2 // カーブ、旋回用の弱めのパワー
#define LOWPOWER 0 // ボールをキャッチする用の弱いパワー
#define set_power_HH SetPower(OUT_AC,HHIPOWER);
#define set_power_M SetPower(OUT_AC,POWER);
#define set_power_L SetPower(OUT_B,LOWPOWER);
#define go_forward set_power_HH; OnFwd(OUT_AC); // 前に...
#define go_back set_power_HH; OnRev(OUT_AC); // 後ろに進...
#define turn_left1 set_power_M; Off(OUT_A); OnFwd(OUT_C)...
#define turn_right1 set_power_M; OnFwd(OUT_A); Off(OUT_C...
#define turn_left2 set_power_M; OnRev(OUT_A); OnFwd(OUT_...
#define turn_right2 set_power_M; OnFwd(OUT_A); OnRev(OUT...
#define catch_ball set_power_L; OnFwd(OUT_B); // ボール...
#define pass_ball set_power_HH; OnRev(OUT_B);Wait(150);O...
#define STEP 1 // 1回の判断で動作させる時間
・ここからがロボットを動かすための指令
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // 「1」のところに...
SetSensor(SENSOR_2,SENSOR_TOUCH); // 「2」のところに...
SetSensor(SENSOR_3,SENSOR_LIGHT); // 「3」のところに...
?最初にボールを取るところ~
ボールをキャッチするところでは、アームの長さを生かして下...
#ref(無題-C.jpg)
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 430) { // 4.3秒間、通常のライン...
if (SENSOR_3 < THRESHOLD-4) {
turn_left2;
} else
if (SENSOR_3 < THRESHOLD-3) {
turn_left1;
} else if (SENSOR_3 < THRESHOLD+5) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+10) {
turn_right1;
} else {
turn_right2;
}
Wait(STEP);
}
PlaySound(SOUND_UP); // 4.3秒間、通常のライントレース...
set_power_M; OnRev(OUT_A); OnFwd(OUT_C); Wait(580); // ...
while(SENSOR_2==0){ // タッチセンサーがオフの間、ボー...
catch_ball;
}
Off(OUT_B);
?ボールを取ってから進行方向にロボットを向けるまで~
ボールを取ってからも光センサーが黒に反応するまで左旋回さ...
Wait(200); // 2秒間、ボールをキャッチするときの左旋回...
Off(OUT_AC);
while (SENSOR_3 > THRESHOLD-5) { // 光センサーが黒い線...
turn_left2;
}
Off(OUT_AC);
?ボールを打ち出す~
ロボットを進行方向に向けたら、すぐにボールを打ち出す動作...
go_back;Wait(80);Off(OUT_AC);Wait(100); // 0.8秒間後ろ...
pass_ball; // ボールを打ち出す
?ボールを打ち出してから、ボールを受けるまで~
通常のライントレースをして、ボールを受ける位置までタイマ...
go_forward;Wait(80);Off(OUT_AC); // 0.8秒間前進して...
ClearTimer(0); // タイマーをリセット
while (FastTimer(0) <= 170) { // 1.7秒間、通常のライン...
if (SENSOR_3 < THRESHOLD-4) {
turn_right2;
} else
if (SENSOR_3 < THRESHOLD-3) {
turn_right1;
} else if (SENSOR_3 < THRESHOLD+5) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+10) {
turn_left1;
} else {
turn_left2;
}
Wait(STEP);
}
Off(OUT_AC); // 1.7秒間、通常のライントレースを行ったら...
Wait(1000); // 相手からのパスがくるまでの10秒間停止して...
turn_left1;Wait(100); // 1秒間左にカーブして、ボールを...
while(SENSOR_2==0){ // タッチセンサーがオフの間、ボー...
catch_ball;
}
Off(OUT_B);
PlaySound(SOUND_UP); // ボールをキャッチしたら、ピロ...
}
ロボコンで発表したプログラムはここまでです。
☆缶に向かってシュート~
缶にシュートするときのプログラムも一応作ってあったので添...
最後にブールを受ける位置から、シュートするまでのプログラ...
ここで大事なのは、シュートする位置取りなので1秒前進、0.6...
task main()
{
OnFwd(OUT_AC);Wait(100); // 1秒前進
OnRev(OUT_A); OnFwd(OUT_C);Wait(60);Off(OUT_AC); // 0....
OnRev(OUT_B);Wait(100);Off(OUT_B); // ボールを打ち出す
}
*まとめ [#z7aea378]
今回も期限に間に合わずに残念な結果になってしまいました。...
ページ名: