2016b/Member/GORI/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016b/Member]]
*目次 [#vf4810fd]
#contents
*課題 [#i7d8c7e2]
球技ロボット
**コース [#p23abc87]
#ref(2016b/Member/GORI/Mission3/2016b-mission3.png,100,全...
**ルール [#g864a6ed]
・ピッチャーロボットとバッターロボットが所定の位置まで移...
・ピッチャーロボットはA地点をスタートしM地点まで移動する~
・バッターロボットはC地点をスタートしB地点まで移動する~
・スタート時はそれぞれA地点B地点の枠内に収まること(高さ...
・M地点、B地点では接地している部分が枠内に入っていること~
・ピッチャーロボットはスタート時にピンポン球を5個まで保持...
・ピッチャーロボットが投げたピンポン球をバッターロボット...
・移動の途中で目標に接触してはならない~
*ロボット本体の説明 [#n200cb36]
自分はバッターを担当していたので、ピッチャーは簡単に説明...
**ピッチャー [#a8e16546]
ピッチャーロボットは、前についている二つのタイヤを回転さ...
出す仕組みです。~
また、RIS本体の下にピンポン球を収納する空間をつくって、最...
さらに、タイヤにゴムをつけているのは、ロボットが移動中に...
また、移動方法は回転センサーと光センサーの二つを使うこと...
#ref(2016b/Member/GORI/Mission3/securedownload10.jpg,50,...
**バッター [#f7ed59d1]
バッターロボットのコンセプトは、実際のバッターと同様に、...
そのため、ボールの判断をするために、ボールを打つところの...
つけて、その光センサーがボールを感知すれば、ロボットがバ...
つくりました。
#ref(2016b/Member/GORI/Mission3/securedownload2.jpg,50,全...
また、ロボットがバットを振る仕組みは、上の写真のように、...
同時に、180度ずつ外にいくように回って、バットを振るという...
左右についていることと、二つのバットがそれぞれ、180度ずつ...
力がすごく高くなりました。
#ref(2016b/Member/GORI/Mission3/securedownload3.jpg,50,全...
また、ロボットの移動方法は、ロボットの後ろにつけた光セン...
のタイヤにつけた回転センサーによる移動です。~
また、左右につけた二つのタイヤと、ロボットの中心部にある...
#ref(2016b/Member/GORI/Mission3/securedownload5.jpg,50,全...
*ライントレースの仕組み [#b1e75285]
光センサーで線上にいるかどうかを判別して、線上にいるなら...
線上にいないなら、右に動かして、境界線上をじぐざくしなが...
また、交差点は何秒間まがっているかで、交差点かどうかを判...
*プログラミング説明 [#f568aefe]
自分は、バッターを担当していたのでピッチャーは簡単に説明...
**ピッチャー [#la78b6a5]
ピッチャーロボットは、まずAP間の黒い線まで進み、次にSP間...
#define READY 150
sub stop_line()
{
until(SENSOR_2<48){
OnFwd(OUT_AC);
}
PlaySound(SOUND_UP);
} //黒い線まで進み、光センサーが線を...
task main()
{
SetSensor(SENSOR_1,SENSOR_ROTATION);
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearSensor(SENSOR_1);
until(SENSOR_1>4){
OnFwd(OUT_C);
OnRev(OUT_A);}
Off(OUT_AC); //機体を右に傾ける
stop_line(); //Aのボックスの黒い線まで進む ...
ClearSensor(SENSOR_1);
until(SENSOR_1<-5){
OnFwd(OUT_AC);} //黒い線を超える
stop_line(); //AP間の黒い線まで進む
Off(OUT_AC);
Wait(50);
ClearSensor(SENSOR_1);
until(SENSOR_1<-4){
OnFwd(OUT_AC);}
Off(OUT_AC);
Wait(10); //黒い線を超える
stop_line(); //SP間の黒い線まで進む
Off(OUT_AC);
Wait(40);
ClearSensor(SENSOR_1);
until(SENSOR_1>2){
OnFwd(OUT_C);
OnRev(OUT_A);} //機体を少し右に傾ける
ClearSensor(SENSOR_1);
until(SENSOR_1<-7){
OnFwd(OUT_AC);}
Off(OUT_AC); //黒い線を超える
stop_line();
Off(OUT_AC);
Wait(60); //Mの円状の黒い線まで進む
ClearSensor(SENSOR_1);
until(SENSOR_1<-6){
OnFwd(OUT_AC);}
ClearSensor(SENSOR_1);
until(SENSOR_1<-20){
OnFwd(OUT_A);
OnRev(OUT_C);}
Off(OUT_AC); //ピッチャーボックスに入るために、...
ClearMessage();
until(Message()==READY);
PlaySound(SOUND_CLICK);
while(true){
Wait(500);
OnRev(OUT_B);
Wait(35);
Off(OUT_B);
} //バッターからの通信を受け次第、一...
}
**バッター [#ya58684b]
バッターロボットは、最初にQR間の黒い線に向かって、回転セ...
ライントレースを始めて、バッターボックスであるBに向かう。~
また、左右につけているモーターが少し違うため、回転センサ...
#define go_forward OnFwd(OUT_AC);//前に進む
#define turn_left1 Off(OUT_C);OnFwd(OUT_A);//小さく左に...
#define turn_left2 OnRev(OUT_C);OnFwd(OUT_A);//大きく左...
#define turn_right1 Off(OUT_A);OnFwd(OUT_C);//小さく右に...
#define turn_right2 OnRev(OUT_A);OnFwd(OUT_C);//大きく右...
#define MAX_TIME 20
sub crossing_stop() //交差点に入って止まる
{
ClearTimer(0);
while(FastTimer(0)<MAX_TIME){//タイマーが基準値以下のと...
if(SENSOR_2<39){
turn_left2;//しきい値が39以下のところで大きく左に曲がる
}else if(SENSOR_2<41){
turn_left1;ClearTimer(0);//しきい値が41以下のところで小...
}else if(SENSOR_2<43){
go_forward;ClearTimer(0);//しきい値が43以下のところで直...
}else if(SENSOR_2<50){
turn_right1;ClearTimer(0);//しきい値が50以下のところで小...
}else{
turn_right2;ClearTimer(0);//しきい値が51以上のところで大...
}
}
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(20);//タイマーが基準値を上回ったとき...
}
sub crossing_left()//T字路で止まってから、左に曲がる
{
turn_left1;
Wait(80);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//バッティングするとき...
SetSensor(SENSOR_2,SENSOR_LIGHT);//ライントレースをする...
SetSensor(SENSOR_3,SENSOR_ROTATION);//回転センサー
ClearSensor(SENSOR_3);
until (SENSOR_3<-18){
OnFwd(OUT_AC);
} //6点のゴールの直前まで進む
ClearSensor(SENSOR_3);
until(SENSOR_3<-7){
OnFwd(OUT_A);OnRev(OUT_C);
} //90度左へ回転する
until(SENSOR_2<40){
OnFwd(OUT_AC);
}Off(OUT_AC); //ロボットから見て、1回目のQR間...
ClearSensor(SENSOR_3);
until (SENSOR_3>1){
OnRev(OUT_A);Off(OUT_C);
} //ロボットから見て、少し左側に機体...
ClearSensor(SENSOR_3);
until (SENSOR_3<-4){
OnFwd(OUT_AC);
} //黒い線を超えるために、少し直進する
until(SENSOR_2<40){
OnFwd(OUT_AC);
} //ロボットから見て、2回目のQR間の黒...
ClearSensor(SENSOR_3);
until (SENSOR_3<-4){
OnFwd(OUT_AC);
} //黒い線を超えるために、少し直進する
crossing_stop(); //RのT字路までライントレースをして、...
crossing_left(); // T字路を左へ曲がる
crossing_stop(); //BのT字路までライントレースをして、...
ClearSensor(SENSOR_3);
until (SENSOR_3>6){
OnRev(OUT_A);Off(OUT_C);
}
ClearSensor(SENSOR_3);
until (SENSOR_3<-24){
OnFwd(OUT_AC);
}
ClearSensor(SENSOR_3);
until (SENSOR_3>9){
OnRev(OUT_A);Off(OUT_C);
} //Bのボックスに入り、かつ球を打てる...
Off(OUT_AC);Wait(30);
ClearSensor(SENSOR_3);
until (SENSOR_3>16){
OnRev(OUT_AC);
} //ピッチャーロボットと通信できる範囲...
Off(OUT_AC);
SendMessage(150); //通信する
Wait(100);
ClearSensor(SENSOR_3);
until (SENSOR_3<-16){
OnFwd(OUT_AC);
} //元のバッターボックスに戻る
Off(OUT_AC);
while(true){
if(SENSOR_1>61){
OnRev(OUT_B);
Wait(10);
Off(OUT_B);Wait(50);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
}
} //SENSOR1の光センサーの値が、62以上にな...
Off(OUT_ABC);
}
*まとめ [#w947b3c3]
今回のロボコンは、テスト期間と被ったということもあって、...
でも、ロボコンで自分たちで作ったロボットが動いてる姿を見...
終了行:
[[2016b/Member]]
*目次 [#vf4810fd]
#contents
*課題 [#i7d8c7e2]
球技ロボット
**コース [#p23abc87]
#ref(2016b/Member/GORI/Mission3/2016b-mission3.png,100,全...
**ルール [#g864a6ed]
・ピッチャーロボットとバッターロボットが所定の位置まで移...
・ピッチャーロボットはA地点をスタートしM地点まで移動する~
・バッターロボットはC地点をスタートしB地点まで移動する~
・スタート時はそれぞれA地点B地点の枠内に収まること(高さ...
・M地点、B地点では接地している部分が枠内に入っていること~
・ピッチャーロボットはスタート時にピンポン球を5個まで保持...
・ピッチャーロボットが投げたピンポン球をバッターロボット...
・移動の途中で目標に接触してはならない~
*ロボット本体の説明 [#n200cb36]
自分はバッターを担当していたので、ピッチャーは簡単に説明...
**ピッチャー [#a8e16546]
ピッチャーロボットは、前についている二つのタイヤを回転さ...
出す仕組みです。~
また、RIS本体の下にピンポン球を収納する空間をつくって、最...
さらに、タイヤにゴムをつけているのは、ロボットが移動中に...
また、移動方法は回転センサーと光センサーの二つを使うこと...
#ref(2016b/Member/GORI/Mission3/securedownload10.jpg,50,...
**バッター [#f7ed59d1]
バッターロボットのコンセプトは、実際のバッターと同様に、...
そのため、ボールの判断をするために、ボールを打つところの...
つけて、その光センサーがボールを感知すれば、ロボットがバ...
つくりました。
#ref(2016b/Member/GORI/Mission3/securedownload2.jpg,50,全...
また、ロボットがバットを振る仕組みは、上の写真のように、...
同時に、180度ずつ外にいくように回って、バットを振るという...
左右についていることと、二つのバットがそれぞれ、180度ずつ...
力がすごく高くなりました。
#ref(2016b/Member/GORI/Mission3/securedownload3.jpg,50,全...
また、ロボットの移動方法は、ロボットの後ろにつけた光セン...
のタイヤにつけた回転センサーによる移動です。~
また、左右につけた二つのタイヤと、ロボットの中心部にある...
#ref(2016b/Member/GORI/Mission3/securedownload5.jpg,50,全...
*ライントレースの仕組み [#b1e75285]
光センサーで線上にいるかどうかを判別して、線上にいるなら...
線上にいないなら、右に動かして、境界線上をじぐざくしなが...
また、交差点は何秒間まがっているかで、交差点かどうかを判...
*プログラミング説明 [#f568aefe]
自分は、バッターを担当していたのでピッチャーは簡単に説明...
**ピッチャー [#la78b6a5]
ピッチャーロボットは、まずAP間の黒い線まで進み、次にSP間...
#define READY 150
sub stop_line()
{
until(SENSOR_2<48){
OnFwd(OUT_AC);
}
PlaySound(SOUND_UP);
} //黒い線まで進み、光センサーが線を...
task main()
{
SetSensor(SENSOR_1,SENSOR_ROTATION);
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearSensor(SENSOR_1);
until(SENSOR_1>4){
OnFwd(OUT_C);
OnRev(OUT_A);}
Off(OUT_AC); //機体を右に傾ける
stop_line(); //Aのボックスの黒い線まで進む ...
ClearSensor(SENSOR_1);
until(SENSOR_1<-5){
OnFwd(OUT_AC);} //黒い線を超える
stop_line(); //AP間の黒い線まで進む
Off(OUT_AC);
Wait(50);
ClearSensor(SENSOR_1);
until(SENSOR_1<-4){
OnFwd(OUT_AC);}
Off(OUT_AC);
Wait(10); //黒い線を超える
stop_line(); //SP間の黒い線まで進む
Off(OUT_AC);
Wait(40);
ClearSensor(SENSOR_1);
until(SENSOR_1>2){
OnFwd(OUT_C);
OnRev(OUT_A);} //機体を少し右に傾ける
ClearSensor(SENSOR_1);
until(SENSOR_1<-7){
OnFwd(OUT_AC);}
Off(OUT_AC); //黒い線を超える
stop_line();
Off(OUT_AC);
Wait(60); //Mの円状の黒い線まで進む
ClearSensor(SENSOR_1);
until(SENSOR_1<-6){
OnFwd(OUT_AC);}
ClearSensor(SENSOR_1);
until(SENSOR_1<-20){
OnFwd(OUT_A);
OnRev(OUT_C);}
Off(OUT_AC); //ピッチャーボックスに入るために、...
ClearMessage();
until(Message()==READY);
PlaySound(SOUND_CLICK);
while(true){
Wait(500);
OnRev(OUT_B);
Wait(35);
Off(OUT_B);
} //バッターからの通信を受け次第、一...
}
**バッター [#ya58684b]
バッターロボットは、最初にQR間の黒い線に向かって、回転セ...
ライントレースを始めて、バッターボックスであるBに向かう。~
また、左右につけているモーターが少し違うため、回転センサ...
#define go_forward OnFwd(OUT_AC);//前に進む
#define turn_left1 Off(OUT_C);OnFwd(OUT_A);//小さく左に...
#define turn_left2 OnRev(OUT_C);OnFwd(OUT_A);//大きく左...
#define turn_right1 Off(OUT_A);OnFwd(OUT_C);//小さく右に...
#define turn_right2 OnRev(OUT_A);OnFwd(OUT_C);//大きく右...
#define MAX_TIME 20
sub crossing_stop() //交差点に入って止まる
{
ClearTimer(0);
while(FastTimer(0)<MAX_TIME){//タイマーが基準値以下のと...
if(SENSOR_2<39){
turn_left2;//しきい値が39以下のところで大きく左に曲がる
}else if(SENSOR_2<41){
turn_left1;ClearTimer(0);//しきい値が41以下のところで小...
}else if(SENSOR_2<43){
go_forward;ClearTimer(0);//しきい値が43以下のところで直...
}else if(SENSOR_2<50){
turn_right1;ClearTimer(0);//しきい値が50以下のところで小...
}else{
turn_right2;ClearTimer(0);//しきい値が51以上のところで大...
}
}
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(20);//タイマーが基準値を上回ったとき...
}
sub crossing_left()//T字路で止まってから、左に曲がる
{
turn_left1;
Wait(80);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//バッティングするとき...
SetSensor(SENSOR_2,SENSOR_LIGHT);//ライントレースをする...
SetSensor(SENSOR_3,SENSOR_ROTATION);//回転センサー
ClearSensor(SENSOR_3);
until (SENSOR_3<-18){
OnFwd(OUT_AC);
} //6点のゴールの直前まで進む
ClearSensor(SENSOR_3);
until(SENSOR_3<-7){
OnFwd(OUT_A);OnRev(OUT_C);
} //90度左へ回転する
until(SENSOR_2<40){
OnFwd(OUT_AC);
}Off(OUT_AC); //ロボットから見て、1回目のQR間...
ClearSensor(SENSOR_3);
until (SENSOR_3>1){
OnRev(OUT_A);Off(OUT_C);
} //ロボットから見て、少し左側に機体...
ClearSensor(SENSOR_3);
until (SENSOR_3<-4){
OnFwd(OUT_AC);
} //黒い線を超えるために、少し直進する
until(SENSOR_2<40){
OnFwd(OUT_AC);
} //ロボットから見て、2回目のQR間の黒...
ClearSensor(SENSOR_3);
until (SENSOR_3<-4){
OnFwd(OUT_AC);
} //黒い線を超えるために、少し直進する
crossing_stop(); //RのT字路までライントレースをして、...
crossing_left(); // T字路を左へ曲がる
crossing_stop(); //BのT字路までライントレースをして、...
ClearSensor(SENSOR_3);
until (SENSOR_3>6){
OnRev(OUT_A);Off(OUT_C);
}
ClearSensor(SENSOR_3);
until (SENSOR_3<-24){
OnFwd(OUT_AC);
}
ClearSensor(SENSOR_3);
until (SENSOR_3>9){
OnRev(OUT_A);Off(OUT_C);
} //Bのボックスに入り、かつ球を打てる...
Off(OUT_AC);Wait(30);
ClearSensor(SENSOR_3);
until (SENSOR_3>16){
OnRev(OUT_AC);
} //ピッチャーロボットと通信できる範囲...
Off(OUT_AC);
SendMessage(150); //通信する
Wait(100);
ClearSensor(SENSOR_3);
until (SENSOR_3<-16){
OnFwd(OUT_AC);
} //元のバッターボックスに戻る
Off(OUT_AC);
while(true){
if(SENSOR_1>61){
OnRev(OUT_B);
Wait(10);
Off(OUT_B);Wait(50);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
}
} //SENSOR1の光センサーの値が、62以上にな...
Off(OUT_ABC);
}
*まとめ [#w947b3c3]
今回のロボコンは、テスト期間と被ったということもあって、...
でも、ロボコンで自分たちで作ったロボットが動いてる姿を見...
ページ名: