2016b/Member/gazet/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016b/Member]]
*目次 [#i0f43a2c]
#contents
*課題 [#z6f9fb32]
ロボットで野球を行う。ピッチャーロボットが投げたピンポン...
**基本ルール [#cd4c0022]
#ref(2016b/Member/gazet/Mission3/2016b-mission3.png,10kb,)
◦ピッチャーロボットとバッターロボットが所定の位置ま...
◦ピッチャーロボットはA地点をスタートしM地点まで移動...
◦バッターロボットはC地点をスタートしB地点まで移動す...
◦スタート時はそれぞれA地点B地点の枠内に収まること(...
◦M地点、B地点では接地している部分が枠内に入っている...
◦ピッチャーロボットはスタート時にピンポン球を5個ま...
◦ピッチャーロボットが投げたピンポン球をバッターロボ...
◦移動の途中で目標に接触してはならない
*機体の説明 [#u1741e3d]
**ピッチャー [#e7d60796]
今回担当したのはピッチャーロボットだ。RISの下の部分に空間...
#ref(2016b/Member/gazet/Mission3/zentai_1.jpg,kb,)
光センサーと回転センサーを使った。移動する時は光センサー...
#ref(2016b/Member/gazet/Mission3/sensor.jpg,kb,)
2つのタイヤの間にピンポン玉を挟み、タイヤを回してボール...
#ref(2016b/Member/gazet/Mission3/nagerutoko.jpg,kb,)
**バッター [#p1b8f4fd]
同じチームの相方コンビが作ったバッターロボット。
#ref(2016b/Member/gazet/Mission3/zentai_B.jpg,11.9kb,)
光センサーを使ってピンポン玉を感知するとアームが動く。よ...
#ref(2016b/Member/gazet/Mission3/ututoko.jpg,11.9kb,)
*ピッチャーのプログラム [#xf77ea5d]
**サブルーチンについて [#y36c353a]
光センサーが黒線を感知するまで前に進むサブルーチン。わか...
sub stop_line()
{
until(SENSOR_2<48){
OnFwd(OUT_AC);
}
PlaySound(SOUND_UP);
}
**メインのプログラムについて [#z369f73b]
移動はAからMまでほぼ直進するルートを通るが最後にBを向き...
task main()
#define READY 150 //通信で使う値
{
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(); //1本目の線(Aの枠)まで前進
ClearSensor(SENSOR_1);
until(SENSOR_1<-5){
OnFwd(OUT_AC);} //1本目の線を完全に通過
stop_line(); //2本目の線まで前進
Off(OUT_AC);
Wait(50);
ClearSensor(SENSOR_1);
until(SENSOR_1<-4){
OnFwd(OUT_AC);} //2本目の線を完全に通過
Off(OUT_AC);
Wait(10);
stop_line(); //3本目の線まで前進
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);} //3本目の線を完全に通過
Off(OUT_AC);
stop_line(); //4本目の線(Mの枠)まで前進
Off(OUT_AC);
Wait(60);
ClearSensor(SENSOR_1);
until(SENSOR_1<-6){
OnFwd(OUT_AC);}
ClearSensor(SENSOR_1);
until(SENSOR_1<-20){
OnFwd(OUT_A);
OnRev(OUT_C);} //機体の向き調整 Bを向く Mの枠...
Off(OUT_AC);
ClearMessage();
until(Message()==READY); //メッセ...
PlaySound(SOUND_CLICK); //確認のた...
while(true){
Wait(500);//
OnRev(OUT_B);
Wait(35);
Off(OUT_B); //一定間隔ごとに...
}
}
*バッターのプログラム [#l6b40441]
**定義とサブルーチン [#j2dbc794]
#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; //真黒なところで大きく左に...
}else if(SENSOR_2<41){
turn_left1;ClearTimer(0); //ほとんど黒いところで...
}else if(SENSOR_2<43){
go_forward;ClearTimer(0); //白と黒の間で直進する
}else if(SENSOR_2<50){
turn_right1;ClearTimer(0); //ほとんど白いところ小さ...
}else{
turn_right2;ClearTimer(0); //真っ白なところで大きく...
}
}
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(20);//タイマーが基準値を上回ったとき...
}
sub crossing_left()//T字路で止まってから、左に曲がる
{
turn_left1;
Wait(80);
}
**メインのプログラム [#o06db1ba]
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//バッティングするとき...
SetSensor(SENSOR_2,SENSOR_LIGHT);//ライントレースをする...
SetSensor(SENSOR_3,SENSOR_ROTATION);//回転センサー
まず、回転センサーを使いながらRの少し前まで進む。
ClearSensor(SENSOR_3);
until (SENSOR_3<-18){
OnFwd(OUT_AC);
}
ClearSensor(SENSOR_3);
until(SENSOR_3<-7){
OnFwd(OUT_A);OnRev(OUT_C);
}
until(SENSOR_2<40){
OnFwd(OUT_AC);
}Off(OUT_AC);
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);
}
ClearSensor(SENSOR_3);
until (SENSOR_3<-4){
OnFwd(OUT_AC);
}
R前の直線からライントレースを始める
crossing_stop();
crossing_left();
crossing_stop();
Bに入り、向きを調節する。
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);
}
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);
}
}
Off(OUT_ABC);
}
*感想 [#h262256b]
投げる部分があまり良くなかったと思う。手でタイヤを回した...
終了行:
[[2016b/Member]]
*目次 [#i0f43a2c]
#contents
*課題 [#z6f9fb32]
ロボットで野球を行う。ピッチャーロボットが投げたピンポン...
**基本ルール [#cd4c0022]
#ref(2016b/Member/gazet/Mission3/2016b-mission3.png,10kb,)
◦ピッチャーロボットとバッターロボットが所定の位置ま...
◦ピッチャーロボットはA地点をスタートしM地点まで移動...
◦バッターロボットはC地点をスタートしB地点まで移動す...
◦スタート時はそれぞれA地点B地点の枠内に収まること(...
◦M地点、B地点では接地している部分が枠内に入っている...
◦ピッチャーロボットはスタート時にピンポン球を5個ま...
◦ピッチャーロボットが投げたピンポン球をバッターロボ...
◦移動の途中で目標に接触してはならない
*機体の説明 [#u1741e3d]
**ピッチャー [#e7d60796]
今回担当したのはピッチャーロボットだ。RISの下の部分に空間...
#ref(2016b/Member/gazet/Mission3/zentai_1.jpg,kb,)
光センサーと回転センサーを使った。移動する時は光センサー...
#ref(2016b/Member/gazet/Mission3/sensor.jpg,kb,)
2つのタイヤの間にピンポン玉を挟み、タイヤを回してボール...
#ref(2016b/Member/gazet/Mission3/nagerutoko.jpg,kb,)
**バッター [#p1b8f4fd]
同じチームの相方コンビが作ったバッターロボット。
#ref(2016b/Member/gazet/Mission3/zentai_B.jpg,11.9kb,)
光センサーを使ってピンポン玉を感知するとアームが動く。よ...
#ref(2016b/Member/gazet/Mission3/ututoko.jpg,11.9kb,)
*ピッチャーのプログラム [#xf77ea5d]
**サブルーチンについて [#y36c353a]
光センサーが黒線を感知するまで前に進むサブルーチン。わか...
sub stop_line()
{
until(SENSOR_2<48){
OnFwd(OUT_AC);
}
PlaySound(SOUND_UP);
}
**メインのプログラムについて [#z369f73b]
移動はAからMまでほぼ直進するルートを通るが最後にBを向き...
task main()
#define READY 150 //通信で使う値
{
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(); //1本目の線(Aの枠)まで前進
ClearSensor(SENSOR_1);
until(SENSOR_1<-5){
OnFwd(OUT_AC);} //1本目の線を完全に通過
stop_line(); //2本目の線まで前進
Off(OUT_AC);
Wait(50);
ClearSensor(SENSOR_1);
until(SENSOR_1<-4){
OnFwd(OUT_AC);} //2本目の線を完全に通過
Off(OUT_AC);
Wait(10);
stop_line(); //3本目の線まで前進
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);} //3本目の線を完全に通過
Off(OUT_AC);
stop_line(); //4本目の線(Mの枠)まで前進
Off(OUT_AC);
Wait(60);
ClearSensor(SENSOR_1);
until(SENSOR_1<-6){
OnFwd(OUT_AC);}
ClearSensor(SENSOR_1);
until(SENSOR_1<-20){
OnFwd(OUT_A);
OnRev(OUT_C);} //機体の向き調整 Bを向く Mの枠...
Off(OUT_AC);
ClearMessage();
until(Message()==READY); //メッセ...
PlaySound(SOUND_CLICK); //確認のた...
while(true){
Wait(500);//
OnRev(OUT_B);
Wait(35);
Off(OUT_B); //一定間隔ごとに...
}
}
*バッターのプログラム [#l6b40441]
**定義とサブルーチン [#j2dbc794]
#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; //真黒なところで大きく左に...
}else if(SENSOR_2<41){
turn_left1;ClearTimer(0); //ほとんど黒いところで...
}else if(SENSOR_2<43){
go_forward;ClearTimer(0); //白と黒の間で直進する
}else if(SENSOR_2<50){
turn_right1;ClearTimer(0); //ほとんど白いところ小さ...
}else{
turn_right2;ClearTimer(0); //真っ白なところで大きく...
}
}
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(20);//タイマーが基準値を上回ったとき...
}
sub crossing_left()//T字路で止まってから、左に曲がる
{
turn_left1;
Wait(80);
}
**メインのプログラム [#o06db1ba]
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//バッティングするとき...
SetSensor(SENSOR_2,SENSOR_LIGHT);//ライントレースをする...
SetSensor(SENSOR_3,SENSOR_ROTATION);//回転センサー
まず、回転センサーを使いながらRの少し前まで進む。
ClearSensor(SENSOR_3);
until (SENSOR_3<-18){
OnFwd(OUT_AC);
}
ClearSensor(SENSOR_3);
until(SENSOR_3<-7){
OnFwd(OUT_A);OnRev(OUT_C);
}
until(SENSOR_2<40){
OnFwd(OUT_AC);
}Off(OUT_AC);
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);
}
ClearSensor(SENSOR_3);
until (SENSOR_3<-4){
OnFwd(OUT_AC);
}
R前の直線からライントレースを始める
crossing_stop();
crossing_left();
crossing_stop();
Bに入り、向きを調節する。
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);
}
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);
}
}
Off(OUT_ABC);
}
*感想 [#h262256b]
投げる部分があまり良くなかったと思う。手でタイヤを回した...
ページ名: