2014a/Member/tacchan/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/Member]]
*取り組んだ課題の説明 [#s4124420]
今回取り組んだ課題の詳細については&ref(http://yakushi.s...
*メンバー [#l2d34f74]
・tacchan
・yukiyamaneko
・monodoll
・nari
*戦略 [#g8622225]
&ref(2014a/Member/tacchan/Mission2/2014a-mission2.png,70%);
・この課題を以下の手順で攻略するつもりであった。
?コップAを取りに移動しコップの識別をする。(コップには黒...
?Aがあった地点を基準点とし識別されたコップを入れる場所ま...
?A地点まで戻り次のコップを取りにいき再びA地点まで戻り?を...
??の繰り返し。
大会当日ではコップAを取り識別し対応するコップにかぶせ再び...
*ロボット [#ld469458]
&ref(2014a/Member/tacchan/Mission2/front.jpg);
・車軸のそばにライントレース用のライトセンサーをつけそれ...
・アームはコップを掴んだあと、さらに力が加わるとそれをコ...
&ref(2014a/Member/tacchan/Mission2/left.jpg);
・MainとSlaveを車体に垂直に固定し車体の重心が後ろに行き...
&ref(2014a/Member/tacchan/Mission2/under.jpg);
* [#s055c902]
---Main:本体制御
#define bri 55
#define s1 50 //高速
#define s2 30 //低速
#define OnRL(x,y) OnFwd(OUT_A,x); OnFwd(OUT_C,y);
#define go OnFwdSync(OUT_AC,s2,0); //直進
#define left1 OnRL(-s2,s2); //左旋回
#define left0 OnRL(0,s2); //左折
#define right0 OnRL(s2,0); //右折
#define right1 OnRL(s2,-s2); //右旋回
#define step 1
#define nMAX 300 //nMAXを超えた時交差点と判断する
#define short_break Off(OUT_AC); Wait(500); //小休憩
#define cross_line go;Wait(200);short_break; //交差点を...
#define open 4
#define motiageru 1
#define tukamu 2
#define hanasu 3
#define time1 2000 //始めの旋回、ちょうど90°旋回できる...
#define part2 15000 //Aを掴んでから1に置くまでの時間、...
#define part3 10000 //Aを掴んでから2に置くまでの時間、...
#define part4 15000 //Aを掴んでから3に置くまでの時間、...
#define song PlaySound(SOUND_CLICK);//音を鳴らす
task main()
{
SetSensorLight(S2); //ライントレースをするライトセンサ...
SetSensorLight(S3); //紙コップを識別するためのライトセ...
go;
Wait(4500);//4.5秒間直進
song;
left1;//左に旋回
Wait(time1);//90度回転するまで続ける
song;
go;//直進
Wait(800);
song;
SendRemoteNumber(1,0,open);
song;
go;
Wait(3000);
SendRemoteNumber(1,0,tukamu);//つかむ
song;
int n1 = 0;//n1という関数を設置
int rooot = 0;//roootという関数を設置
/*こっから判別に入る*/
while(rooot = 0){
if(SENSOR_3 < 42){
rooot = 3;}//センサーが42未満の場合ルート3へ
else if(SENSOR_3 < 50){
rooot = 2;}//センサーが50未満の場合ルート2へ
else{
rooot = 1;}//それ以外の場合ルート1へ
}
Wait(1000);
song;
SendRemoteNumber(1,0,motiageru); //子機に送信しアーム...
song;
go;//直進
Wait(1000);//1秒間続ける
left0;//左折
Wait(1000);
until(SENSOR_2 <45);//ライントレースするセンサーが45未...
long line = 0;//long lineという関数を設置
long t1 = CurrentTick();//t1という関数を設置
while(rooot = 1){ //roootが1の間ライントレースを続ける
while(CurrentTick()-t1 <= part2){ //t1がpart2より大き...
while (line < nMAX) { // lineがnMAX以上になるまで続...
if (SENSOR_2 < 40) {
right1;
line = line + 10; //交差点を抜けやすくする
} else {
if (SENSOR_2 < 45) {
right0;
} else if (SENSOR_2 < 55) {
go;
} else if (SENSOR_2 < 60) {
left0;
} else {
left1;
}
line=0;
}
Wait(step);
}
short_break;
right1;
Wait(200);
cross_line;
line=0;
}
SendRemoteNumber(1,0,hanasu);
rooot = 0;
OnRev(OUT_AC,50); //A地点付近まで戻る
Wait(500);
left1;
Wait(time1*2);
go;
Wait(4000);
}
while(rooot = 2){
while(CurrentTick()-t1 <= part3){
if(SENSOR_2 < 40){
left1;}
else if(SENSOR_2 < 45){
left0;}
else if(SENSOR_2 < 55){
go;}
else{
right0;} //右旋回はなし、2に向かうには交差点...
Wait(step);
}
SendRemoteNumber(1,0,hanasu);
rooot = 0;
OnRev(OUT_AC,50); //A地点付近まで戻る
Wait(500);
left1;
Wait(time1);
go;
until(SENSOR_2 < 45);
}
while(rooot = 3){
while(CurrentTick()-t1 <= part4){
//右ライントレ...
if(SENSOR_2 < 40){
right1;}
else if(SENSOR_2 < 45){
right0;}
else if(SENSOR_2 < 55){
go;}
else if(SENSOR_2 < 60){
left0;}
else{
left1;}
}
SendRemoteNumber(1,0,hanasu);
rooot = 0;
OnRev(OUT_AC,50); //A地点付近まで戻る
Wait(500);
right1;
Wait(time1 + 300);
go;
Wait(3000);
go;
until(SENSOR_2 < 45);
}
//ここから2つ目をつかみにかかる
//2枚目のスタート地点に向かう、円軌道に乗ってる...
//B地点にショートカットする
}
---slave:アーム制御
#define on 1
task main()
{
int moterOn;
while(true){
ReceiveRemoteNumber(0,true,moterOn);
if(moterOn == 4){
OnFwd(OUT_B,50);
Wait(300);
Off(OUT_B);
Wait(500);
}
if(moterOn == 1){
OnRev(OUT_B,30);
Wait(1000);
Off(OUT_B);
int moterOn =0;
}
else if(moterOn == 2){
OnRev(OUT_B,30);
Wait(1000);
Off(OUT_B);
int moterOn =0;
}
else if(moterOn == 3){
OnFwd(OUT_B,30);
Wait(1000);
Off(OUT_B);
int moterOn = 0;
}
}
}
*感想 [#h7c9f022]
・今回の課題は前回のようにものを掴みある地点まで運ぶもの...
終了行:
[[2014a/Member]]
*取り組んだ課題の説明 [#s4124420]
今回取り組んだ課題の詳細については&ref(http://yakushi.s...
*メンバー [#l2d34f74]
・tacchan
・yukiyamaneko
・monodoll
・nari
*戦略 [#g8622225]
&ref(2014a/Member/tacchan/Mission2/2014a-mission2.png,70%);
・この課題を以下の手順で攻略するつもりであった。
?コップAを取りに移動しコップの識別をする。(コップには黒...
?Aがあった地点を基準点とし識別されたコップを入れる場所ま...
?A地点まで戻り次のコップを取りにいき再びA地点まで戻り?を...
??の繰り返し。
大会当日ではコップAを取り識別し対応するコップにかぶせ再び...
*ロボット [#ld469458]
&ref(2014a/Member/tacchan/Mission2/front.jpg);
・車軸のそばにライントレース用のライトセンサーをつけそれ...
・アームはコップを掴んだあと、さらに力が加わるとそれをコ...
&ref(2014a/Member/tacchan/Mission2/left.jpg);
・MainとSlaveを車体に垂直に固定し車体の重心が後ろに行き...
&ref(2014a/Member/tacchan/Mission2/under.jpg);
* [#s055c902]
---Main:本体制御
#define bri 55
#define s1 50 //高速
#define s2 30 //低速
#define OnRL(x,y) OnFwd(OUT_A,x); OnFwd(OUT_C,y);
#define go OnFwdSync(OUT_AC,s2,0); //直進
#define left1 OnRL(-s2,s2); //左旋回
#define left0 OnRL(0,s2); //左折
#define right0 OnRL(s2,0); //右折
#define right1 OnRL(s2,-s2); //右旋回
#define step 1
#define nMAX 300 //nMAXを超えた時交差点と判断する
#define short_break Off(OUT_AC); Wait(500); //小休憩
#define cross_line go;Wait(200);short_break; //交差点を...
#define open 4
#define motiageru 1
#define tukamu 2
#define hanasu 3
#define time1 2000 //始めの旋回、ちょうど90°旋回できる...
#define part2 15000 //Aを掴んでから1に置くまでの時間、...
#define part3 10000 //Aを掴んでから2に置くまでの時間、...
#define part4 15000 //Aを掴んでから3に置くまでの時間、...
#define song PlaySound(SOUND_CLICK);//音を鳴らす
task main()
{
SetSensorLight(S2); //ライントレースをするライトセンサ...
SetSensorLight(S3); //紙コップを識別するためのライトセ...
go;
Wait(4500);//4.5秒間直進
song;
left1;//左に旋回
Wait(time1);//90度回転するまで続ける
song;
go;//直進
Wait(800);
song;
SendRemoteNumber(1,0,open);
song;
go;
Wait(3000);
SendRemoteNumber(1,0,tukamu);//つかむ
song;
int n1 = 0;//n1という関数を設置
int rooot = 0;//roootという関数を設置
/*こっから判別に入る*/
while(rooot = 0){
if(SENSOR_3 < 42){
rooot = 3;}//センサーが42未満の場合ルート3へ
else if(SENSOR_3 < 50){
rooot = 2;}//センサーが50未満の場合ルート2へ
else{
rooot = 1;}//それ以外の場合ルート1へ
}
Wait(1000);
song;
SendRemoteNumber(1,0,motiageru); //子機に送信しアーム...
song;
go;//直進
Wait(1000);//1秒間続ける
left0;//左折
Wait(1000);
until(SENSOR_2 <45);//ライントレースするセンサーが45未...
long line = 0;//long lineという関数を設置
long t1 = CurrentTick();//t1という関数を設置
while(rooot = 1){ //roootが1の間ライントレースを続ける
while(CurrentTick()-t1 <= part2){ //t1がpart2より大き...
while (line < nMAX) { // lineがnMAX以上になるまで続...
if (SENSOR_2 < 40) {
right1;
line = line + 10; //交差点を抜けやすくする
} else {
if (SENSOR_2 < 45) {
right0;
} else if (SENSOR_2 < 55) {
go;
} else if (SENSOR_2 < 60) {
left0;
} else {
left1;
}
line=0;
}
Wait(step);
}
short_break;
right1;
Wait(200);
cross_line;
line=0;
}
SendRemoteNumber(1,0,hanasu);
rooot = 0;
OnRev(OUT_AC,50); //A地点付近まで戻る
Wait(500);
left1;
Wait(time1*2);
go;
Wait(4000);
}
while(rooot = 2){
while(CurrentTick()-t1 <= part3){
if(SENSOR_2 < 40){
left1;}
else if(SENSOR_2 < 45){
left0;}
else if(SENSOR_2 < 55){
go;}
else{
right0;} //右旋回はなし、2に向かうには交差点...
Wait(step);
}
SendRemoteNumber(1,0,hanasu);
rooot = 0;
OnRev(OUT_AC,50); //A地点付近まで戻る
Wait(500);
left1;
Wait(time1);
go;
until(SENSOR_2 < 45);
}
while(rooot = 3){
while(CurrentTick()-t1 <= part4){
//右ライントレ...
if(SENSOR_2 < 40){
right1;}
else if(SENSOR_2 < 45){
right0;}
else if(SENSOR_2 < 55){
go;}
else if(SENSOR_2 < 60){
left0;}
else{
left1;}
}
SendRemoteNumber(1,0,hanasu);
rooot = 0;
OnRev(OUT_AC,50); //A地点付近まで戻る
Wait(500);
right1;
Wait(time1 + 300);
go;
Wait(3000);
go;
until(SENSOR_2 < 45);
}
//ここから2つ目をつかみにかかる
//2枚目のスタート地点に向かう、円軌道に乗ってる...
//B地点にショートカットする
}
---slave:アーム制御
#define on 1
task main()
{
int moterOn;
while(true){
ReceiveRemoteNumber(0,true,moterOn);
if(moterOn == 4){
OnFwd(OUT_B,50);
Wait(300);
Off(OUT_B);
Wait(500);
}
if(moterOn == 1){
OnRev(OUT_B,30);
Wait(1000);
Off(OUT_B);
int moterOn =0;
}
else if(moterOn == 2){
OnRev(OUT_B,30);
Wait(1000);
Off(OUT_B);
int moterOn =0;
}
else if(moterOn == 3){
OnFwd(OUT_B,30);
Wait(1000);
Off(OUT_B);
int moterOn = 0;
}
}
}
*感想 [#h7c9f022]
・今回の課題は前回のようにものを掴みある地点まで運ぶもの...
ページ名: