/roboti/istrobot/callis/CARA.xls |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Callis.bak |
---|
0,0 → 1,202 |
// Soutezni robot pro Istrobot 2004 |
// $Archive: /Lego/Callis/callis.nqc $ |
// $Date: 27.04.04 21:19 $ |
// $Revision: 23 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
// Sledovani cary |
while(true) |
{ |
if(BUMPER) // je cihla? |
{ |
PlaySound(SOUND_DOWN); |
objizdka(); // objed cihlu |
} |
if (THRESHOLD < RSENSOR) // Cara pod pravym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=R; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
if (THRESHOLD < LSENSOR) // Cara pod levym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=L; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void objizdka() |
{ |
BL; BR; // zacouvej |
Wait(15); |
STOP; |
cikcak(); // vyrovnej se na caru |
cikcak(); // radeji 3x, aby se vyrovnaly setrvacne sily |
cikcak(); |
BL; FR; Wait(22); // vlevo |
STOP; |
FL; FR; Wait(65); // rovne |
STOP; |
FL; BR; Wait(22); // vpravo |
STOP; |
FL; FR; Wait(77); // rovne |
STOP; |
FL; BR; Wait(22); // vpravo |
STOP; |
FL; FR; |
Wait(20); // kousek rovne |
// rovne, dokud nenarazis na caru |
while(THRESHOLD > RSENSOR); // pravej senzor, protoze cihla je vpravo |
STOP; |
BL; FR; // toc se doleva, dokud nenarazis na caru |
while(THRESHOLD > LSENSOR); // levej senzor, protoze cara je urcite vlevo |
STOP; |
line=R; // caru predpokladame vpravo, kdybysme ji prejeli |
dira=0; |
FL; FR; // vpred |
} |
/roboti/istrobot/callis/Callis.nqc |
---|
0,0 → 1,202 |
// Soutezni robot pro Istrobot 2004 |
// $Archive: /Lego/Callis/callis.nqc $ |
// $Date: 27.04.04 22:51 $ |
// $Revision: 24 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
// Sledovani cary |
while(true) |
{ |
if(BUMPER) // je cihla? |
{ |
PlaySound(SOUND_DOWN); |
objizdka(); // objed cihlu |
} |
if (THRESHOLD < RSENSOR) // Cara pod pravym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=R; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
if (THRESHOLD < LSENSOR) // Cara pod levym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=L; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void objizdka() |
{ |
BL; BR; // zacouvej |
Wait(15); |
STOP; |
cikcak(); // vyrovnej se na caru |
cikcak(); // radeji 3x, aby se vyrovnaly setrvacne sily |
cikcak(); |
BL; FR; Wait(22); // vlevo |
STOP; |
FL; FR; Wait(65); // rovne |
STOP; |
FL; BR; Wait(22); // vpravo |
STOP; |
FL; FR; Wait(77); // rovne |
STOP; |
FL; BR; Wait(21); // vpravo |
STOP; |
FL; FR; |
Wait(20); // kousek rovne |
// rovne, dokud nenarazis na caru |
while(THRESHOLD > RSENSOR); // pravej senzor, protoze cihla je vpravo |
STOP; |
BL; FR; // toc se doleva, dokud nenarazis na caru |
while(THRESHOLD > LSENSOR); // levej senzor, protoze cara je urcite vlevo |
STOP; |
line=R; // caru predpokladame vpravo, kdybysme ji prejeli |
dira=0; |
FL; FR; // vpred |
} |
/roboti/istrobot/callis/Callis_NQC.PDF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Callis_R.bak |
---|
0,0 → 1,203 |
// Soutezni robot pro Istrobot 2004 |
// Objeti cihly vpravo |
// $Archive: /Lego/Callis/Callis_R.nqc $ |
// $Date: 27.04.04 20:52 $ |
// $Revision: 3 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
// Sledovani cary |
while(true) |
{ |
if(BUMPER) // je cihla? |
{ |
PlaySound(SOUND_DOWN); |
objizdka(); // objed cihlu |
} |
if (THRESHOLD < RSENSOR) // Cara pod pravym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=R; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
if (THRESHOLD < LSENSOR) // Cara pod levym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=L; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void objizdka() |
{ |
BL; BR; // zacouvej |
Wait(15); |
STOP; |
cikcak(); // vyrovnej se na caru |
cikcak(); // radeji 3x, aby se vyrovnaly setrvacne sily |
cikcak(); |
FL; BR; Wait(23); // vpravo |
STOP; |
FL; FR; Wait(65); // rovne |
STOP; |
BL; FR; Wait(23); // vlevo |
STOP; |
FL; FR; Wait(75); // rovne |
STOP; |
BL; FR; Wait(23); // vlevo |
STOP; |
FL; FR; |
Wait(20); // kousek rovne |
// rovne, dokud nenarazis na caru |
while(THRESHOLD > LSENSOR); // levej senzor, protoze cihla je levo |
STOP; |
FL; BR; // toc se doprava, dokud nenarazis na caru |
while(THRESHOLD > RSENSOR); // pravej senzor, protoze cara je urcite vpravo |
STOP; |
line=L; // caru predpokladame vlevo, kdybysme ji prejeli |
dira=0; |
FL; FR; // vpred |
} |
/roboti/istrobot/callis/Callis_R.nqc |
---|
0,0 → 1,203 |
// Soutezni robot pro Istrobot 2004 |
// Objeti cihly vpravo |
// $Archive: /Lego/Callis/Callis_R.nqc $ |
// $Date: 27.04.04 20:52 $ |
// $Revision: 3 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
// Sledovani cary |
while(true) |
{ |
if(BUMPER) // je cihla? |
{ |
PlaySound(SOUND_DOWN); |
objizdka(); // objed cihlu |
} |
if (THRESHOLD < RSENSOR) // Cara pod pravym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=R; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
if (THRESHOLD < LSENSOR) // Cara pod levym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=L; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void objizdka() |
{ |
BL; BR; // zacouvej |
Wait(15); |
STOP; |
cikcak(); // vyrovnej se na caru |
cikcak(); // radeji 3x, aby se vyrovnaly setrvacne sily |
cikcak(); |
FL; BR; Wait(23); // vpravo |
STOP; |
FL; FR; Wait(65); // rovne |
STOP; |
BL; FR; Wait(23); // vlevo |
STOP; |
FL; FR; Wait(75); // rovne |
STOP; |
BL; FR; Wait(23); // vlevo |
STOP; |
FL; FR; |
Wait(20); // kousek rovne |
// rovne, dokud nenarazis na caru |
while(THRESHOLD > LSENSOR); // levej senzor, protoze cihla je vlevo |
STOP; |
FL; BR; // toc se doprava, dokud nenarazis na caru |
while(THRESHOLD > RSENSOR); // pravej senzor, protoze cara je urcite vpravo |
STOP; |
line=L; // caru predpokladame vlevo, kdybysme ji prejeli |
dira=0; |
FL; FR; // vpred |
} |
/roboti/istrobot/callis/Callis_R_rovne.bak |
---|
0,0 → 1,203 |
// Soutezni robot pro Istrobot 2004 |
// Objeti cihly vpravo |
// $Archive: /Lego/Callis/Callis_R.nqc $ |
// $Date: 27.04.04 20:52 $ |
// $Revision: 3 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
// Sledovani cary |
while(true) |
{ |
if(BUMPER) // je cihla? |
{ |
PlaySound(SOUND_DOWN); |
objizdka(); // objed cihlu |
} |
if (THRESHOLD < RSENSOR) // Cara pod pravym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=R; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
if (THRESHOLD < LSENSOR) // Cara pod levym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=L; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void objizdka() |
{ |
BL; BR; // zacouvej |
Wait(15); |
STOP; |
cikcak(); // vyrovnej se na caru |
cikcak(); // radeji 3x, aby se vyrovnaly setrvacne sily |
cikcak(); |
FL; BR; Wait(23); // vpravo |
STOP; |
FL; FR; Wait(65); // rovne |
STOP; |
BL; FR; Wait(23); // vlevo |
STOP; |
FL; FR; Wait(75); // rovne |
// STOP; |
// BL; FR; Wait(23); // vlevo |
// STOP; |
// FL; FR; |
// Wait(20); // kousek rovne |
// rovne, dokud nenarazis na caru |
while(THRESHOLD > LSENSOR); // levej senzor, protoze cihla je levo |
STOP; |
FL; BR; // toc se doprava, dokud nenarazis na caru |
while(THRESHOLD > RSENSOR); // pravej senzor, protoze cara je urcite vpravo |
STOP; |
line=L; // caru predpokladame vlevo, kdybysme ji prejeli |
dira=0; |
FL; FR; // vpred |
} |
/roboti/istrobot/callis/Callis_R_rovne.nqc |
---|
0,0 → 1,203 |
// Soutezni robot pro Istrobot 2004 |
// Objeti cihly vpravo |
// $Archive: /Lego/Callis/Callis_R.nqc $ |
// $Date: 27.04.04 20:52 $ |
// $Revision: 3 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
// Sledovani cary |
while(true) |
{ |
if(BUMPER) // je cihla? |
{ |
PlaySound(SOUND_DOWN); |
objizdka(); // objed cihlu |
} |
if (THRESHOLD < RSENSOR) // Cara pod pravym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=R; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
if (THRESHOLD < LSENSOR) // Cara pod levym senzorem |
{ |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
line=L; // zaznamenej, kdes videl caru |
FL; FR; // rovne |
continue; |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void objizdka() |
{ |
BL; BR; // zacouvej |
Wait(15); |
STOP; |
cikcak(); // vyrovnej se na caru |
cikcak(); // radeji 3x, aby se vyrovnaly setrvacne sily |
cikcak(); |
FL; BR; Wait(23); // vpravo |
STOP; |
FL; FR; Wait(60); // rovne |
STOP; |
BL; FR; Wait(23); // vlevo |
STOP; |
FL; FR; Wait(75); // rovne |
// STOP; |
// BL; FR; Wait(23); // vlevo |
// STOP; |
// FL; FR; |
// Wait(20); // kousek rovne |
// rovne, dokud nenarazis na caru |
while(THRESHOLD > LSENSOR); // levej senzor, protoze cihla je levo |
STOP; |
FL; BR; // toc se doprava, dokud nenarazis na caru |
while(THRESHOLD > RSENSOR); // pravej senzor, protoze cara je urcite vpravo |
STOP; |
line=L; // caru predpokladame vlevo, kdybysme ji prejeli |
dira=0; |
FL; FR; // vpred |
} |
/roboti/istrobot/callis/Callis_log.bak |
---|
0,0 → 1,173 |
// Soutezni robot pro Istrobot 2004 |
// $Archive: /Lego/Callis/Callis_log.nqc $ |
// $Date: 9.05.04 6:34 $ |
// $Revision: 1 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetEvent(L, LSENSOR, EVENT_TYPE_HIGH); |
SetEvent(R, RSENSOR, EVENT_TYPE_HIGH); |
SetPower (ML,OUT_HALF); // vykon motoru |
SetPower (MR,OUT_HALF); |
movement=R; |
line=S; |
dira=0; |
cikcak(); // toc se, abys nasel caru |
FL; FR; // vpred |
CreateDatalog(1000); |
// Sledovani cary |
while(true) |
{ |
monitor( EVENT_MASK(L) | EVENT_MASK(R) ) |
{ |
FL; FR; // rovne |
} |
catch (EVENT_MASK(L)) |
{ |
line=L; // zaznamenej, kdes videl caru |
n=-dira; |
AddToDatalog(n); |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
} |
catch (EVENT_MASK(R)) |
{ |
line=R; // zaznamenej, kdes videl caru |
n=dira; |
AddToDatalog(n); |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
} |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
} // while(true) |
} |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
/roboti/istrobot/callis/Callis_log.nqc |
---|
0,0 → 1,184 |
// Soutezni robot pro Istrobot 2004 |
// $Archive: /Lego/Callis/Callis_log.nqc $ |
// $Date: 9.05.04 6:34 $ |
// $Revision: 1 $ |
#define THRESHOLD 50 // rozhodovaci uroven mezi cernou a bilou |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Senzory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Senzor na cihlu |
#define MEZERA 38 // jak se muze jet dlouho bez cary |
#define COUVEJ 70 // kolik se ma couvat po detekci diry |
#define CIKCAK 40 // kolik se ma jet cik/cak |
#define PRES_DIRU 35 // jak predpokladame velkou diru |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
#define STOP Off(ML + MR); Wait(10); // zastav 8 |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int n; // pomocna promena pro cyklus FOR |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,SENSOR_TOUCH); // sensor na prekazku |
SetEvent(L, LSENSOR, EVENT_TYPE_PRESSED); |
SetEvent(R, RSENSOR, EVENT_TYPE_PRESSED); |
SetPower (ML,OUT_HALF); // vykon motoru |
SetPower (MR,OUT_HALF); |
movement=R; |
line=S; |
dira=0; |
// cikcak(); // toc se, abys nasel caru |
//!!! FL; FR; // vpred |
CreateDatalog(1000); |
// Sledovani cary |
while(true) |
{ |
monitor( EVENT_MASK(L) | EVENT_MASK(R) ) |
{ |
//!!! FL; FR; // rovne |
Wait(1); |
} |
catch (EVENT_MASK(L)) |
{ |
SetUserDisplay(2, 1); |
PlaySound(SOUND_CLICK); |
Wait(50); |
line=L; // zaznamenej, kdes videl caru |
n=-dira; |
// AddToDatalog(n); |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
} |
catch (EVENT_MASK(R)) |
{ |
SetUserDisplay(3, 1); |
PlaySound(SOUND_LOW_BEEP); |
Wait(50); |
line=R; // zaznamenej, kdes videl caru |
n=dira; |
// AddToDatalog(n); |
dira=0; // nuluj pocitadlo diry, protoze jsme videli caru |
} |
SetUserDisplay(1, 1); |
Wait(50); |
/* |
// oba senzory mimo caru |
if (0==dira) // v prvnim cyklu po ztrate cary zacneme zahybat |
// v ostatnich cyklech nedelame nic (pro urychleni snimani) |
{ |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Off(ML); // doleva |
movement=L; // poznamenej kam jedes |
break; |
case R: |
Off(MR); // doprava |
movement=R; // poznamenej kam jedes |
break; |
}; |
dira++; // zvets pocitadlo diry, aby to pristi cyklus tudy neslo |
continue; // co nejrychleji se vrat na snimani cary |
} |
if (MEZERA < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
dira=0; |
PlaySound (SOUND_FAST_UP); |
switch(movement) // kam se jelo ? |
{ |
case L: |
Off(ML); // couvej doprava |
BR; |
Wait(COUVEJ+10); |
movement=R; |
break; |
case R: |
BL; // couvej doleva |
Off(MR); |
Wait(COUVEJ); |
movement=L; |
break; |
} |
PlaySound(SOUND_CLICK); |
STOP; // konec couvani |
FL; FR; // rovne pres diru |
Wait(PRES_DIRU); |
STOP; |
cikcak(); // najdi caru |
FR; FL; // vpred |
} // dira |
*/ |
} // while(true) |
} |
void cikcak() // Hledani cary |
{ |
n=CIKCAK/2; // poprve hned zatoc opacne, nez se jelo pred detekci diry |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
while(true) // jed cik-cak, dokud nenajdes caru |
{ |
if ((THRESHOLD < RSENSOR) || (THRESHOLD < RSENSOR)) // je cara ? |
{ |
STOP; |
break; |
}; |
if (CIKCAK < n++) // Jedeme uz dost dlouho cik? Pak jed cak. |
{ |
n=0; |
STOP; |
switch(movement) // zmenime smer zataceni |
{ |
case L: |
FL; BR; // doprava |
movement=R; // poznamenej kam jedem |
line=L; // kdyz prejedem, tak bude cara vlevo |
break; |
case R: |
FR; BL; // doleva |
movement=L; // poznamenej kam jedem |
line=R; // kdyz prejedem, tak bude cara vpravo |
break; |
} |
} |
} |
} |
/roboti/istrobot/callis/FAQ.htm |
---|
0,0 → 1,8 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"> |
<!-- saved from url=(0032)http://www.robotika.sk/mains.htm --> |
<HTML><HEAD><TITLE>Slovenská verzia</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2"> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD><FRAMESET border=0 |
frameSpacing=0 frameBorder=0 cols=137,*><FRAME name=menu |
src="FAQ_soubory/menus.htm" frameBorder=0 noResize scrolling=no><FRAME name=telo |
src="FAQ_soubory/poradna.htm" frameBorder=0 noResize></FRAMESET></HTML> |
/roboti/istrobot/callis/FAQ_soubory/menus.htm |
---|
0,0 → 1,99 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0032)http://www.robotika.sk/menus.htm --> |
<HTML><HEAD><TITLE></TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR> |
<SCRIPT language=JavaScript> |
<!-- |
function fwLoadMenus() { |
if (window.fw_menu_0) return; |
window.fw_menu_0 = new Menu("root",115,21,"Verdana, Arial, Helvetica, sans-serif",12,"#ffff00","#ffffff","#000099","#0066ff"); |
fw_menu_0.addMenuItem("Novinky","window.open('./contest/novinky.html', 'telo');"); |
fw_menu_0.addMenuItem("Pravidlá","window.open('./contest/pravidla.html','telo');"); |
fw_menu_0.addMenuItem("Roboti","window.open('./contest/roboti.html','telo');"); |
fw_menu_0.addMenuItem("Poradna","window.open('./contest/poradna.html','telo');"); |
fw_menu_0.addMenuItem("Archív","window.open('./contest/archive/index.html','telo');"); |
fw_menu_0.fontWeight="normal"; |
fw_menu_0.hideOnMouseOut=true; |
fw_menu_0.writeMenus(); |
} // fwLoadMenus() |
//--> |
</SCRIPT> |
<SCRIPT language=JavaScript1.2 src="menus_soubory/fw_menu.js"></SCRIPT> |
<SCRIPT language=javascript> |
<!-- |
active = new Image(135,80); |
active.src = "enveron.jpg"; |
inactive = new Image(135,80); |
inactive.src = "enverof.jpg"; |
//--> |
</SCRIPT> |
</HEAD> |
<BODY text=#000000 vLink=#ff00ff aLink=#ff0000 link=#0000ff leftMargin=0 |
background=menus_soubory/fuga1.gif topMargin=0 marginheigh="0" marginwidth="0"> |
<SCRIPT language=JavaScript1.2>fwLoadMenus();</SCRIPT> |
<TABLE cellSpacing=0 cellPadding=0 width=135 border=0><!-- fwtable fwsrc="Untitled" fwbase="menu.gif" fwstyle="Dreamweaver" fwdocid = "742308039" fwnested="0" --> |
<TBODY> |
<TR> |
<TD><IMG height=15 alt="" src="menus_soubory/fuga.gif" width=135 |
border=0></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/novinky.htm" target=telo><IMG height=40 |
alt=Novinky src="menus_soubory/novinky.jpg" width=135 border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/domov.htm" target=telo><IMG height=40 |
alt="O nás" src="menus_soubory/onas.jpg" width=135 border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/projects/projekty.htm" target=telo><IMG |
height=40 alt=Projekty src="menus_soubory/pro.jpg" width=135 |
border=0></A></TD></TR><!-- Publikacie v menu su disabled |
<TR> |
<TD><IMG SRC="pub.jpg" WIDTH="135" HEIGHT="40" BORDER="0" ALT=""></TD> |
</TR> |
--> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/holls/2003/index.html" target=telo><IMG |
height=40 alt="Robotické prázdniny" src="menus_soubory/pra.jpg" width=135 |
border=0></A></TD></TR><!-- Na chvilu vymenime odkazy |
<TR> |
<TD><A HREF="contest/novinky.html" TARGET="telo" onMouseOver="window.status='';return true"><IMG SRC="menu_r2_c1.gif" WIDTH="135" HEIGHT="40" BORDER="0" ALT="Sutaz"></A></TD> |
</TR> |
--> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/contest/index.html" target=telo><IMG |
height=40 alt=Sutaz src="menus_soubory/menu_r2_c1.gif" width=135 |
border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/forum/messageboard.php" target=telo><IMG |
height=40 alt="Diskusné fórum" src="menus_soubory/forum.jpg" width=135 |
border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/kontakt.htm" target=telo><IMG height=40 |
alt=Kontakt src="menus_soubory/kon.jpg" width=135 border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/linky.htm" target=telo><IMG height=40 |
alt="Zaujímavé adresy" src="menus_soubory/lin.jpg" width=135 |
border=0></A></TD></TR> |
<TR> |
<TD><IMG height=15 alt="" src="menus_soubory/fuga.jpg" width=135 |
border=0></TD></TR> |
<TR> |
<TD><A |
onmouseover="inactive.src=active.src; window.status='English version';return true" |
onmouseout="inactive.src='enverof.jpg'; window.status=''" |
href="http://www.robotika.sk/maine.htm" target=_parent><IMG height=80 |
alt="" src="menus_soubory/enverof.jpg" width=135 border=0 |
name=inactive></A></TD></TR></TBODY></TABLE></BODY></HTML> |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/enverof.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/forum.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/fuga.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/fuga.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/fuga1.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/fw_menu.js |
---|
0,0 → 1,678 |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/kon.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/lin.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/menu_r2_c1.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/novinky.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/onas.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/pra.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/menus_soubory/pro.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/poradna.htm |
---|
0,0 → 1,438 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0043)http://www.robotika.sk/contest/poradna.html --> |
<HTML><HEAD><TITLE>Istrobot - poradna</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"><LINK |
title="Orange Style for Istrobot" href="poradna_soubory/istrobot.css" |
type=text/css rel=StyleSheet> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD> |
<BODY> |
<P align=center>[<A |
href="http://www.robotika.sk/contest/novinky.html">Novinky</A>] [<A |
href="http://www.robotika.sk/contest/pravidla.html">Pravidlá</A>] [<A |
href="http://www.robotika.sk/contest/roboti.html">Roboti</A>] [Poradòa] [<A |
href="http://www.robotika.sk/contest/archive/index.html">Archív</A>] |
<P><A name=top></P> |
<H1>Poradòa</H1></A> |
<P>Na tejto stránke nájdete odpovede od naich odborníkov na najèastejie |
otázky, ktoré nám v súvislosti so súaou posielate. Odpovede na technické |
otázky mono nájdete aj na niektorej z mnohých robotických stránok na internete, |
ktorá sa zaoberá podobnou problematikou. Tie najzaujímavejie sme pre vás |
zozbierali na samostatnej stránke <A |
href="http://www.robotika.sk/contest/links.html">Odkazy</A>. |
<P><B>Obsah</B> |
<OL> |
<LI><A |
href="http://www.robotika.sk/contest/poradna.html#organizacne">Organizaèné |
problémy</A> |
<LI><A href="http://www.robotika.sk/contest/poradna.html#pravidla">Otázky |
týkajúce sa pravidiel</A> |
<LI><A href="http://www.robotika.sk/contest/poradna.html#technicke">Technické |
problémy</A> |
<LI><A href="http://www.robotika.sk/contest/poradna.html#hladame">H¾adáme |
odpoveï</A> |
<LI><A href="mailto:balogh@elf.stuba.sk">Posla otázku</A> </LI></OL> |
<P> |
<UL><A name=organizacne> |
<H2>Organizaèné problémy</H2></A> |
<LI><I>Preèo ISTROBOT?</I> |
<P>Latinský názov Bratislavy je Istropolis, preto Istro + robot. Okrem toho je |
to jediná takáto súa v bývalých "East European" krajinách, take tie |
<I>Eastrobot</I> [ístrobot]. |
<HR> |
<P></P> |
<LI><I>Na internete sme nasli program a je tam na stredu pisane: Prezentacia |
na Cofaxe. Co to presne znamena? Velmi radi by sme tam isli, ale ako by to |
bolo z ubytovanim?</I> |
<P>To znamená, e generálny sponzor Datalan, by rád vo svojomo stánku na |
výstave Cofax ukázal nejakých robotov. Ak máte záujem predvies sa aj tu, |
dajte mi vedie a zabzpeèíme predåenie ubytovania a stravy a vetko ostatné. |
Nejaký èas budte predvádza a potom sa samozrejme môete poobzera aj po |
výstave. |
<P></P> |
<LI><I>Robota asi nesthnem dokonèi, preto radej neprídem.</I> |
<P>Ja by som na Vaom mieste nehádzal hneï flintu do ita. Aj vlani priiel |
jeden úèastník, ktorý napokon ani neodtartoval. Podstatné je prís a skúsi. |
Ak máte kontrukciu hotovú, potom neverím, e by ste nieèo nedoprogramovali. |
<P>Deò pred súaou bude dráha k dispozícii na testovanie, take ak by ste |
prili na dva dni, mono by sa ete velièo dalo odladi. Nemusíte vyhra, ale |
aspoò to skúsi, aj keï budete posledný, svet sa nezrúti. Aspoò ale získate |
skúsenosti a na budúci rok vyhráte ;-) |
<P> |
<HR> |
<LI><I>Potøebuji vìdìt, co ve je hrazeno a co ve si musím hradit sám. Buïte |
tak laskav a toto mi sdìlte.</I> |
<P>Organizátori vám preplatia cestovné, ubytovanie a zrejme aj stravu. Jediný |
problém môe by s cestovným, neviem urèite, èi ho preplatíme v Kè, alebo len |
Sk. |
<P> |
<HR> |
<LI><I>Môem jedného robota prihlási do viacerých kategórií?</I> |
<P>Áno, môete. |
<P> |
<HR> |
<LI><I>Budeme si môc dráhu vyskúa?</I> |
<P>Áno, dráhy sú prístupné verejnosti. Nie je na nich ale súaný tvar dráhy. |
Presný pravidelný termín bude uvedený neskôr, zatia¾ pod¾a dohody. |
<P>Dráha bude okrem toho k dispozícii na testovanie deò pred súaou, take ak |
prídete na oba dni, mono ete velièo doladíte. |
<P>Bratislavèania majú výhodu, môu zaèa testova u dnes. |
<P> |
<HR> |
<HR> |
<LI><I>Da sa zabezpecit nejake lacne ubytovanie?</I> |
<P>Ano, malo by byt zadarmo (ale len pre sutaziacich, nie pre vsetkych co vas |
pridu povzbudzovat). Potom este mozem zohnat nejake ubytko na intraku, stoji |
okolo 250,-Sk/noc, ale to bude jasnejsie az v marci. |
<P> |
<HR> |
<LI><I>Mohli by ste poslat nejaku oficialnu pozvanku na skolu, aby sme sa |
mohli uvolnit z vyucovania kvoli testovaniu?</I> |
<P>Hm. Ak vam staci papierova verzia toho co je na www.robotika.sk tak to |
mozem poslat, (napiste mi adresu kam), pripadne si sami nieco napiste, poslite |
mi to a ja tam dam peciatku a take nezmysly. |
<P> |
<HR> |
<LI><I>Da sa dohodnut na termine testovania?</I> |
<P>Da. |
<P> |
<HR> |
<LI><I>Kolko ludi si mozme doniest do publika(viete ked vyhra zavisi od sily |
potlesku)?</I> |
<P>Kolko chcete, kapacita miestnosti je 300 ludi ;-) |
<P><A name=pravidla></P> |
<H2>Otázky týkajúce sa pravidiel</H2></A> |
<P></P> |
<LI><I>Bude svietit priame slnecne svetlo na drahu?</I> |
<P>Pravidlá takúto situáciu nevyluèujú. Ale keïe súa sa bude kona v |
posluchárni, ktorá je dos tmavá a poèítame aj s premietaním na ve¾koplonú |
obrazovku, zrejme do miestnosti ve¾a slnka neprenikne. |
<P> |
<HR> |
<LI><I>Dale v popisu trati uvadite, ze se budou vyskytovat ruzne prekazky, |
zajima me, jake ruzne prekazky a hlavne s jakym povrchem, jake barvy a |
materialu. Dale preruseni drahy bude na jakou vzdalenost a zda druhy konec |
preruseni bude v ose prvniho preruseni.</I> |
<P>To u by som Vám mohol rovno nakresli súanú dráhu ;-) |
<P>Dráha vak nebude príli odliná od minulého roèníka (na stránke je jej |
obrázok). Prekáku si predstavte ako tehlu (cihlu), alebo drevený palík. |
<P>Farba a rozmery sa môu líi, take sa na ne nespoliehajte. O tom je práve |
súa, e neviete celkom vetko a robot sa tomu musí prispôsobi... |
<P> |
<HR> |
<LI><I>Co sa povazuje za nakladny robot?</I> |
<P>To posudi porota. Nie je to ktovieaka definicia, ale musi vam stacit. Ak by |
sme dali napriklad cenove obmedzenie, tazko by sa dokazovalo. Toto pravidlo je |
urcene hlavne pre tych, ktori mozu vyuzivat relativne neobmedzene zdroje. |
Napriklad ak niekto pracuje (alebo brigaduje) v pocitacovej firme, nie je |
problem "pozicat" si trebars aj priemyselnu kameru a jednodoskovy priemyselny |
pocitac. Takym ludom by mali porotcovia "dohovorit" aby radsej robota |
predviedli vo Volnej jazde. |
<P>Aj preto je dobre, aby ste mi cim skorej zacali posielat nejake popisy, |
nakresy a fotky robotov, aby sme pripadne nejasnosti vyriesili cim skorej, nie |
az na sutazi. |
<P> |
<HR> |
<LI><I>moze byt riadeny vstavanou 486 (teda taka 486 na kolieskach)</I> |
<P>Ano, moze. Ak to nie je nahodou priemyselna verzia, pripadne DIMM PC |
verzia, lebo to by asi spadalo do tej kategorie "prilis nakladny". Kde by ste |
na to asi vzali? |
<P> |
<HR> |
<LI><I>Co znamena pojem tehla na drahe (max rozmery, vaha, material)?</I> |
<P><A |
href="http://www.nr.psg.sk/prezenta/wienerberger/vyrobky.html#part9">Toto je |
tehla.</A>. |
<P> |
<HR> |
<LI><I>mozu byt v tunely zatacky?</I> |
<P>Preco nie, dobry napad. |
<P> |
<HR> |
<LI><I>ake su rozmery tunelov?</I> |
<P>A co vlastne bude robit vas robot? ;-) |
<P> |
<HR> |
<LI><I>Moze si robot v kategorii pathfollower pri prvom a dalsom pokuse |
zapamatat doteraz prejdenu drahu (teda, ci je mozne trasu najprv prejst |
pomalicky a poznacit si vsetky prekazky, a potom pri druhom pokuse len tak |
preletiet)? lebo to nie je v rozpore s pravidlami na stranke</I> |
<P>Ano, moze. Dokonca je to tam vyslovne uvedene. |
<P> |
<HR> |
<LI><I>odrazaju prekazky na drahe ultrazvuky?</I> |
<P>Ano. |
<P> |
<HR> |
<LI><I>Ake su podmienky na prerusene miesto?</I> |
<P>Ziadne. Akurat ze nebude prilis dlhe. |
<P> |
<HR> |
<LI><I>K tej volnej jazde, naozaj vitazstvo zavisi iba od sily potlesku ?</I> |
<P>Ano. |
<P> |
<HR> |
<LI><I>Robot sutaziaci v kategorii volna jazda musi mat tiez maximalne rozmery |
25x25x25 cm ? V ramci volnej jazdy moze byt dialkovo riadeny ?</I> |
<P>Nie. Ano. |
<P> |
<HR> |
<LI><I>Mozem sa viacerych rocnikov sutaze zucasnit s tym istym robotom ?</I> |
<P>Ano. |
<P> |
<HR> |
<LI><I>Moze robot opustit nahodou (napr. chyba senzorov) na moment drahu a |
hned ju najst a pokracovat v kole, alebo bude diskvalifikovany.</I> |
<P>Zrejme ano, zalezi co povie porota. |
<P> |
<HR> |
<LI><I>Co vsetko na trati sa da poskodit ? Vydrzia tehlicky aj naraz maleho |
"buldozera" ?</I> |
<P>Zoberte niekde normalnu tehlu a skuste. |
<P> |
<HR> |
<LI><I>Aka podrobna ma byt dokumentacia ?</I> |
<P>Dost. |
<P> |
<HR> |
<LI><I>Pred prekazkou je, alebo nie je prerusena ciara ?</I> |
<P>Nie je. |
<P> |
<HR> |
<LI><I>Cas medzi pokusmi mozem pouzit aj na manualne naprogramovanie prip. |
upravenie uz zaznamenanej drahy (robotom) ?</I> |
<P>V ziadnom pripade! |
<P> |
<HR> |
<LI><I>Kedy je mozne otestovat drahu a je mozne v mieste testovania pozicanie |
PC monitora ?</I> |
<P>Ked sa dohodneme, najblizsi termin je uvedeny v <A |
href="http://www.robotika.sk/contest/novinky.htm">Novinkach</A>. Monitor sa da |
pozicat. |
<P> |
<HR> |
<LI><I>Moze sa stat, ked nas robot bude napr. 24 cm siroky a pri jazde po |
rovnej ciare ma mozny rozkmit 2 cm do stran, ze neprejde tunelom, resp. ze ho |
poskodi a bude diskvalifikovany ? </I> |
<P>Nebude az taky maly... |
<P> |
<HR> |
<LI><I>Pred tunelmi bude rovna draha, alebo moze byt tunel na zakrute ?</I> |
<P>Nechajte sa prekvapit. |
<P> |
<HR> |
<LI><I>Kto bude v publiku ?</I> |
<P>Vselikto. Koho si privediete. |
<P> |
<HR> |
<LI><I>Moze byt na trati viacej robotov naraz?</I> |
<P>Kde by sa tam vzali? |
<P> |
<HR> |
<LI><I>Ak ano mozme im skodit?</I> |
<P>Ak nahodou ano, tak mozete. |
<P> |
<HR> |
<LI><I>Ake su toho roku ceny?</I> |
<P>Dobre ;-) |
<P> |
<HR> |
<LI><I>Jaky tvar bude mit zaèátek závodní dráhy? V pravidlech na www je cosi o |
kruhu ze kter`ho robot vyjí¾dí, ale na fotkách z loòsk`ho roku je jen èára, |
která prost^ zaène. Jak~ start tedy bude letos?</I> |
<P>Start je vzdy rovnaky. Ten kruh tam nemoze byt namalovany plnou ciarou, |
lebo robot by samozrejme chytil "stopu" a jazdil dokola. Preto je ten kruh |
mysleny. V skutocnosti je vyznaceny slabou ceruzkou, takze na fotke ho nie je |
vidno. |
<P> |
<HR> |
<LI><I>Bude mo¾no robata postavit pcímo na èáru, nebo musí b~t "vypuÒt^n" na |
bíl` ploÒe a musí si èáru najít?</I> |
<P>Idealny start vyzera tak, ze ho umiestnite do toho pomysleneho kruhu, |
napriklad kolmo k ciare, on si ju najde a pusti sa po nej. Ale porota vlani |
nemala namietky ani voci priamemu postaveniu na ciaru. KEdze sa tam este |
nemeria cas, nie je to az take podstatne. |
<P>Asi vas niektore odpovede neuspokojili, ale o tom je sutaz, ze robot sa |
musi aj trocha samostatne rozhodovat. Ak by ste vedeli rozmery prekazok, |
tunelov atd. tak mozete vsetko vopred naprogramovat a uz to nie je autonomny |
robot. Takze sa nechajte prekvapit. |
<P align=right><I>Richard Balogh</I> |
<P><BR> |
<P><A name=technicke></P> |
<H2>Technické problémy</H2></A> |
<P></P> |
<LI><I>Nemame celkom jasno v oblasti IR snimacov, chceli by sme ich pouzit na |
sledovanie drahy, a nevieme aky pocet tychto snimacov je potrebne pouzit, a |
ako ich vhodne vzajomne umiestnit.</I> |
<P>To, aky pocet snimacou pouzijete je vasa vec. Potrebujete aspon dva, aby |
ste mohli sledovat odchylku vlavo, vpravo. Niektori pouzivaju rad (6-8) |
snimacov a maju presnejsiu informaciu - skratka to musite vymysliet, o tom je |
prave sutaz. |
<P>Podrobnejie odpovedá <A href="mailto:gacho@nov1.kar.elf.stuba.sk">Ing. |
Juraj Gacho:</A><BR> |
<P>No, co sa tyka drahy, bude to cierna ciara na bielom podklade. Ked na tu |
drahu niecim zasvietite, tak z toho cierneho povrchu sa bude odrazat menej |
svetla ako z bieleho - a to sa vlastne bude vyuzivat. V minulom rocniku mali |
vsetky zucastnene roboty (aspon myslim) pouzite 2 snimace, jeden z nich |
sledoval ciaru a jeden bielu podlahu vedla ciary. Z toho vyplyval aj |
algoritmus riadenia, kedy cielom riadenia bolo chodit tak, aby jeden snimac |
isiel ponad biele pasmo (podlahu) a jeden ponad cierne pasmo (ciaru). Daju sa |
pouzit fototranzistory, fotodiody alebo fotorezistory, alebo je mozne pouzit |
aj integrovane snimace-zvacsa IR. (v principe je jedno, ci robite s viditelnym |
svetlom, alebo infracervenym). Je vhodne zabezpecit, aby bocne svetlo |
nesposobovalo problemy (nejako odtienit snimace a mat vlastne osvetlenie. Ak |
nieco o takychto snimacoch viete, tak vam odporucam pozriet na internete |
nejake katalogove listy, alebo skocit niekde do obchodu so suciastkami a |
porozpravat sa s predavacom, alebo mozete skocit za niekym na fakulte, kto sa |
tym zaobera. Mozno by ste nieco nasli aj v casopise <A |
href="http://www.atpjournal.sk/">AT&P Journal</A>, kde uz viac ako rok |
bezi serial Senzory v automatizacii (autor - Miroslav Toman). Niekde v |
kniznici by ste to hadam nasli. |
<P>Co sa poctu tyka, je potrebne, aby ste vedeli kde je ciara a ked ciaru |
stratite, tak aby ste vedeli, ze sa nachadzate napr. vlavo alebo vpravo od |
ciary. Najjednoduchsie je riesenie s dvomi snimacmi, ako som uz popisal hore. |
Ale tieto by nemali byt od seba vzdialene viac ako je sirka ciary, aby sa |
nestalo, ze obidvomi snimacmi idete ponad bielu podlahu a nebudete vediet, kde |
je ciara, ked bude medzi snimacmi. Ale mozete mat samozrejme aj viac snimacov |
a potom budete vediet, ako daleko je ciara napr. od stredu robota... |
<P> |
<HR> |
<LI><I>Je vhodne na detekciu prekazky pouzit IR snimac, alebo dotykovy snimac? |
Nestrati robot pri detekcii prekazky pri pouziti dotykoveho snimaca viac casu |
tym, ze musi prist az k nej a dotknut sa jej? V pripade pouzitia IR snimaca by |
robot prekazku zaregistroval skor a tiez by ju mohol zacat skor obchadzat?</I> |
<P>Samozrejme, ze pri pouziti bezdotykoveh snimaca (napr IR) vyzera aj |
spravanie sa robota "inteligentnejsie", ale dotykovy snimac je jednoduchsi. Je |
pravda aj to, ze ked prekazku zaregistruje skor, moze ju obist s mensou |
casovou stratou. No mozno sa hodi pouzit kombinaciu - aj IR aj dotykovy snimac |
na prekazku. |
<P>Tuto uvahu musite vyriesit sami. Mate teda pravdu, ze IR by mohlo byt |
lepsie, zalezi vsak velmi aj na algoritme obchadzania. |
<P> |
<HR> |
<LI><I>Bolo by mozne zvysit rychlost pohybu robota pouzitim vacsieho napajania |
krokovych motorcekov (z disketovej mechaniky)?</I> |
<P>Nie. Od velkosti napatia (prudu) zavisi moment krokoveho motora (KM), ale |
rychlost KM v ustalenom stave zavisi od frekvencie impulzov. Zvacsenim |
napajania je mozne docielit, ako som uz spominal, vacsi moment a teda aj |
lepsie zrychlenie, ale na druhej strane sa zvysi spotreba. |
<P>Ale musim vas upozornit, ze krokace maju iste fyzikalne obmedzenia a tak |
ani frekvenciu nemozete zvysovat lubovolne. Od istej hodnoty motor tzv. |
vypadava, t.j. nestiha reagovat na vsetky impulzy, teda "straca krok". |
<P> |
<HR> |
<LI><I>Musime si zakladnu dosku, do ktorej osadime mikropocitac vyrobit sami, |
alebo pravidla povoluju pouzitie kupenej dosky?</I> |
<P>Mozete si kupit skoro vsetko, vylucene je len kupit celeho robota hotoveho. |
Su (na zapade) aj take stavebnice.... |
<P>V sutazi ide najma o pouzity algoritmus (teda riadiaci program) a vhodnu |
volbu snimacov. |
<P> |
<HR> |
<LI><I>Stavam robotka na tu sutaz mobilnych robotov a mam taky napad pohanat |
ho nie krokovymi motormi, ale jednosmernymi motormi( z teslackych |
magnetofonov). Celkom vy to islo, prevod by som mal porieseny, ale neviem ako |
sa to da riadit. Mam pouzit krokove motory, alebo mozem aj tie jednosmerne? A |
ako sa daju riadit jednosmerne motory?</I> |
<P>S jednosmernými motormi môu by isté problémy, pretoe ich rýchlos v |
ustálenom stave (teda v stave kedy sa u rýchlos nemení) závisí okrem |
vstupného napätia aj od zaaenia. V dynamickom reime (teda pri rozbiehaní a |
brzdení) závisí priebeh rýchlosti tie napr. od hmotnosti robota. Keïe |
hmotnos robota ani zaaenie motora nevieme vhodne ovplyvòova, môeme motor |
riadi zmenou napájacieho napätia. |
<P>Pouitie jednosmerných motorov na pohon robota závisí do istej miery aj od |
koncepcie podvozku robota. Ak má by robot poháòaný tak, e sa vyaduje, aby |
boli rýchlosti rôznych motorov v elanom pomere, (napr. by boli poháòané 2 |
kolesá kadé vlastným motorom, smer zatáèania robota by bol potom odvodený od |
vzájomného pomeru rýchlostí jdnotlivých motorov), pouitie jednosmerných |
motorov by som neodporúèal, lebo by boli potrebné snímaèe rýchlostí a |
dostatoène rýchle regulátory obidvoch motorov. V tomto prípade je pouitie |
krokových motorov omnoho jednoduchie. |
<P>Ak by vak bol na pohon robota pouitý iba jeden motor a zatáèanie robota |
by bolo rieené nejako inak, potom by sa dal jednosmerný motor poui napr. |
tak, e by sa vstupným napätím nastavila vhodná rýchlos. Keïe by sa |
zaaenie motora poèas jazdy menilo iba minimálne (nerovnosti na trati), |
otáèky motora by sa tie menili iba v malom rozsahu. |
<P>A ako zmeni napájacie napätie motora? Najjednoduchím rieením je zapoji |
vhodný odpor (potenciometer) do série s motorom. "Krajím" rieením je napája |
motor írkovo modulovaným napätím. Na generovanie riadiaceho signálu pre |
írkovú moduláciu je moné vyui nejaký oscilátor, alebo riadiaci procesor, |
pokia¾ disponuje írkovou moduláciou alebo pulzným generátorom. Riadiaci |
signál bude potom vstupom do spínacieho tranzistora, alebo, ak je potrebná |
reverzácia otáèok motora, do H-mostu, cez ktorý bude motor napájaný. |
<P>Na záver: Ak sa rozhodnete poui jednosmerné motory namiesto krokových, |
zvolili ste si nároènejiu, nie vak neschodnú cestu. Zaèiatoèníkom by som |
vak odporuèil poui krokové motory. |
<P>Juraj Gacho <TT><gacho@nov1.kar.elf.stuba.sk></TT> |
<HR> |
</LI></UL><A name=hladame> |
<H2>H¾adáme odpovede:</H2></A> |
<UL> |
<P> |
<LI><I>Kde by som naiel schémy zapojení robotov do súae?</I> |
<HR> |
</LI></UL>Na otázky odpovedali pracovníci a doktoranti Katedry automatizácie FEI |
STU. |
<P><BR> |
<P align=center>[<A |
href="http://www.robotika.sk/contest/novinky.html">Novinky</A>] [<A |
href="http://www.robotika.sk/contest/pravidla.html">Pravidlá</A>] [<A |
href="http://www.robotika.sk/contest/roboti.html">Roboti</A>] [Poradòa] [<A |
href="http://www.robotika.sk/contest/archive/index.html">Archív</A>] |
<P><BR> |
<P> |
<HR width=500 SIZE=1> |
<P align=center><A href="http://www.kar.elf.stuba.sk/" target=_blank><IMG |
height=79 alt=KAR src="poradna_soubory/karlogo.gif" width=94 border=0></A> <A |
href="http://www.datalan.sk/" target=_blank><IMG height=79 alt=DATALAN |
src="poradna_soubory/datlogo3.gif" width=273 border=0></A> <A |
href="http://www.microstep-mis.sk/" target=_blank><IMG height=79 alt=MS-MIS |
src="poradna_soubory/mislogo.gif" width=173 border=0></A> |
<P><BR> |
<P> |
<HR> |
<P align=center><FONT size=-2>© 2002 Katedra automatizácie a regulácie FEI |
STU<BR>Ilkovièova 3, 812 19 Bratislava <BR>Posledná zmena: 12. októbra |
2002.<BR>Zodpovedný èlovek: <I><A href="mailto:balogh@elf.stuba.sk">Richard |
Balogh</A></I>. </FONT></P></BODY></HTML> |
/roboti/istrobot/callis/FAQ_soubory/poradna_soubory/datlogo3.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/poradna_soubory/istrobot.css |
---|
0,0 → 1,24 |
BODY { |
PADDING-RIGHT: 1ex; PADDING-LEFT: 1ex; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 1ex; MARGIN: 1ex; COLOR: black; PADDING-TOP: 1ex; FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif |
} |
A:link { |
FONT-WEIGHT: bold; COLOR: #ff8c1d; TEXT-DECORATION: none |
} |
A:visited { |
FONT-WEIGHT: bold; COLOR: #ff8c3d; TEXT-DECORATION: none |
} |
A:hover { |
FONT-WEIGHT: bold; COLOR: #ff8c2d; TEXT-DECORATION: underline |
} |
A:active { |
FONT-WEIGHT: bold; COLOR: #ff8c2d; TEXT-DECORATION: underline |
} |
H1 { |
FONT-WEIGHT: normal; FONT-SIZE: 3em; WIDTH: 80%; BORDER-BOTTOM: #ffd700 thin solid; FONT-STYLE: normal; FONT-VARIANT: normal |
} |
H2 { |
FONT-WEIGHT: normal; FONT-SIZE: 2em; WIDTH: 65%; COLOR: black; BORDER-BOTTOM: #ffd700 thin solid; FONT-STYLE: normal; FONT-VARIANT: normal |
} |
H3 { |
FONT-WEIGHT: normal; FONT-SIZE: 1.5em; WIDTH: 50%; COLOR: black; BORDER-BOTTOM: #ffd700 thin solid; FONT-STYLE: normal; FONT-VARIANT: normal |
} |
/roboti/istrobot/callis/FAQ_soubory/poradna_soubory/karlogo.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/FAQ_soubory/poradna_soubory/mislogo.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Firm0309.lgo |
---|
0,0 → 1,1026 |
S01300003F4C49425F56455253494F4E5F4C303046 |
S11380006DF16DF26DF36DF46DF56DF61B8779030B |
S1138010CC000D36AE00B6F0440818EE68BE0B0373 |
S113802040F07906828C6B86CC66790684406B8638 |
S1138030CC687906863C6B86CC6A79068D746B862F |
S1138040CC6C790690D26B86CC6E7906BDDE6B86DD |
S1138050CC706A0CBE106B0600006B86FD9018EEA7 |
S11380606A8ECC3718CCAC00464C7906CC006DF641 |
S11380707906CC065E003B9A0B877906CC005E003D |
S1138080823E7906CC005E0083C67906CC005E0091 |
S113809085EC7906CC005E008D0C7906CC005E0080 |
S11380A08F3A7906CC005E00BDC0FE026A8ECC37E2 |
S11380B0FC035A00823AAC0346621844FA061822BA |
S11380C0A406441C0C4E18666E6DCC00737D470CE0 |
S11380D00CD9E97F1C2943040C920C4A0A0440E0A1 |
S11380E0AA0644127906CC000CAD185509556F55F3 |
S11380F0CC665D5040087906CC047D6070706A0ED1 |
S1138100CC3347086A0ECC37AE014602FC016A0E36 |
S1138110CC64AE014602FC1F5A00823AAC04460EFF |
S11381207906CC005E008F2A18CC5A00823AAC0142 |
S113813047045A0081D46A0ECC37AE0146445E002F |
S11381403ED47906CC005E0083B67906CC005E008E |
S113815085DC7906CC005E008CF47906CC005E00E8 |
S1138160BC2C7906CC005E00BE0019666B86FD8AC5 |
S11381706B86FD88FE013ECC6B06FD905D60FC04C1 |
S113818040507906CC005E0083B67906CC005E00D0 |
S113819085DC7906CC005E008CF47906CC005E00A8 |
S11381A0BC2C7906CC005E00BE000D766DF6790617 |
S11381B0700C5E003CCC0B877906CC005E008D749D |
S11381C0687E460E6A0ECC36AE0146065E003ED48C |
S11381D0FC044066AC1F4660FE076DF67906700A23 |
S11381E05E003E9E0B8718EE6A8ECC4D6A8ECC4E96 |
S11381F06A8ECC4F6A8ECC506A8ECC516A8ECC5229 |
S11382007906CC005E0084406A0ECC33AE0146246D |
S113821019666DF6790600016DF66DF67906700B38 |
S11382205E003DE00B870B870B877906CC005E0070 |
S11382308D7440D4FC01400218CC5A0080666DF362 |
S11382406DF46DF518CC0D63AC0344280CCE1866A0 |
S11382500966093619556FE5003E0CCE18660966A5 |
S113826009366FE500440D3608CE96006EED004ADF |
S11382700A0C40D4FE016EBE0060FE7F68BE5E0044 |
S113828014980CE46D756D746D7354706DF26DF328 |
S11382906DF46DF58FF8183318BB0D64AB0345040A |
S11382A05A00835C0D4608BE96006E6A0038AA0325 |
S11382B04704AA04460E0CBE1866086E96105E00AB |
S11382C01946400C0CBE1866086E96105E0019C460 |
S11382D068FA0D4608BE96006E6D003B6EFD000107 |
S11382E00CBE1866096609466F65003E6FF500020C |
S11382F00CBE1866096609466F6500446FF50004F4 |
S11383000D4608BE96006E6D004A6EFD00060D76A1 |
S11383106DF60CBE1866086E96105E0014C00B87CE |
S11383200CEE46300CBE1866096609466F750002ED |
S11383306FE5003E0CBE1866096609466F750004B9 |
S11383406FE500440D4608BE96006E7D00066EED96 |
S1138350004A4002F3410A0B5A00829C6E4E0060B0 |
S113836046166A0ECC720A0E6A8ECC72AE014306B1 |
S1138370FE016ECE0060400618EE6A8ECC726E4E20 |
S1138380006247201A0E6ECE00624618FE4F6ECE73 |
S113839000506ECE00516ECE00526E4E0001707EC3 |
S11383A06ECE00017D4072700C3E8F086D756D7449 |
S11383B06D736D7254706DF46DF55E001A220CECE1 |
S11383C06D756D7454706DF26DF36DF46DF50D6330 |
S11383D0FD016EED00011844A40242540D36084E0E |
S11383E096000C4D100D100D100D100DCD4F6EEDAF |
S11383F000530D36084E9600FD4F6EED00500D36BD |
S1138400084E96006EED004D0C4E18660D35084D65 |
S113841095006E5C0053EC086EECCC74FD016EEDBF |
S1138420CC770966093619556FE500280A0440A877 |
S11384305E001A4A0CEA6D756D746D736D7254703A |
S11384406DF06DF16DF26DF36DF46DF51B870D61DB |
S11384508E2896000D6219330D36AE02B600430421 |
S11384605A0085C00D300910885390000D36091646 |
S11384706E6400500C4EEE3047140CBE100E100EFD |
S1138480100E100E0C4DEDCF14DE688E40180D3614 |
S113849009166E6D004DEDCF0CBE100E100E100EB1 |
S11384A0100E14ED688D0D3609166E640053737446 |
S11384B046045A00857A733447606E3ECC7446088D |
S11384C06E3ECC77AE01462A0C4EEE076DF6FE01E9 |
S11384D06DF60D368E0096205E001A4E0B870B87C4 |
S11384E018EE6EBECC776E3ECC74703E6EBECC740D |
S11384F040266E3ECC74703E6EBECC74FE076DF6A4 |
S1138500FE036DF60D368E0096205E001A4E0B8724 |
S11385100B877906006469A6405E6E3ECC744708FA |
S11385206E3ECC77AE01462A0C4EEE076DF6FE0287 |
S11385306DF60D368E0096205E001A4E0B870B8763 |
S113854018EE6EBECC776E3ECC74723E6EBECC74AA |
S113855040266E3ECC74723E6EBECC74FE076DF641 |
S1138560FE036DF60D368E0096205E001A4E0B87C4 |
S11385700B877906006469A6403E7364471EFE07B4 |
S11385806DF6FE036DF60D368E0096205E001A4ED3 |
S11385900B870B87FE016EBECC77401CFE076DF681 |
S11385A0FE046DF60D368E0096205E001A4E0B8783 |
S11385B00B87FE016EBECC770B030B825A008458E6 |
S11385C06E1E0001727E6E9E0001687E0B876D75C3 |
S11385D06D746D736D726D716D7054706DF46DF5B5 |
S11385E05E001AB40CEC6D756D7454706DF36DF41B |
S11385F06DF518DD6A8DCC806A8DCC8119556B853B |
S1138600CC7A6A8DCC820D646EED005CFE016ECE78 |
S113861000025E001ABA0CEB18EE6ECE00346ECE79 |
S113862000326ECE00316ECE00356ECE00636ECE5B |
S113863000640CBE6D756D746D7354706DF26DF3E2 |
S11386406DF46DF51B877905CC807D5071000D7537 |
S11386506DF50D64790630005E001FB60B870CEBD8 |
S11386606E7E0001731E473E6A0ECC7B731E463439 |
S11386706B06CC7A701E6B86CC7AFE016ECE00320D |
S11386806E4E005C0A0E6ECE005CAE07450618EE18 |
S11386906ECE005C7906301E5E001B326F46005EB3 |
S11386A06FC6001240106B06CC7A721E6B86CC7AB1 |
S11386B018EE6ECE00326E7E0001730E475E6A0EB7 |
S11386C0CC7B730E46546B06CC7A700E6B86CC7AD8 |
S11386D07906301E5E001B326F46005E6FC60012C4 |
S11386E06A0ECC7B731E47286E4E005CAE044708AE |
S11386F0AE054704AE0646180D4508ED9500FEFF8D |
S11387006EDE004C6E4E0001707E6ECE0001400A9B |
S11387106E4E0035710E6ECE0035402A6A0ECC7B4B |
S1138720730E47226B06CC7A720E6B86CC7AFE47A8 |
S11387306ECE00506ECE00516ECE00526E4E0001D1 |
S1138740707E6ECE00016E7E0001732E476E6A0E3F |
S1138750CC7B732E46646B06CC7A702E6B86CC7AF7 |
S11387607906301E5E001B326F46005E6FC6001233 |
S11387706A0ECC7B731E47286E4E005CAE0447081D |
S1138780AE054704AE0646180D4508ED9500FEF704 |
S11387906EDE004C6E4E0001707E6ECE0001401AFB |
S11387A0FE016ECE00316E4E005D0A0E6ECE005D8F |
S11387B0AE05450618EE6ECE005D402A6A0ECC7BEF |
S11387C0732E47226B06CC7A722E6B86CC7AFE47C8 |
S11387D06ECE00506ECE00516ECE00526E4E000131 |
S11387E0707E6ECE00016A0ECC80AE0147045A0042 |
S11387F08CDC790630185E001E4A7906CC817D60D7 |
S113880071006E4E006118666A0DCC8108DE960018 |
S11388101B06A6004604AE01473CA6004604AE0271 |
S1138820472CA6004604AE03471CA6004D30460460 |
S1138830AE04452AA6004E264604AE05422079061B |
S113884030185E001B62790630185E001B627906E0 |
S113885030185E001B62790630185E001B626E4E93 |
S11388600063AE01462A6A0ECC820A0E6A8ECC825E |
S1138870AE0A440A7906301A5E001B624012790679 |
S1138880301A5E001E4A18EE6ECE00636A8ECC82E9 |
S11388906E4E0034AE0146227906CC7C7D607100B8 |
S11388A06A0ECC7C470A790630075E001B624008DA |
S11388B0790630065E001B624008790630065E00C9 |
S11388C01B626F46005AAE2CB61A430A7906301B57 |
S11388D05E001E4A403C6F46005AAE9CB618430ADE |
S11388E07906301B5E001B624028FE016ECE0064D8 |
S11388F05E0027AC7906301B5E001B625E0027C851 |
S113890019665E00339A790600016FC600125A0098 |
S11389108CE86E4E0056AE0146206E4E0057460A55 |
S11389207906301C5E001B6240087906301D5E002B |
S11389301B6218EE6ECE005640107906301C5E00A5 |
S11389401E4A7906301D5E001E4A6F4600586B05AC |
S1138950CC841D56470E6B86CC84790630195E0094 |
S11389601B62400E6E4E00634608790630195E00A5 |
S11389701E4A790630095E001E4A7906300B5E00F5 |
S11389801E4A7906300D5E001E4A7906300E5E00DE |
S11389901E4A790630115E001E4A790630145E00C4 |
S11389A01E4A790630085E001E4A7906300A5E00C7 |
S11389B01E4A7906300C5E001E4A790630105E00AD |
S11389C01E4A7906300F5E001E4A790630135E0097 |
S11389D01E4A790630125E001E4A790630165E0081 |
S11389E01E4A790630155E001E4A6E4E0053737E91 |
S11389F04716733E470A790630105E001B62400832 |
S1138A007906300F5E001B626E4E0054737E47166B |
S1138A10733E470A790630135E001B6240087906EC |
S1138A2030125E001B626E4E0055737E4716733E15 |
S1138A30470A790630165E001B6240087906301535 |
S1138A405E001B626E4E004A4708790630095E00DC |
S1138A501B626E4E004B47087906300B5E001B62AA |
S1138A606E4E004C47087906300D5E001B62196695 |
S1138A706DF66E4E005D0B066DF6790630175E00DE |
S1138A801FF20B870B876E4E005CAE0046726A0EB7 |
S1138A90CC7E0A0E6A8ECC7EAE02436018EE6A8EDD |
S1138AA0CC7E7906CC7F7D6071006F46001079051D |
S1138AB0003C5F4E790500645F4A6DF66F46001016 |
S1138AC07905003C5F4C6D7509650D526A0ECC7FCB |
S1138AD04716790630046DF66DF27906301F5E0094 |
S1138AE01FF20B870B874014790630026DF66DF286 |
S1138AF07906301F5E001FF20B870B875A008CD655 |
S1138B00AE01464A790630085E001B626E4E003B99 |
S1138B10AEA04704AEC0461A790630036DF66F4620 |
S1138B2000446DF6790630015E001FF20B870B8757 |
S1138B304018790630026DF66F4600446DF67906EA |
S1138B4030015E001FF20B870B875A008CD6AE02F1 |
S1138B50464A7906300A5E001B626E4E003CAEA0A7 |
S1138B604704AEC0461A790630036DF66F460046D8 |
S1138B706DF6790630015E001FF20B870B874018F3 |
S1138B80790630026DF66F4600466DF679063001BF |
S1138B905E001FF20B870B875A008CD6AE03464A41 |
S1138BA07906300C5E001B626E4E003DAEA0470499 |
S1138BB0AEC0461A790630036DF66F4600486DF66E |
S1138BC0790630015E001FF20B870B874018790687 |
S1138BD030026DF66F4600486DF6790630015E008E |
S1138BE01FF20B870B875A008CD6AE04464A7906CF |
S1138BF0300E5E001B626E4E0053737E4720790672 |
S1138C0030026DF66E4E0053EE0718660B066DF6D5 |
S1138C10790630015E001FF20B870B874016790638 |
S1138C2030026DF619666DF6790630015E001FF2AA |
S1138C300B870B875A008CD6AE054648790630114F |
S1138C405E001B626E4E0054737E4720790630022C |
S1138C506DF66E4E0054EE0718660B066DF6790637 |
S1138C6030015E001FF20B870B8740167906300235 |
S1138C706DF619666DF6790630015E001FF20B87FA |
S1138C800B874052AE064648790630145E001B62DC |
S1138C906E4E0055737E4720790630026DF66E4E97 |
S1138CA00055EE0718660B066DF6790630015E0076 |
S1138CB01FF20B870B874016790630026DF6196692 |
S1138CC06DF6790630015E001FF20B870B874006B4 |
S1138CD018EE6ECE005C5E0027C814EB6E4E0002E8 |
S1138CE0727E6ECE00020CBE0B876D756D746D7353 |
S1138CF06D7254706DF46DF55E0027AC5E0027C88C |
S1138D005E0027F40CEC6D756D7454706DF46DF5A4 |
S1138D100D655E0029640CECFE016EDE00337906FD |
S1138D2023286FD6005A6E5E003746087906000F76 |
S1138D306FD6005E6F56005E6FD6001219666B86A2 |
S1138D40CC886A8ECC8AFE0A6A8ECC8B18EE6A8E28 |
S1138D50CC8C6EDE0036790600016DF6790640048F |
S1138D605E00299A0B87FE026EDE00030CCE6D7541 |
S1138D706D7454706DF16DF26DF36DF46DF51B87C8 |
S1138D801B870D756DF50D62790640005E0029F2B2 |
S1138D900B870CE96A0ECC8BAE0A4624697646082A |
S1138DA018EE6A8ECC8C40166A0ECC8C0A0E6A8E33 |
S1138DB0CC8C1A0EAE024306FE0B6A8ECC8B405C42 |
S1138DC0AE0B46266976462019666DF67906400391 |
S1138DD05E00299A0B8718EE6EAE0033FE0C6A8E85 |
S1138DE0CC8B18EE6A8ECC8C4032AE0D472CAE0C78 |
S1138DF0462A6976460818EE6A8ECC8C401C6A0EA8 |
S1138E00CC8C0A0E6A8ECC8C1A0EAE28430CFE0152 |
S1138E106EAE0036FE0D6A8ECC8B40006F26005E6F |
S1138E2047286F2600124622790600646FA60012B6 |
S1138E3019666DF6790640035E00299A0B8718EED1 |
S1138E406EAE0033FE016EAE00360D768E026DF608 |
S1138E50790640015E0029F20B870CE96F76000267 |
S1138E606B05CC8809656B85CC886A0ECC8A0A0EA2 |
S1138E706A8ECC8AAE20463E0D5619440D451933F0 |
S1138E807904ABD45F546A0CCC8A184419336DF658 |
S1138E906DF50D350D46790406185F540D530D64B8 |
S1138EA06D756D765F566FA6005A18EE6A8ECC8A81 |
S1138EB019666B86CC886E2E0003727E6EAE00033C |
S1138EC06F760002195519337904ABD45F54193302 |
S1138ED0790406185F58AE9CB618BD00B5004C283E |
S1138EE0790617705E003266FE306EAE00506EAECC |
S1138EF000516EAE0052FE146EAE00626E2E000182 |
S1138F00707E6EAE000140106E2E0057AE01460812 |
S1138F10790617705E0032500C9E0B870B876D75B7 |
S1138F206D746D736D726D7154706DF46DF55E00DA |
S1138F302A620CEC6D756D7454706DF16DF26DF305 |
S1138F406DF46DF50D63FD016EED00040CDE6DF640 |
S1138F500CDE6DF60D368E0696006DF60D368E041B |
S1138F6096005E0030D00B870B870B870CEA1966DE |
S1138F706FB600106A8ECCC06A8ECCC26A8ECCC327 |
S1138F807906FFFF6B86CD086E3E00571CDE46084F |
S1138F90790617705E0032506E3E0004727E6EBE1B |
S1138FA000046E3E003747045A0090C418EE6EBEAB |
S1138FB00057790617705E00326618EE6A8ECCC4CC |
S1138FC06EBE005D6EBE00616A8ECD0618CCAC200C |
S1138FD044100CCE1866096619556FE5CCC60A0C08 |
S1138FE040EC18CCAC03441A0D3608CE960018DDBC |
S1138FF06EED00380D3608CE96006EED003B0A0C7F |
S113900040E218CCAC0A444C1844A405442AFE0A95 |
S1139010504608CE96000D6118EE6E9ECC8E6E9E64 |
S1139020CE56FE1450460CCD1855095509561955FF |
S11390306FE5CDF20A0440D20CCE186609667905B4 |
S1139040CEE26FE5CDDE0CCE186618DD6EEDCEB047 |
S11390500A0C40B018CCAC2742200CCE1866096626 |
S11390607905CEBA08CD95006FE5CD220CCE1866F1 |
S1139070FDF66EEDCEBA0A0C40DCFC28AC5A421266 |
S11390800CCE186609667905CEE26FE5CD220A0C8E |
S113909040EA7906CEE26B86CDD8FDFF68ED0B067B |
S11390A06B86CDD8FD0168ED0B066B86CDD818DD37 |
S11390B068ED0B066B86CDD86B86CDDA7906E6B9FA |
S11390C06B86CDDC0CAE6D756D746D736D726D71E8 |
S11390D054706DF06DF16DF26DF36DF46DF58FD626 |
S11390E018DD6EFD00116EFD00146EFD00170D619C |
S11390F06E6D0031AD0147045A0091AC18EE6E9EBE |
S113910000316E9E003418AAAA0A443E6A0ECCC4EA |
S1139110FD0A50E508AD95006E5ECE56AE024714CA |
S11391206A0ECCC4FD0A50E508AD95006E5ECE56BD |
S1139130AE0346126A0ECCC4FD0A50E508AD950094 |
S1139140FE016EDECE560A0A40BE18AAAA034424C3 |
S11391500D1608AE96006E6D004D727D6EED004DDD |
S11391600D1608AE96006E6D004D706D6EED004DDF |
S11391700A0A40D86E1E0001707E6E9E00016E1EAB |
S1139180005D6A8ECCC418AAAA0A44200CAE1866E4 |
S113919009666A0DCCC4FC0A50D408AC9400094496 |
S11391A06F45CD726FE5CDDE0A0A40DC6E1E0035D8 |
S11391B06A0DCCC31CDE46045A0092806A8ECCC36E |
S11391C06E1E0034463C6A0ECCC4FD0A50E56E5E49 |
S11391D0CE56472C18EE6A8ECEB06A0ECCC4FD0A69 |
S11391E050E5FE026EDECE566A0ECCC4FD0A50E592 |
S11391F009556F56CD726B86CDDEFE016E9E00342E |
S1139200407E18EE6E9E003418AAAA0A443E6A0EE6 |
S1139210CCC4FD0A50E508AD95006E5ECE56AE0294 |
S113922047146A0ECCC4FD0A50E508AD95006E5E85 |
S1139230CE56AE0346126A0ECCC4FD0A50E508AD04 |
S11392409500FE016EDECE560A0A40BE18AAAA0395 |
S113925044240D1608AE96006E6D004D727D6EEDC1 |
S1139260004D0D1608AE96006E6D004D706D6EEDDE |
S1139270004D0A0A40D86E1E0001707E6E9E0001E9 |
S11392800D168E5896006DF60D768E185E003426F7 |
S11392900B876E7E001646045A00940E6F16005E0D |
S11392A06F9600120D768E186DF6FE106DF60D7623 |
S11392B08E1E5E0033B00B870B876E7A001AEAF7B6 |
S11392C0AA1046045A0093A8AAD246045A0093A8A6 |
S11392D0AA4546045A0093A8AA2546045A0093A80E |
S11392E0AA3546045A0093A8AA7146045A0093A8C2 |
S11392F0AA8146045A0093A8AA6146045A0093A876 |
S1139300AAC146045A0093A8AA1246045A0093A874 |
S1139310AAE146045A0093A8AA2146045A0093A835 |
S1139320AAF746045A0093A8AA22477CAA51477870 |
S1139330AA234774AA144770AA62476CAA524768C2 |
S1139340AAA44764AA324760AA42475CAA134758B2 |
S1139350AAD14754AA334750AAA1474CAA60474808 |
S1139360AA204744AA404740AA50473CAA7047381D |
S1139370AA154734AA654730AAB1472CAA914728B1 |
S1139380AA304724AA314720AA24471CAA344718E4 |
S1139390AA444714AA544710AA64470CAA8447084D |
S11393A0AA944704AA744662AAF74704AAD24608B4 |
S11393B0FE016EFE001140526A0ECCC16E7D001A91 |
S11393C01CDE47220CDE723D6EFD001A6A8ECCC193 |
S11393D0170E6A8ECD0CFE016A8ECD0B6EFE001147 |
S11393E06EFE00144024FE016EFE0014AA20470AFB |
S11393F0AAA447066A0ECD0A46106E7E001A723E73 |
S11394006EFE001AFE016EFE00115A0095B46E1E27 |
S11394100060AE0147045A0095B46A0ECCC00A0E2F |
S11394206A8ECCC0AE0A450618EE6A8ECCC06A0EAF |
S1139430CCC4FD0A50E56A0ECCC008ED95006E5E02 |
S1139440CE5646045A0095B46A0ECCC4FD0A50E5C3 |
S11394506A0ECCC008ED95006E5ECE56AE01460491 |
S11394605A0095B46A0ECCC4FD0A50E56A0ECCC00D |
S113947008ED95006E5ECE56AE0346266A0ECCC04D |
S11394801866096609166F65001446166A0ECCC480 |
S1139490FD0A50E56A0ECCC008ED9500FE026EDEB2 |
S11394A0CE566A0ECCC4FD0A50E56A0ECCC008ED57 |
S11394B095006E5ECE56AE0247045A0095B46A0E0D |
S11394C0CCC4FD0A50E56A0ECCC008ED95000955E0 |
S11394D06F55CD740CEC184409446F44CDDE1D5413 |
S11394E0447C0CED185509558DDE95CD69F569550B |
S11394F0685E6EFE001A697669650B0569E56E7E25 |
S1139500001AEE076EFE0013AE0543068EFA6EFED9 |
S11395100013FA016E7E001318660B060CAD185585 |
S11395201D564F2C0CAE186609766A0DCCC0095531 |
S11395306F55CDDE685C6EEC001A6A0ECCC01866FE |
S113954009666F65CDDE0B056FE5CDDE0A0A40C402 |
S1139550FE016EFE001118EE6EFE001440566A0EF7 |
S1139560CCC4FD0A50E56A0ECCC008ED9500FE019E |
S11395706EDECE5618EE6E9E003418AAAA0A443443 |
S11395806A0ECCC4FD0A50E508AD95006E5ECE5659 |
S1139590AE0247146A0ECCC4FD0A50E508AD95002E |
S11395A06E5ECE56AE034608FE016E9E0034FA0A85 |
S11395B00A0A40C86E7E0011AE0147045A00BBBEC1 |
S11395C018EE6A8ECD0A6EFE00116EFE00106A0E51 |
S11395D0CD09731E470A6E7E0010710E6EFE0010D8 |
S11395E06A0ECD09734E470A6E7E0010710E6EFE30 |
S11395F000106A0ECD09736E470A6E7E0010710E5C |
S11396006EFE00106B06CD087356470A6E7E00107E |
S1139610710E6EFE00106E7E0010470E6B06CD08B4 |
S11396200966700E6B86CD08400A6B06CD08096684 |
S11396306B86CD086E7E001A790400727905965502 |
S11396406C561CE647088CFE46F65A00BBBE6F44B7 |
S1139650968C59400010121314151720212223242C |
S11396602527303132333435374042434445505155 |
S113967052546061626465707172748182848590F1 |
S113968091929495A1A4B1B2C1D1D2E1F6F7BAE016 |
S1139690ADC0AA129700ACF0A80CBA6C99C2B9DCA0 |
S11396A0AD129C90B6CC9C1EBAF2BAD69C90B6521F |
S11396B09AB8A5F0B5209A52A57EA8DCA284B41C61 |
S11396C0B806A6F69A04B37AB746AB98A6A2A2B691 |
S11396D0B2D6AEA0ACB6A7A49BB8A0E2B23CAE3062 |
S11396E0ABC0ADFE99DA9A149FB8B1A0AB68AD34A3 |
S11396F0A998BB8EAD6AA21CAF50AABCA38899FAE4 |
S11397006E7E001B18660CE618EE6E7D001C08DEEB |
S11397109600EEF8E6010D664770FE656E9E0062E7 |
S11397206E7E001C733E4708FEFF6E9E0050401282 |
S1139730736E4708FEF76E9E00504006FE4F6E9E05 |
S113974000506E7E001C734E4708FEFF6E9E005153 |
S11397504012737E4708FEF76E9E00514006FE4F8E |
S11397606E9E00516E7E001C735E4708FEFF6E9E67 |
S1139770005240166E7E001D730E4708FEF76E9E63 |
S113978000524006FE4F6E9E00526E1E0001707E17 |
S11397906E9E00016E7E001B18660CE618EE6E7D50 |
S11397A0001C08DE96006B05CD1E1D5646045A00AB |
S11397B099BE6E7E001B18660CE618EE6E7D001CCA |
S11397C008DE9600F2046B86CD1E79040016790536 |
S11397D097E66D531D6347088CFE46F65A0099B808 |
S11397E06F4497FA5940000000010002000402008F |
S11397F00400080010002000400080009824993ADA |
S11398009878987698749872987099B099A899A055 |
S11398109812FE4F6E9E00506E9E00516E9E005236 |
S11398205A0099B8790600056DF679060D486DF66B |
S1139830790617735E00327C0B870B877906000567 |
S11398406DF67906000A6DF6790617735E00327CB0 |
S11398500B870B87790600146DF679060D486DF6B3 |
S1139860790617735E00327C0B870B875A0099B810 |
S11398701A021A021A021A0218AAAA0A443E6A0E04 |
S1139880CCC4FD0A50E508AD95006E5ECE56AE021E |
S113989047146A0ECCC4FD0A50E508AD95006E5E0F |
S11398A0CE56AE0346126A0ECCC4FD0A50E508AD8E |
S11398B09500FE016EDECE560A0A40BEFE4F6E9E35 |
S11398C000506E9E00516E9E00526E9E004D6E9E24 |
S11398D0004E6E9E004F6A82CCC46E92005D18AA40 |
S11398E0AA0A44200CAE186609666A0DCCC4FC0AA8 |
S11398F050D408AC940009446F45CD726FE5CDDEB9 |
S11399000A0A40DC6A0ECCC4FD0A50E56E5ECE56EF |
S11399104726FE016E9E00346A0ECCC4FD0A50E553 |
S1139920FE026EDECE566A0ECCC4FD0A50E5095521 |
S11399306F56CD726B86CDDE407E18EE6E9E00347F |
S113994018AAAA0A443E6A0ECCC4FD0A50E508AD22 |
S113995095006E5ECE56AE0247146A0ECCC4FD0A64 |
S113996050E508AD95006E5ECE56AE0346126A0E03 |
S1139970CCC4FD0A50E508AD9500FE016EDECE565E |
S11399800A0A40BEFE4F6E9E00506E9E00516E9EAF |
S113999000526E9E004D6E9E004E6E9E004F40180B |
S11399A0FE016A8ECD064010FE026A8ECD06400886 |
S11399B0FE036A8ECD06400018EE6A8ECCC15A00B2 |
S11399C0BBBE6E7E001B18666F96005E6F9600121B |
S11399D0FE016A8ECD0A5A00BBBE6E1E005B6A8E03 |
S11399E0CD0D6E1E005A6A8ECD0EFE036A8ECD0B0F |
S11399F0FE016A8ECD0A5A00BBBEFE016A8ECD0AF4 |
S1139A005A00BBBE19666F960012FE016A8ECD0A1B |
S1139A105A00BBBE6E7E001B737E471AEE7F18662B |
S1139A200B066A0DCCC0185509556F54CDDE196468 |
S1139A306FD4CDDE4018EE7F18661B066A0DCCC0CD |
S1139A40185509556F54CDDE09646FD4CDDE5A0024 |
S1139A50BBBE6E7E001B737E472E6E7E001C186696 |
S1139A60FD0709661A0D46FA6E7D001BED7F08DEC0 |
S1139A7096000B866A0DCCC0185509556F54CDDE7F |
S1139A8019646FD4CDDE402C6E7E001C1866FD0771 |
S1139A9009661A0D46FA6E7D001BED7F08DE9600FE |
S1139AA01B866A0DCCC0185509556F54CDDE096468 |
S1139AB06FD4CDDE5A00BBBE6E7E001BAE00466680 |
S1139AC06E7E001C186609666F66CCC60D664F383C |
S1139AD06E7E001C186609666F66CCC6AE00B601C1 |
S1139AE04C266A0ECCC018666E6DCEB00CEC1844D1 |
S1139AF00944094408DC94006E7E001C09666E6DFE |
S1139B00CCC76ECDCE88401C6A0ECCC018666E6D74 |
S1139B10CEB00CEC18440944094408DC940018EE57 |
S1139B206ECECE88406EAE0246206A0ECCC0186659 |
S1139B306E6DCEB00CEC18440944094408DC940062 |
S1139B406E7E001C6ECECE88404AAE04462A6A0E53 |
S1139B50CCC018666E6DCEB00CEC184409440944B0 |
S1139B6008DC94006E7E001C0B060D656B06CD08A8 |
S1139B705F4C6ECECE88401C6A0ECCC018666E6DEB |
S1139B80CEB00CEC18440944094408DC940018EEE7 |
S1139B906ECECE886A0ECCC018666E6DCEB00A0D3D |
S1139BA06EEDCEB01A0DAD04460A0CED1855FE0349 |
S1139BB06EDECEB05A00BBBE6A0ECCC018666E6DA7 |
S1139BC0CEB00CEC18440944094408DC94006E4EF1 |
S1139BD0CE8746286A0ECCC06E6DCEB01A0D6EEDDF |
S1139BE0CEB06E7E001B1B066A0DCCC018550955FD |
S1139BF06F54CDDE09646FD4CDDE401E6A0ECCC036 |
S1139C006E6DCEB00CEC18440944094408DC940091 |
S1139C106E4ECE871A0E6ECECE875A00BBBE6A0E2B |
S1139C20CCC018666E6DCEB00CEC184409440944DF |
S1139C3008DC94006E4ECE8746346A0ECCC06E6D3E |
S1139C40CEB01A0D6EEDCEB06E7E001C0CE618EE92 |
S1139C506E7D001B08DE96001B866A0DCCC018556D |
S1139C6009556F54CDDE09646FD4CDDE401E6A0EF3 |
S1139C70CCC06E6DCEB00CEC18440944094408DC29 |
S1139C8094006E4ECE871A0E6ECECE875A00BBBE9F |
S1139C906E7E001BEE3F7904001679059CB36C566A |
S1139CA01CE647088CFE46F65A009D8E6F449CBC09 |
S1139CB059400000010203090A0B0C0D0E0F9D848C |
S1139CC09D7E9D6A9D5A9D469D329D229D0E9CF6C9 |
S1139CD09CE49CD46E7E001D186609666F60CCC639 |
S1139CE05A009D8E6E7E001D1866096609166F6007 |
S1139CF000085A009D8E6E7E001E18660CE618EE53 |
S1139D006E7D001D08DE96000D605A009D8E6E7EED |
S1139D10001D0D1508ED95006E5D005318550D508E |
S1139D20406C6E7E001D1866096609166F6000445B |
S1139D30405C6E7E001D0D1508ED95006E5D0038CB |
S1139D4018550D5040486E7E001D0D1508ED950008 |
S1139D506E5D003B18550D5040346E7E001D186634 |
S1139D60096609166F60003E40246E7E001D0D15C5 |
S1139D7008ED95006E5D004A18550D5040106F10A7 |
S1139D800010400A6A0ECD0618660D6040006E7E13 |
S1139D90001C7904001479059DAE6C561CE6470836 |
S1139DA08CFE46F65A009E8E6F449DB659400001C3 |
S1139DB003090A0B0C0D0E0F9E829E789E629E4E26 |
S1139DC09E389E229E0E9DF69DE09DCC6E7E001FC9 |
S1139DD0186609666F65CCC66FF500025A009E8E40 |
S1139DE06E7E001F1866096609166F6500086FF518 |
S1139DF000025A009E8E6E7E001F0D1508ED950020 |
S1139E006E5D005318556FF500025A009E8E6E7EEB |
S1139E10001F1866096609166F6500446FF5000295 |
S1139E20406C6E7E001F0D1508ED95006E5D0038C8 |
S1139E3018556FF5000240566E7E001F0D1508ED93 |
S1139E4095006E5D003B18556FF5000240406E7E34 |
S1139E50001F1866096609166F65003E6FF500025B |
S1139E60402C6E7E001F0D1508ED95006E5D004AB6 |
S1139E7018556FF5000240166F1600106FF60002B9 |
S1139E80400C6A0ECD0618666FF60002400018EE0C |
S1139E906EFE00126E7E001B128E128EEE03EE0317 |
S1139EA0AE0046106F7600021D604F06FE016EFE86 |
S1139EB00012403CAE0146106F7600021D604C0655 |
S1139EC0FE016EFE00124028AE0246106F760002BC |
S1139ED01D604606FE016EFE00124014AE034610DD |
S1139EE06F7600021D604706FE016EFE0012400000 |
S1139EF06E7E001247326E7E001AAE8546146A0EDC |
S1139F00CCC0186609666F65CDDE0B056FE5CDDE46 |
S1139F1040126A0ECCC0186609666F65CDDE0B85EB |
S1139F206FE5CDDE5A009FB46E7E001AAE85462AD8 |
S1139F306A0ECCC0186609666F66CDDE686D6EFD6C |
S1139F4000200CDE18666A0DCCC0185509556F54F4 |
S1139F50CDDE09646FD4CDDE405A6A0ECCC01866DB |
S1139F6009666F66CDDE686D6EFD00206A0ECCC09A |
S1139F70186609666F65CDDE0B056FE5CDDE6A0EEA |
S1139F80CCC0186609666F66CDDE686D6EFD002173 |
S1139F900CDE18660CE618EE6E7D002008DE9600D6 |
S1139FA01B066A0DCCC0185509556F54CDDE0964E3 |
S1139FB06FD4CDDE5A00BBBE6E7E001CAE0A4504D3 |
S1139FC05A00A0BA6E7E001F18660CE618EE6E7D6D |
S1139FD0001E08DE96000D758D046DF56FF6000AFF |
S1139FE06DF66E7E00206DF6FE015E00BC760B877A |
S1139FF00B870B876EFE00150CEE47045A00A0A0D9 |
S113A0006A0ECCC4FD0A50E56E7E001C08ED950076 |
S113A01018EE6EDECE566E9E003418AAAA0A443498 |
S113A0206A0ECCC4FD0A50E508AD95006E5ECE56AE |
S113A030AE0247146A0ECCC4FD0A50E508AD950083 |
S113A0406E5ECE56AE034608FE016E9E0034FA0ADA |
S113A0500A0A40C86A0ECCC4FD0A50E56E7E001C94 |
S113A06008ED95006E7E001D6EDECC8E18EE6A8EB5 |
S113A070CD0DFE016A8ECCC219666DF66F760006B0 |
S113A0806DF6790617715E00327C0B870B87FE0133 |
S113A0906A8ECD1C6E7E001CCE806A8ECD1D40184B |
S113A0A0FE016A8ECD0D19666DF66DF6790617718F |
S113A0B05E00327C0B870B874018FE026A8ECD0D42 |
S113A0C019666DF66DF6790617715E00327C0B87A2 |
S113A0D00B87FE026A8ECD0BFE016A8ECD0A5A00F2 |
S113A0E0BBBE6E7E001CAE0845045A00A1F46E7E11 |
S113A0F0001F18660CE618EE6E7D001E08DE960042 |
S113A1000D758D046DF56FF6000A6DF66E7E0020F8 |
S113A1106DF6FE025E00BC760B870B870B876EFE26 |
S113A12000150CEE47045A00A1DA18EE6E9E0034B6 |
S113A13018AAAA0A44726A0ECCC4FD0A50E508ADF6 |
S113A14095006E5ECC8E6E7D001C186660D6166E11 |
S113A15047246A0ECCC4FD0A50E508AD95006E5E36 |
S113A160CE5647126A0ECCC4FD0A50E508AD9500E0 |
S113A170FE016EDECE566A0ECCC4FD0A50E508AD73 |
S113A18095006E5ECE56AE0247146A0ECCC4FD0A2C |
S113A19050E508AD95006E5ECE56AE034606FE0150 |
S113A1A06E9E00340A0A408A18EE6A8ECD0DFE01B6 |
S113A1B06A8ECCC219666DF66F7600066DF6790666 |
S113A1C017715E00327C0B870B87FE016A8ECD1CF3 |
S113A1D06E7E001C6A8ECD1D4018FE016A8ECD0D68 |
S113A1E019666DF66DF6790617715E00327C0B8781 |
S113A1F00B874018FE026A8ECD0D19666DF66DF65A |
S113A200790617715E00327C0B870B87FE026A8E1B |
S113A210CD0BFE016A8ECD0A5A00BBBE6E7E001BBA |
S113A220AE01465C6E7E001CAE0346546E7E001D7D |
S113A230AE05464C6E7E001EAE0746446E7E001F81 |
S113A240AE0B463C18EE6A8ECD0D6A0E094D6A8E31 |
S113A250CD0E18EE6A8ECD0FFE016A8ECD1018EE6B |
S113A2606A8ECD11FE036A8ECD1218EE6A8ECD135E |
S113A270FE096A8ECD146A8ECD0BFE016A8ECD0A5C |
S113A2805A00BBBE6E7E001BAE0146266E7E001CCD |
S113A290AE03461E6E7E001DAE0546166E7E001E83 |
S113A2A0AE07460E6E7E001FAE0B4606FE016E9E86 |
S113A2B000375A00BBBEFE016A8ECD0A6A0ECCC2BC |
S113A2C0AE0147045A00A3666E7E001C18660CE6B5 |
S113A2D018EE6E7D001B08DE96006FF6000E0D660C |
S113A2E0473C6A0ECD1C18666F75000E1D56462637 |
S113A2F06E7E001D6E7D001E1CDE461218EE6A8EF8 |
S113A300CD0D6A0ECD1C0A0E6A8ECD1C4006FE03CE |
S113A3106A8ECD0D400618EE6A8ECD0A404618EEC0 |
S113A3206A8ECD0D6A8ECCC26A0ECD1D737E471A1D |
S113A3306A0ECCC4FD0A50E56A0ECD1DEE7F08ED11 |
S113A3409500FE016EDECE5640086F160058FDF6ED |
S113A35068ED19666DF66DF6790617715E00327C4C |
S113A3600B870B874018FE066A8ECD0D19666DF6B5 |
S113A3706DF6790617715E00327C0B870B87FE023F |
S113A3806A8ECD0B5A00BBBE6E7E001B790400168C |
S113A3907905A3A96C561CE647088CFE46F65A00BC |
S113A3A0A5746F44A3B259400000010308090A0BC5 |
S113A3B00C0D0E0FA558A53AA516A4E6A4C0A49AA0 |
S113A3C0A468A450A42AA3F8A3CA6E7E001CAE20DD |
S113A3D04422186609666E6DCCC76A8DCD0D6E7EFB |
S113A3E0001C186609666E6DCCC66A8DCD0EFE0122 |
S113A3F06A8ECD0A5A00A5746E7E001CAE044426F3 |
S113A4001866096609166E6D00096A8DCD0D6E7E9B |
S113A410001C1866096609166E6D00086A8DCD0E5B |
S113A420FE016A8ECD0A5A00A5746E7E001CAE032E |
S113A430441A0D1508ED95006E5E00536A8ECD0D1D |
S113A44018EE6A8ECD0EFE016A8ECD0A5A00A574EE |
S113A4506A0ECCC46A8ECD0D18EE6A8ECD0EFE0146 |
S113A4606A8ECD0A5A00A5746E7E001CAE03442683 |
S113A4701866096609166E6D00456A8DCD0D6E7EEF |
S113A480001C1866096609166E6D00446A8DCD0EAF |
S113A490FE016A8ECD0A5A00A5746E7E001CAE03BE |
S113A4A0441A0D1508ED95006E5E00386A8ECD0DC8 |
S113A4B018EE6A8ECD0EFE016A8ECD0A5A00A5747E |
S113A4C06E7E001CAE03441A0D1508ED95006E5EF9 |
S113A4D0003B6A8ECD0D18EE6A8ECD0EFE016A8E9B |
S113A4E0CD0A5A00A5746E7E001CAE03442618667D |
S113A4F0096609166E6D003F6A8DCD0D6E7E001CD7 |
S113A5001866096609166E6D003E6A8DCD0EFE0151 |
S113A5106A8ECD0A405E6E7E001CAE03441A0D1591 |
S113A52008ED95006E5E004A6A8ECD0D18EE6A8EB7 |
S113A530CD0EFE016A8ECD0A403A6E7E001C461690 |
S113A5406E1E00116A8ECD0D6E1E00106A8ECD0E29 |
S113A550FE016A8ECD0A401C6E7E001C46146A0EF3 |
S113A560CD066A8ECD0D18EE6A8ECD0EFE016A8E72 |
S113A570CD0A4000FE036A8ECD0B5A00BBBE6E7E30 |
S113A580001BAE0A4466FE016A8ECD0A6A0ECCC474 |
S113A590FD0A50E56E7E001B08ED95006E5ECE56FA |
S113A5A0474A6A0ECCC4FD0A50E56E7E001B08EDD6 |
S113A5B09500FE026EDECE566E7E001B186609669E |
S113A5C06A0DCCC4FC0A50D46E7D001B08DC9400D8 |
S113A5D009446F45CD726FE5CDDE6E7E001B1866B3 |
S113A5E018DD6EEDCEB0FE016E9E00345A00BBBE87 |
S113A5F06E7E001BAE0A45045A00A69EFE016A8EBA |
S113A600CD0A6A0ECCC4FD0A50E56E7E001B08ED2F |
S113A61095006E5ECE5647466A0ECCC4FD0A50E5E0 |
S113A6206E7E001B08ED95006E5ECE56AE02471896 |
S113A6306A0ECCC4FD0A50E56E7E001B08ED950041 |
S113A6406E5ECE56AE0346166A0ECCC4FD0A50E5C5 |
S113A6506E7E001B08ED9500FE016EDECE5618EEF0 |
S113A6606E9E003418AAAA0A44346A0ECCC4FD0AA9 |
S113A67050E508AD95006E5ECE56AE0247146A0EE4 |
S113A680CCC4FD0A50E508AD95006E5ECE56AE030F |
S113A6904608FE016E9E0034FA0A0A0A40C85A00AF |
S113A6A0BBBE18EE6E9E0034FE016A8ECD0A18AA57 |
S113A6B0AA0A443E6A0ECCC4FD0A50E508AD9500D2 |
S113A6C06E5ECE56AE0247146A0ECCC4FD0A50E547 |
S113A6D008AD95006E5ECE56AE0346126A0ECCC42B |
S113A6E0FD0A50E508AD9500FE016EDECE560A0A5D |
S113A6F040BE5A00BBBE6E7E001BAE0A45045A0023 |
S113A700A7A0FE016A8ECD0A0D768E046DF6196639 |
S113A7106DF66E7E001F6DF6FE015E00BC760B8743 |
S113A7200B870B876E7E001B186609666F75000425 |
S113A7306FE5CDDE6E7E001B186609666A0DCCC41B |
S113A740FC1450D4094619556FE5CDF26A0ECCC4F9 |
S113A750FD0A50E56E7E001B08ED950018EE6EDED6 |
S113A760CE566E9E003418AAAA0A44346A0ECCC48B |
S113A770FD0A50E508AD95006E5ECE56AE02471454 |
S113A7806A0ECCC4FD0A50E508AD95006E5ECE5647 |
S113A790AE034608FE016E9E0034FA0A0A0A40C857 |
S113A7A05A00BBBE18AAAA0A44520D768E046DF64E |
S113A7B019666DF66DF2FE015E00BC760B870B87A1 |
S113A7C00B870CAE186609666F7500046FE5CDDE65 |
S113A7D06A0ECCC4FD1450E50CAE18660966096512 |
S113A7E019666FD6CDF26A0ECCC4FD0A50E508ADE9 |
S113A7F0950018EE6EDECE560A0A40AA18EE6E9E3A |
S113A8000034FE016A8ECD0A5A00BBBE6E7E001B68 |
S113A810AE0845045A00A8D818EE6E9E003418AA53 |
S113A820AA0A44726A0ECCC4FD0A50E508AD95002C |
S113A8306E5ECC8E6E7D001B186660D6166E472445 |
S113A8406A0ECCC4FD0A50E508AD95006E5ECE5686 |
S113A85047126A0ECCC4FD0A50E508AD9500FE010E |
S113A8606EDECE566A0ECCC4FD0A50E508AD9500E6 |
S113A8706E5ECE56AE0247146A0ECCC4FD0A50E595 |
S113A88008AD95006E5ECE56AE034606FE016E9E82 |
S113A89000340A0A408A0D768E046DF619666DF648 |
S113A8A06E7E001F6DF6FE025E00BC760B870B8782 |
S113A8B00B876A0ECCC41866FD0309661A0D46FAA6 |
S113A8C06E7D001B08DE960009666F66CD22FDF6DC |
S113A8D068EDFE016A8ECD0A5A00BBBE18EE6E9E6C |
S113A8E0003418AAAA0A44686A0ECCC4FD0A50E5CA |
S113A8F008AD95006E5ECC8E47246A0ECCC4FD0A6A |
S113A90050E508AD95006E5ECE5647126A0ECCC473 |
S113A910FD0A50E508AD9500FE016EDECE566A0EC6 |
S113A920CCC4FD0A50E508AD95006E5ECE56AE026D |
S113A93047146A0ECCC4FD0A50E508AD95006E5E5E |
S113A940CE56AE034606FE016E9E00340A0A4094BB |
S113A95018AAAA0844380D768E046DF619666DF6A9 |
S113A9606DF2FE025E00BC760B870B870B876A0EC6 |
S113A970CCC41866FD0309661A0D46FA08AE9600A3 |
S113A98009666F66CD22FDF668ED0A0A40C4FE0131 |
S113A9906A8ECD0A5A00BBBE6E7E001B730E471A28 |
S113A9A06E1E004DEE3F6E9E004D6E7E001BEEC08F |
S113A9B06E1D004D14ED6E9D004D6E7E001B731ECA |
S113A9C0471A6E1E004EEE3F6E9E004E6E7E001BBA |
S113A9D0EEC06E1D004E14ED6E9D004E6E7E001B8B |
S113A9E0732E471A6E1E004FEE3F6E9E004F6E7E12 |
S113A9F0001BEEC06E1D004F14ED6E9D004F6E1EC9 |
S113AA000001707E6E9E0001FE016A8ECD0A5A001E |
S113AA10BBBE6E7E001B730E472A736E470C6E1E00 |
S113AA20004D713E6E9E004D401A737E470C6E1EA3 |
S113AA30004D703E6E9E004D400A6E1E004D723EEB |
S113AA406E9E004D6E7E001B731E472A736E470C6C |
S113AA506E1E004E713E6E9E004E401A737E470C71 |
S113AA606E1E004E703E6E9E004E400A6E1E004EDC |
S113AA70723E6E9E004E6E7E001B732E472A736ECE |
S113AA80470C6E1E004F713E6E9E004F401A737E3F |
S113AA90470C6E1E004F703E6E9E004F400A6E1EA5 |
S113AAA0004F723E6E9E004F6E1E0001707E6E9EC1 |
S113AAB00001FE016A8ECD0A5A00BBBEFE016A8EF9 |
S113AAC0CD0A6E7E001CAE00460E6E7E001D18661A |
S113AAD009666E62CCC74028AE0246066E72001D3F |
S113AAE0401EAE0446146E7E001D18660B060D65EE |
S113AAF06B06CD085F4C0CE2400618EE6A8ECD0A58 |
S113AB006A0ECD0A475EA2074F02F2070C224C02DE |
S113AB1018226E7E001B730E47106E1E004DEEF859 |
S113AB206E9E004D142E6E9E004D6E7E001B731E95 |
S113AB3047106E1E004EEEF86E9E004E142E6E9E52 |
S113AB40004E6E7E001B732E47106E1E004FEEF8F3 |
S113AB506E9E004F142E6E9E004F6E1E0001707E7E |
S113AB606E9E00015A00BBBE6E7E001D18666DF617 |
S113AB706E7E001E0CE618EE6E7D001D08DE96004B |
S113AB806DF6790617735E00327C0B870B87FE0126 |
S113AB906A8ECD0A5A00BBBE6E7E001BAE06441CF4 |
S113ABA018666DF6790600FF6DF6790617725E0079 |
S113ABB0327C0B870B87FE016A8ECD0A5A00BBBE1E |
S113ABC06E7E001BAE0345045A00ACB2FE016A8ED1 |
S113ABD0CD0A6E7E001CAE0046246E7E001B0D1551 |
S113ABE008ED950018EE6EDE00386E7E001B0D1524 |
S113ABF008ED950018EE6EDE003B5A00AC9CAE01E9 |
S113AC0046226E7E001B0D1508ED9500FE016EDEDA |
S113AC1000386E7E001B0D1508ED9500FE206EDEDB |
S113AC20003B4078AE0246226E7E001B0D1508EDF7 |
S113AC309500FE026EDE00386E7E001B0D1508EDD9 |
S113AC409500FEA06EDE003B4052AE0346226E7EAF |
S113AC50001B0D1508ED9500FE036EDE00386E7EB8 |
S113AC60001B0D1508ED9500FE806EDE003B402CA8 |
S113AC70AE0446226E7E001B0D1508ED9500FE0401 |
S113AC806EDE00386E7E001B0D1508ED9500FEE0AB |
S113AC906EDE003B400618EE6A8ECD0A6E7E001B07 |
S113ACA018660966091619556FE5004418EE6E9E7C |
S113ACB000605A00BBBE6E7E001BAE03442EFE0134 |
S113ACC06A8ECD0A6E7E001B0D1508ED95006E7E12 |
S113ACD0001C6EDE003B6E7E001B186609660916BA |
S113ACE019556FE5004418EE6E9E00605A00BBBE15 |
S113ACF06E7E001BAE034416FE016A8ECD0A6E7E84 |
S113AD00001B18660966091619556FE500445A00B8 |
S113AD10BBBE6E7E001BAE044416FE016A8ECD0AD5 |
S113AD206E7E001B18660966091619556FE5000842 |
S113AD305A00BBBE6E7E001BAE18442A6E7E001CF9 |
S113AD40AE3C4422FE016A8ECD0A6E7E001BFD3CA1 |
S113AD5050E56E7E001C08ED95006F950010790695 |
S113AD6017745E00339A5A00BBBE6E7E001BAE0899 |
S113AD70444A6A0ECCC4FD1450E56A0ECCC0186671 |
S113AD80096609656A0ECCC0186609666F64CDDE73 |
S113AD906FD4CDF26A0ECCC0186609666A0DCCC4B5 |
S113ADA01855FC0309551A0C46FA6E7C001B08CD95 |
S113ADB0950009556F54CD226FE4CDDE5A00BBBE19 |
S113ADC06A0ECCC0186609666A0DCCC4FC1450D453 |
S113ADD06A0DCCC01855095509546F45CDF26FE57D |
S113ADE0CDDE6A0ECCC4FD1450E56A0ECCC01866E4 |
S113ADF00966096519666FD6CDF25A00BBBE6E7E30 |
S113AE00001BAE014226FE016A8ECD0A6E7E001B37 |
S113AE106E9E00576E7E001B470A790617705E000F |
S113AE2032504008790617705E0032665A00BBBE85 |
S113AE306E7E001BAE0046206E7E001CAE20440ECB |
S113AE40186609666F65CCC66FF50006400879067A |
S113AE50FFFF6FF600064024AE0246186E7E001D0A |
S113AE6018660CE618EE6E7D001C08DE96006FF680 |
S113AE70000640087906FFFF6FF600066F760006AD |
S113AE800D664D186F760006AE07B6004C0EFE0137 |
S113AE906A8ECD0A6E7E00076E9E005C5A00BBBEB1 |
S113AEA06E7E001BAE0046246E7E001CAE20441A4B |
S113AEB06A0ECCC01866096609166E7D001C18550A |
S113AEC009556F54CCC66FE40014406AAE024622A2 |
S113AED06A0ECCC01866096609166E7D001D1855E9 |
S113AEE00CD518DD6E7C001C08CD95006FE50014B0 |
S113AEF04044AE04462E6A0ECCC018660966091694 |
S113AF006E7D001D18550CD518DD6E7C001C08CD17 |
S113AF1095000B056DF66B06CD085F4C6D756FD60D |
S113AF20001440126A0ECCC0186609660916790529 |
S113AF3000016FE500146A0ECCC4FD0A50E56A0EE8 |
S113AF40CCC008ED9500FE036EDECE565A00BBBEA3 |
S113AF506E7E001BAE2045045A00B19C6E7E001C20 |
S113AF60790400187905AF7C6C561CE647088CFE02 |
S113AF7046F65A00B19C6F44AF8659400001020363 |
S113AF8004090A0B0C0D0E0FB17CB15EB132B1088D |
S113AF90B0DAB0ACB080B04CB01EAFF6AFCAAFA060 |
S113AFA06E7E001DAE20441E6E7E001B1866096670 |
S113AFB06E7D001D185509556F54CCC66FE4CCC680 |
S113AFC0FE016A8ECD0A5A00B19C6E7E001DAE044D |
S113AFD044206E7E001B186609666E7D001D1855A0 |
S113AFE0095509156F5400086FE4CCC6FE016A8E3A |
S113AFF0CD0A5A00B19C6E7E001B186609666E7DF0 |
S113B000001E18550CD518DD6E7C001D08CD95006A |
S113B0106FE5CCC6FE016A8ECD0A5A00B19C6E7EE5 |
S113B020001DAE0344226E7E001B186609666E7D09 |
S113B030001D0D1408DC94006E4C005318446FE49A |
S113B040CCC6FE016A8ECD0A5A00B19C6E7E001BEE |
S113B050186609666E7D001E18550CD518DD6E7CC9 |
S113B060001D08CD95000B056DF66B06CD085F4CF1 |
S113B0706D756FD6CCC6FE016A8ECD0A5A00B19C9E |
S113B0806E7E001DAE0344206E7E001B18660966AA |
S113B0906E7D001D1855095509156F5400446FE461 |
S113B0A0CCC6FE016A8ECD0A5A00B19C6E7E001D8C |
S113B0B0AE0344226E7E001B186609666E7D001D79 |
S113B0C00D1408DC94006E4C003818446FE4CCC6B0 |
S113B0D0FE016A8ECD0A5A00B19C6E7E001DAE033D |
S113B0E044226E7E001B186609666E7D001D0D14D9 |
S113B0F008DC94006E4C003B18446FE4CCC6FE019F |
S113B1006A8ECD0A5A00B19C6E7E001DAE034420A7 |
S113B1106E7E001B186609666E7D001D1855095564 |
S113B12009156F54003E6FE4CCC6FE016A8ECD0A49 |
S113B130406A6E7E001DAE0344226E7E001B1866BC |
S113B14009666E7D001D0D1408DC94006E4C004AE7 |
S113B15018446FE4CCC6FE016A8ECD0A403E6E7E72 |
S113B160001D46166E7E001B186609666F150010DA |
S113B1706FE5CCC6FE016A8ECD0A40206E7E001DAE |
S113B18046186E7E001B186609666A0DCD061855B2 |
S113B1906FE5CCC6FE016A8ECD0A40005A00BBBEE4 |
S113B1A06E7E001CAE0046466E7E001BAE20443C04 |
S113B1B06E7E001DAE2044346E7E001B1866096648 |
S113B1C08EC696CC69F60D65695477741EBB1E3322 |
S113B1D06E7D001D185509556F55CCC677751EBB7D |
S113B1E01E33095469E4FE016A8ECD0A404AAE0258 |
S113B1F046466E7E001BAE20443C186609668EC629 |
S113B20096CC69F66E7D001E18550CD518DD777541 |
S113B2101ECC1E446E7C001D1844193309450D6470 |
S113B2206DF6694377731EEE1E6609356D7669E522 |
S113B230FE016A8ECD0A40005A00BBBE6E7E001C21 |
S113B240AE0046466E7E001BAE20443C6E7E001D62 |
S113B250AE2044346E7E001B186609668EC696CCFA |
S113B26069F60D65695477741EBB1E336E7D001D2F |
S113B270185509556F55CCC677751EBB1E33195426 |
S113B28069E4FE016A8ECD0A4048AE0246446E7EF1 |
S113B290001BAE20443A186609668EC696CC69F641 |
S113B2A06E7D001E18550CD518DD6E7C001D08CD72 |
S113B2B0950077751ECC1E440D646DF66943777353 |
S113B2C01EEE1E6619536D7669E3FE016A8ECD0A81 |
S113B2D040005A00BBBE6E7E001CAE00464A6E7E25 |
S113B2E0001BAE2044406E7E001DAE20443818661C |
S113B2F009666F65CCC647286E7E001B1866096612 |
S113B3006E7D001D185509556F55CCC60D646F46EA |
S113B310CCC65F526FC6CCC6FE016A8ECD0A40060B |
S113B320FE016A8ECD0A404EAE02464A6E7E001B76 |
S113B330AE2044406E7E001D460E6E7E001E460802 |
S113B340FE016A8ECD0A402C6E7E001B18660966CB |
S113B3506E7D001E18550CD518DD6E7C001D08CDC1 |
S113B36095000D646F46CCC65F526FC6CCC6FE0115 |
S113B3706A8ECD0A40005A00BBBE6E7E001CAE0031 |
S113B380464C6E7E001BAE2044426E7E001DAE20F5 |
S113B390443A6E7E001B186609668EC696CC69F622 |
S113B3A00D65695477741EBB1E336DF60D466E7DB4 |
S113B3B0001F185509556F55CCC677751ECC1E4411 |
S113B3C05F4A6D7569D6FE016A8ECD0A404AAE02A7 |
S113B3D046466E7E001BAE20443C186609668EC647 |
S113B3E096CC69F66E7D001E18550CD518DD6E7C62 |
S113B3F0001D08CD950077751ECC1E440D646DF6B6 |
S113B400694377731EEE1E660D365F4A6D7569D605 |
S113B410FE016A8ECD0A40005A00BBBE6E7E001C3F |
S113B420AE0046766E7E001BAE20446A6E7E001D22 |
S113B430AE204462FE016A8ECD0A6E7E001D18663F |
S113B44009666F65CCC6460E6E7E001B18660966DB |
S113B45019556FE5CCC66E7E001D186609666F66C9 |
S113B460CCC60D664C106E7E001B18660966790505 |
S113B470FFFF6FE5CCC66E7E001D186609666F6619 |
S113B480CCC60D664F106E7E001B186609667905E2 |
S113B49000016FE5CCC65A00B51CAE02467E6E7E36 |
S113B4A0001BAE204474FE016A8ECD0A6E7E001E1F |
S113B4B018660CE618EE6E7D001D08DE9600460E3A |
S113B4C06E7E001B1866096619556FE5CCC66E7E44 |
S113B4D0001E18660CE618EE6E7D001D08DE960050 |
S113B4E00D664C106E7E001B186609667905FFFF19 |
S113B4F06FE5CCC66E7E001E18660CE618EE6E7DF7 |
S113B500001D08DE96000D664F106E7E001B186647 |
S113B5100966790500016FE5CCC640005A00BBBE40 |
S113B5206E7E001CAE0047045A00B5B26E7E001B4E |
S113B530AE20447A6E7E001DAE204472FE016A8EF7 |
S113B540CD0A6E7E001D186609666F66CCC60D6650 |
S113B5504C446E7E001D186609666F66CCC6AE004C |
S113B560B68046126E7E001B1866096679057FFF59 |
S113B5706FE5CCC6401E6E7E001B186609666E7DA4 |
S113B580001D185509556F55CCC6DDFFD5FF0B05B9 |
S113B5906FE5CCC640186E7E001B186609666E7D8A |
S113B5A0001D185509556F54CCC66FE4CCC65A001B |
S113B5B0B64EAE0247045A00B64E6E7E001BAE2055 |
S113B5C045045A00B64CFE016A8ECD0A6E7E001EFA |
S113B5D018660CE618EE6E7D001D08DE96000D66FA |
S113B5E04C4C6E7E001E18660CE618EE08DE9600C3 |
S113B5F0AE00B68046126E7E001B18660966790599 |
S113B6007FFF6FE5CCC640246E7E001B186609667A |
S113B6106E7D001E18550CD518DD6E7C001D08CDFE |
S113B6209500DDFFD5FF0B056FE5CCC6401E6E7E91 |
S113B630001B186609666E7D001E18550CD518DDB2 |
S113B6406E7C001D08CD95006FE5CCC640005A0005 |
S113B650BBBE6E7E001CAE0046346E7E001BAE2068 |
S113B660442A6E7E001DAE204422186609666F6669 |
S113B670CCC66E7D001B185509556F54CCC616EC0C |
S113B68016646FD4CCC6FE016A8ECD0A403AAE026F |
S113B69046366E7E001BAE20442C6E7E001E18665D |
S113B6A00CE618EE6E7D001D08DE96006E7D001B14 |
S113B6B0185509556F54CCC616EC16646FD4CCC615 |
S113B6C0FE016A8ECD0A40005A00BBBE6E7E001C8D |
S113B6D0AE0046346E7E001BAE20442A6E7E001DF2 |
S113B6E0AE204422186609666F66CCC66E7D001BC8 |
S113B6F0185509556F54CCC614EC14646FD4CCC6D9 |
S113B700FE016A8ECD0A403AAE0246366E7E001BBA |
S113B710AE20442C6E7E001E18660CE618EE6E7D7C |
S113B720001D08DE96006E7D001B185509556F54E8 |
S113B730CCC614EC14646FD4CCC6FE016A8ECD0A58 |
S113B74040005A00BBBE6E7E001C18660CE618EE64 |
S113B7506E7D001B08DE9600790500035F4A0D75B7 |
S113B7608D046DF56FF6000A6DF618EE6DF6FE03A6 |
S113B7705E00BC760B870B870B870CEE46726B065C |
S113B780CDD66B86CDD86B06CDD86B05CDDA1D56DC |
S113B790441018DD68ED6B06CDD80B066B86CDD84A |
S113B7A040E46B06CDD66B86CDD8FDFF68ED6B0605 |
S113B7B0CDD80B066B86CDD8FD0168ED6B06CDD8D0 |
S113B7C00B066B86CDD818DD68ED6B06CDD80B065D |
S113B7D06B86CDD818EE6A8ECD0D6F7600084708BB |
S113B7E0FE016E9E0061400618EE6E9E00614006EA |
S113B7F0FE016A8ECD0DFE016A8ECD0AFE026A8EAE |
S113B800CD0B5A00BBBE6B06CDD86B05CDDA1D56E9 |
S113B81045045A00B9C819666FF600066E7E001B0F |
S113B8201C6E46506E7E001CAE2044446B06CDD880 |
S113B8306E7D001C68ED6B06CDD80B066B86CDD8EB |
S113B8406E7D001C185509556E5CCCC768EC6B0600 |
S113B850CDD80B066B86CDD86E7D001C18550955C6 |
S113B8606E5CCCC668EC6B06CDD80B066B86CDD867 |
S113B8705A00B96CAE0146566E7E001CAE04444AB2 |
S113B8806B06CDD86E7D001C8D2068ED6B06CDD87F |
S113B8900B066B86CDD86E7D001C1855095509150D |
S113B8A06E5C000968EC6B06CDD80B066B86CDD8B0 |
S113B8B06E7D001C1855095509156E5C000868EC6E |
S113B8C06B06CDD80B066B86CDD85A00B96CAE0981 |
S113B8D046546E7E001CAE03444A6B06CDD86E7D82 |
S113B8E0001C8D4068ED6B06CDD80B066B86CDD859 |
S113B8F06E7D001C1855095509156E5C004568ECF1 |
S113B9006B06CDD80B066B86CDD86E7D001C185502 |
S113B910095509156E5C004468EC6B06CDD80B061E |
S113B9206B86CDD84046AE0E463A6E7E001C46323B |
S113B9306B06CDD8FD8068ED6B06CDD80B066B8603 |
S113B940CDD86E1D001168ED6B06CDD80B066B8645 |
S113B950CDD86E1D001068ED6B06CDD80B066B8636 |
S113B960CDD84008790600016FF600066F76000610 |
S113B9704654FE016A8ECD0A18EE6A8ECD0D6B0612 |
S113B980CDD66E6D00010A0D6EED0001460E6B06FC |
S113B990CDD66E6D00020A0D6EED00026B06CDD899 |
S113B9A06B05CDD61956790500055F4A6B05CDDACE |
S113B9B06B04CDD619455F526E9E00610CEE4606AF |
S113B9C0FE016E9E0061400AFE016A8ECD0D6A8EF4 |
S113B9D0CD0AFE026A8ECD0B5A00BBBE6E7E001CE1 |
S113B9E018660CE618EE6E7D001B08DE96007905DD |
S113B9F000035F4A6E7D001E18550CD518DD6E7C61 |
S113BA00001D08CD95006FF6000C0D567905000356 |
S113BA105F4A6F75000C09656FF6000A6B06CDD698 |
S113BA2009656B06CDDA1D6542346F76000A6DF642 |
S113BA306B06CDD66F75000E09566DF66A0ECD0CE9 |
S113BA40170E6DF6790617765E00343E0B870B876A |
S113BA500B87FE016E9E00566E9E0063400AFE0137 |
S113BA606A8ECD0D6A8ECD0A5A00BBBEFEF76A8E71 |
S113BA70CD0C6E7E001BAE00463E6E7E001CAE20DA |
S113BA804434186609666F66CCC60D664D286E7E12 |
S113BA90001C186609666F66CCC6AE00B6014C166B |
S113BAA06E7E001C186609666E6DCCC76A8DCD0D5E |
S113BAB0FE056A8ECD204014AE0246106E7E001C38 |
S113BAC06A8ECD0DFE056A8ECD204000FE026A8E80 |
S113BAD0CD0B5A00BBBE18EE6A8ECD065A00BBBE13 |
S113BAE06E7E001B6A8ECD06FE016E9E00565A00C5 |
S113BAF0BBBE6E7E001BAE0545045A00BB8CFE0126 |
S113BB006A8ECD0A6E7E001B6A0DCCC41CED477C88 |
S113BB1018EE6E9E003418AAAA0A443E6A0ECCC4DB |
S113BB20FD0A50E508AD95006E5ECE56AE02471490 |
S113BB306A0ECCC4FD0A50E508AD95006E5ECE5683 |
S113BB40AE0346126A0ECCC4FD0A50E508AD95005A |
S113BB50FE016EDECE560A0A40BE6E7E001B6E9E4D |
S113BB60005D6A8ECCC418AAAA0A44200CAE1866DA |
S113BB7009666A0DCCC4FC0A50D408AC940009448C |
S113BB806F45CD726FE5CDDE0A0A40DC40307906A0 |
S113BB9000BC6DF67906CD226DF66A0ECD0C170E3B |
S113BBA06DF6790617765E00343E0B870B870B879C |
S113BBB0FE016E9E005618EE6A8ECD0A40006E7E1F |
S113BBC00014470C6A0ECD0A4706FE056A8ECD2086 |
S113BBD06A0ECD20AE054632FE016E9E00566A0EF8 |
S113BBE0CD0B18666DF67906CD0C6DF618EE6DF674 |
S113BBF0790617755E00343E0B870B870B87AE4CB6 |
S113BC004706FE016A8ECD204004AE0146006E1E3A |
S113BC100004727E6E9E00046E7E00178F2A6D757E |
S113BC206D746D736D726D716D7054706DF36DF430 |
S113BC306DF56DF618CCAC0A44246A0ECCC4FD0A2A |
S113BC4050E508CD95008D5695CE0D53683EAE0255 |
S113BC504704AE034604FE0168BE0A0C40D8697668 |
S113BC6018DD6EED00345E0036360CE40B876D751E |
S113BC706D746D7354706DF06DF16DF26DF36DF460 |
S113BC806DF58FF66F70001AAE01461A6A0ECCC4B9 |
S113BC90FA0A50A66E7D001908DE8E280CEAFE0111 |
S113BCA06EFE0008402EAE02461A6A0ACCC4100A80 |
S113BCB0100A100A6E7E001908EA0B00FE016EFEDF |
S113BCC000084010AE03460C88039000FA5AFE02A6 |
S113BCD06EFE00086E7E0008186608AE96000966BF |
S113BCE06F65CD226B06CDDC6B04CDDA194609569F |
S113BCF06FF500040CAD185509556F54CD226FF43F |
S113BD00000219466FF600061D0644045A00BDAA37 |
S113BD106F7600040D656F76000219650D061956DD |
S113BD2069F60D664F2A6B03CDDA1B036B01CDDA7E |
S113BD3069761B0609610CAE186609666F66CD222A |
S113BD401D36420A683E689E1B031B0140E84024DE |
S113BD5069760D664C1E6F71000209016F73000451 |
S113BD606B06CDDA1D63440A683E689E0B010B0323 |
S113BD7040EE40006F76001C0CAD185509556F5409 |
S113BD80CD2269E40CA28201A25D441669760C2DD1 |
S113BD90185509556F54CD2209646FD4CD220A0277 |
S113BDA040E618EE6EFE00094006FE406EFE0009F5 |
S113BDB08F0A6D756D746D736D726D716D705470E5 |
S113BDC06DF46DF56DF65E0036920CEC6976FD014E |
S113BDD06EED00050CCE0B876D756D7454706DF4AB |
S113BDE06DF56DF65E0036A60CEC69766E6D000599 |
S113BDF0727D6EED00050CCE0B876D756D745470FD |
S113BE006DF46DF55E0036AA0CEC6D756D745470AE |
S113BE10446F20796F7520627974652C207768658A |
S113BE206E2049206B6E6F636B3F000000000000C2 |
S113BE3000000000000000000000000000000000FE |
S113BE4000000000000000000000000000000000EE |
S113BE5000000000000000000000000000000000DE |
S113BE6000000000000000000000000000000000CE |
S113BE7000000000000000000000000000000000BE |
S113BE8000000000000000000000000000000000AE |
S113BE90000000000000000000000000000000009E |
S113BEA0000000000000000000000000000000008E |
S113BEB0000000000000000000000000000000007E |
S113BEC0000000000000000000000000000000006E |
S113BED0000000000000000000000000000000005E |
S113BEE0000000000000000000000000000000004E |
S113BEF0000000000000000000000000000000003E |
S113BF00000000000000000000000000000000002D |
S113BF10000000000000000000000000000000001D |
S113BF20000000000000000000000000000000000D |
S113BF3000000000000000000000000000000000FD |
S113BF4000000000000000000000000000000000ED |
S113BF5000000000000000000000000000000000DD |
S113BF6000000000000000000000000000000000CD |
S113BF7000000000000000000000000000000000BD |
S113BF8000000000000000000000000000000000AD |
S113BF90000000000000000000000000000000009D |
S113BFA0000000000000000000000000000000008D |
S113BFB0000000000000000000000000000000007D |
S113BFC0000000000000000000000000000000006D |
S113BFD0000000000000000000000000000000005D |
S113BFE0000000000000000000000000000000004D |
S113BFF0000000000000000000000000000000003D |
S90380007C |
/roboti/istrobot/callis/Kopie (2) - callis_1.nqc |
---|
0,0 → 1,192 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 100 // Rozhodovaci uroven dalkoveho sensoru |
#define MLEFT OUT_C // Motory |
#define MRIGHT OUT_A |
#define RSENSOR SENSOR_1 // Sensory na caru |
#define LSENSOR SENSOR_3 |
#define BUMPER SENSOR_2 // Dalkovy sensor |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int derivace; // jak moc se bude zachovavat predesly smer |
void Straight() // rovne |
{ |
OnRev(MLEFT); |
OnFwd(MRIGHT); |
movement=S; |
} |
void Left() // doleva |
{ |
Off(MLEFT); |
OnFwd(MRIGHT); |
movement=L; |
} |
void Right() // doprava |
{ |
OnRev(MLEFT); |
Off(MRIGHT); |
movement=R; |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
// sensor na prekazku |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
movement=S; |
line=S; |
dira=0; |
start cara; |
start cihla; |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
} |
task cara() |
{ |
Straight(); |
while(true) |
{ |
if (THRESHOLD < RSENSOR) |
{ |
line=R; |
dira=0; |
switch(movement) |
{ |
case L: |
Right(); |
break; |
default: |
Straight(); |
}; |
} |
else |
if (THRESHOLD < LSENSOR) |
{ |
line=L; |
dira=0; |
switch(movement) |
{ |
case R: |
Left(); |
break; |
default: |
Straight(); |
}; |
} |
else |
{ |
if (20 < dira++) |
{ |
PlaySound (SOUND_FAST_UP); |
switch(movement) |
{ |
case L: |
line=R; |
Off(MLEFT); //couvej |
OnRev(MRIGHT); |
break; |
case R: |
line=L; |
OnFwd(MLEFT); // couvej |
Off(MRIGHT); |
break; |
}; |
Wait(50); |
Straight(); |
Wait(5); |
dira=0; |
}; |
switch(line) |
{ |
case L: |
Left(); |
break; |
case R: |
Right(); |
break; |
}; |
} |
} // while(true) |
} |
task cihla() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) |
{ |
PlaySound(SOUND_DOWN); |
stop cara; |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(5); |
OnRev(MLEFT); // do leva |
OnRev(MRIGHT); |
Wait(30); |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(5); |
OnRev(MLEFT); // rovne |
OnFwd(MRIGHT); |
Wait(70); |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(5); |
OnFwd(MLEFT); // do prava |
OnFwd(MRIGHT); |
Wait(25); |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(5); |
OnRev(MLEFT); // rovne |
OnFwd(MRIGHT); |
Wait(80); |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(5); |
OnFwd(MLEFT); // do prava |
OnFwd(MRIGHT); |
Wait(25); |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(5); |
OnRev(MLEFT); // rovne |
OnFwd(MRIGHT); |
Wait(60); |
OnRev(MLEFT); // do leva |
OnRev(MRIGHT); |
Wait(20); |
while(THRESHOLD > RSENSOR); // toc se dokud neni cara |
Off(MLEFT); // stop |
Off(MRIGHT); |
Wait(30); |
line=R; |
start cara; |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/Kopie (2) - callis_spravne motory.nqc |
---|
0,0 → 1,154 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 100 // Rozhodovaci uroven dalkoveho sensoru |
#define ML OUT_A // Motory |
#define MR OUT_C |
#define FL OnFwd(ML) // Vpred |
#define FR OnRev(MR) |
#define BL OnRev(ML) // Vzad |
#define BR OnFwd(MR) |
#define RSENSOR SENSOR_3 // Sensory na caru |
#define LSENSOR SENSOR_1 |
#define BUMPER SENSOR_2 // Dalkovy sensor |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
void Straight() // rovne |
{ |
FL; |
FR; |
movement=S; |
} |
void Left() // doleva |
{ |
Off(ML); |
FR; |
movement=L; |
} |
void Right() // doprava |
{ |
FL; |
Off(MR); |
movement=R; |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
// sensor na prekazku |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
SetPower (ML,OUT_FULL); // vykon motoru |
SetPower (MR,OUT_FULL); |
movement=S; |
line=S; |
dira=0; |
start cara; |
start cihla; |
} |
task cara() // sledovani cary |
{ |
Straight(); |
while(true) |
{ |
if (THRESHOLD < RSENSOR) // Cara vpravo |
{ |
line=R; // cara zrejme bude na druhe strane |
dira=0; // nuluj pocitadlo diry |
switch(movement) |
{ |
case L: |
Right(); |
break; |
default: |
Straight(); |
}; |
} |
else |
if (THRESHOLD < LSENSOR) // Cara vlevo |
{ |
line=L; // zaznamenej, kdes videl caru |
dira=0; // nuluj pocitadlo diry |
switch(movement) |
{ |
case R: |
Left(); |
break; |
default: |
Straight(); |
}; |
} |
else // sensory mimo caru |
{ |
if (20 < dira++) // nejedeme uz moc dlouho bez cary? |
{ |
PlaySound (SOUND_FAST_UP); |
switch(movement) |
{ |
case L: |
line=R; // cara zrejme bude na druhe strane |
Off(ML); //couvej |
BR; |
break; |
case R: |
line=L; // cara zrejme bude na druhe strane |
BL; // couvej |
Off(MR); |
break; |
}; |
Wait(50); // zpet, ale ne uplne a kousek rovne |
Straight(); |
Wait(5); |
dira=0; // myslime si, ze diru jsme vyresili |
}; |
switch(line) // kdyz nevidis caru, tak jed tam, kdes ji videl naposled |
{ |
case L: |
Left(); |
break; |
case R: |
Right(); |
break; |
}; |
} |
} // while(true) |
} |
task cihla() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) |
{ |
PlaySound(SOUND_DOWN); |
stop cara; |
Off(ML); // zatim pouze zastav |
Off(MR); |
Wait(300); |
start cara; |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/Kopie (3) - callis.nqc |
---|
0,0 → 1,153 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 100 // Rozhodovaci uroven dalkoveho sensoru |
#define MLEFT OUT_C // Motory |
#define MRIGHT OUT_A |
#define RSENSOR SENSOR_1 // Sensory na caru |
#define LSENSOR SENSOR_3 |
#define BUMPER SENSOR_2 // Dalkovy sensor |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int derivace; // jak moc se bude zachovavat predesly smer |
void Straight() // rovne |
{ |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
OnRev(MLEFT); |
OnFwd(MRIGHT); |
derivace=5; |
movement=S; |
} |
void Left() // doleva |
{ |
SetPower (MLEFT,OUT_LOW); |
SetPower (MRIGHT,OUT_FULL); |
Off(MLEFT); |
OnFwd(MRIGHT); |
derivace=3; |
movement=L; |
} |
void Right() // doprava |
{ |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_LOW); |
OnRev(MLEFT); |
Off(MRIGHT); |
derivace=3; |
movement=R; |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
// sensor na prekazku |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
movement=S; |
line=S; |
dira=0; |
// start cara; |
start cihla; |
Straight(); |
while(true) |
{ |
if (THRESHOLD < RSENSOR) |
{ |
line=R; |
dira=0; |
Right(); |
if (THRESHOLD < RSENSOR) |
{ |
while(THRESHOLD < RSENSOR); |
} |
else |
}; |
if (THRESHOLD < LSENSOR) |
{ |
if (L==movement) |
{ |
Straight(); |
} |
else |
{ |
line=L; |
dira=0; |
Left(); |
}; |
}; |
} |
} |
task cara() |
{ |
Left(); |
while(true) |
{ |
if (8 < dira++) |
{ |
PlaySound(SOUND_DOUBLE_BEEP); |
if (L==line) line=R; else line=L; |
Off(MLEFT); |
Off(MRIGHT); |
Wait(500); |
dira=0; |
}; |
switch(line) |
{ |
case S: |
break; |
case L: |
Left(); |
break; |
case R: |
Right(); |
break; |
}; |
// line=S; |
Wait(5); |
Straight(); |
Wait(5); |
} |
} |
task cihla() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) |
{ |
PlaySound(SOUND_FAST_UP); |
stop cara; |
Off(MLEFT); |
Off(MRIGHT); |
Wait(300); |
start cara; |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/Kopie - calis.nqc |
---|
0,0 → 1,118 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 150 // Rozhodovaci uroven dalkoveho sensoru |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_C |
#define MRIGHT OUT_A |
#define RSENSOR SENSOR_1 |
#define LSENSOR SENSOR_3 |
#define BUMPER SENSOR_2 |
#define L 0 |
#define R 1 |
#define S 2 |
int line; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na prekazku |
SetTxPower(TX_POWER_HI); // aby daleko videl |
// start cihla; |
// start cara; |
SetPower (MLEFT,OUT_HALF); |
SetPower (MRIGHT,OUT_HALF); |
OnRev(MLEFT); // rozjed se vpred |
OnFwd(MRIGHT); |
line=S; |
while(true) |
{ |
if (THRESHOLD < RSENSOR) |
{ |
line=R; |
SetPower (MRIGHT,OUT_LOW); |
OnRev(MLEFT); |
}; |
if (THRESHOLD < LSENSOR) |
{ |
line=L; |
SetPower (MLEFT,OUT_LOW); |
OnFwd(MRIGHT); |
}; |
if ((THRESHOLD > LSENSOR)&&(THRESHOLD > RSENSOR)) |
{ |
if(L==line) |
{ |
Off(MLEFT); |
OnFwd(MRIGHT); |
while(THRESHOLD > LSENSOR); |
while(THRESHOLD < LSENSOR); |
}; |
if(R==line) |
{ |
Off(MRIGHT); |
OnRev(MLEFT); |
while(THRESHOLD > RSENSOR); |
while(THRESHOLD < RSENSOR); |
}; |
line=S; |
SetPower (MLEFT,OUT_HALF); |
SetPower (MRIGHT,OUT_HALF); |
OnRev(MLEFT); // rozjed se vpred |
OnFwd(MRIGHT); |
} |
} |
} |
task cara() |
{ |
while(true) |
{ |
OnRev(MLEFT); // rozjed se vpred |
OnFwd(MRIGHT); |
if (THRESHOLD < RSENSOR) |
{ |
OnRev(MRIGHT); |
Wait(1); |
Off(MRIGHT); |
}; |
if (THRESHOLD < LSENSOR) |
{ |
OnFwd(MLEFT); |
Wait(1); |
Off(MLEFT); |
}; |
while((THRESHOLD < RSENSOR)||(THRESHOLD < LSENSOR)); |
} |
} |
task cihla() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) |
{ |
PlaySound(SOUND_FAST_UP); |
stop cara; |
Off(MLEFT); |
Off(MRIGHT); |
Wait(100); |
start cara; |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/Kopie - callis.nqc |
---|
0,0 → 1,139 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 100 // Rozhodovaci uroven dalkoveho sensoru |
#define MLEFT OUT_C // Motory |
#define MRIGHT OUT_A |
#define RSENSOR SENSOR_1 // Sensory na caru |
#define LSENSOR SENSOR_3 |
#define BUMPER SENSOR_2 // Dalkovy sensor |
#define L 0 // left |
#define R 1 // right |
#define S 2 // straight |
int movement; // smer minuleho pohybu |
int line; // na ktere strane byla detekovana cara |
int dira; // pocitadlo pro nalezeni preruseni cary |
int derivace; // jak moc se bude zachovavat predesly smer |
void Straight() // rovne |
{ |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
OnRev(MLEFT); |
OnFwd(MRIGHT); |
derivace=5; |
movement=S; |
} |
void Left() // doleva |
{ |
SetPower (MLEFT,OUT_LOW); |
SetPower (MRIGHT,OUT_FULL); |
Off(MLEFT); |
OnFwd(MRIGHT); |
derivace=5; |
movement=L; |
} |
void Right() // doprava |
{ |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_LOW); |
OnRev(MLEFT); |
Off(MRIGHT); |
derivace=5; |
movement=R; |
} |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(100); // 1s |
SetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravy |
SetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levy |
// sensor na prekazku |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
movement=S; |
line=S; |
dira=0; |
start cara; |
start cihla; |
while(true) |
{ |
if (THRESHOLD < RSENSOR) {line=R; dira=0;}; |
if (THRESHOLD < LSENSOR) {line=L; dira=0;}; |
} |
} |
task cara() |
{ |
Left(); |
while(true) |
{ |
switch(line) |
{ |
case S: |
if (3 < dira++) |
{ |
PlaySound(SOUND_DOUBLE_BEEP); |
}; |
break; |
case L: |
switch(movement) |
{ |
// case S: |
case R: |
Left(); |
break; |
case L: |
Right(); |
break; |
}; |
break; |
case R: |
switch(movement) |
{ |
// case S: |
case L: |
Right(); |
break; |
case R: |
Left(); |
break; |
}; |
break; |
}; |
line=S; |
Wait(10); |
} |
} |
task cihla() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) |
{ |
PlaySound(SOUND_FAST_UP); |
stop cara; |
Off(MLEFT); |
Off(MRIGHT); |
Wait(300); |
start cara; |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/Lego MindStorms Bumper1.htm |
---|
0,0 → 1,51 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0062)http://www.cs.uu.nl/people/markov/lego/tips/bumper1/index.html --> |
<HTML><HEAD><TITLE>Lego MindStorms: Bumper1</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"> |
<META content="MSHTML 6.00.2800.1226" name=GENERATOR></HEAD> |
<BODY background="Lego MindStorms Bumper1_soubory/back.jpg"> |
<TABLE> |
<TBODY> |
<TR vAlign=top> |
<TD> |
<P><IMG src="Lego MindStorms Bumper1_soubory/logo.gif"></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/index.html"><IMG |
height=58 alt=[Home] src="Lego MindStorms Bumper1_soubory/homeoff.gif" |
width=78 align=ABSCENTER border=0></A></P> |
<P><A |
href="http://www.cs.uu.nl/people/markov/lego/challenge/index.html"><IMG |
height=58 alt=[Challenge] |
src="Lego MindStorms Bumper1_soubory/challengeoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/rcxcc/index.html"><IMG |
height=58 alt=[RcxCC] src="Lego MindStorms Bumper1_soubory/rcxccoff.gif" |
width=78 align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/robots/index.html"><IMG |
height=58 alt=[Robots] src="Lego MindStorms Bumper1_soubory/robotsoff.gif" |
width=78 align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/tips/index.html"><IMG |
height=58 alt=[Tips] src="Lego MindStorms Bumper1_soubory/tipsoff.gif" |
width=78 align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/links/index.html"><IMG |
height=58 alt=[Links] src="Lego MindStorms Bumper1_soubory/linksoff.gif" |
width=78 align=ABSCENTER border=0></A></P></TD> |
<TD><IMG src="Lego MindStorms Bumper1_soubory/bumper1.jpg"> <FONT |
size=+4>Bumper Design</FONT> |
<P><IMG src="Lego MindStorms Bumper1_soubory/divide.gif"></P>Here is a |
design for a bumper. The advantages of this bumper are that it uses only |
one touch sensor and still covers the whole front of the robot. Moreover, |
the sensor is on when touched and off otherwise (contrary to many of the |
designs that come with MindStorms. This means you can multiplex it with |
other touch or light sensors on one input. It can be made from the pieces |
of the Robotic Invention System. Here are the instruction: |
<P><IMG src="Lego MindStorms Bumper1_soubory/step1.jpg"> <IMG |
src="Lego MindStorms Bumper1_soubory/step2.jpg"> |
<P><IMG src="Lego MindStorms Bumper1_soubory/step3.jpg"> <IMG |
src="Lego MindStorms Bumper1_soubory/step4.jpg"> |
<P><IMG src="Lego MindStorms Bumper1_soubory/step5.jpg"> <IMG |
src="Lego MindStorms Bumper1_soubory/step6.jpg"> |
<P><IMG src="Lego MindStorms Bumper1_soubory/step7.jpg"> <IMG |
src="Lego MindStorms Bumper1_soubory/step8.jpg"> |
<P><IMG src="Lego MindStorms Bumper1_soubory/divide.gif"></P>Comments to: |
<ADDRESS><A href="mailto:markov@cs.uu.nl" |
subject="MindStorms">markov@cs.uu.nl</A></ADDRESS></TD></TR></TBODY></TABLE></BODY></HTML> |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/Thumbs.db |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/back.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/bumper1.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/challengeoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/divide.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/homeoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/linksoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/logo.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/rcxccoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/robotsoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step1.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step2.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step3.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step4.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step5.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step6.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step7.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/step8.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Bumper1_soubory/tipsoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car.htm |
---|
0,0 → 1,57 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0068)http://www.cs.uu.nl/people/markov/lego/tips/Differential1/index.html --> |
<HTML><HEAD><TITLE>Lego MindStorms: Drive-Steer Car</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"> |
<META content="MSHTML 6.00.2800.1226" name=GENERATOR></HEAD> |
<BODY background="Lego MindStorms Drive-Steer Car_soubory/back.jpg"> |
<TABLE> |
<TBODY> |
<TR vAlign=top> |
<TD> |
<P><IMG src="Lego MindStorms Drive-Steer Car_soubory/logo.gif"></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/index.html"><IMG |
height=58 alt=[Home] |
src="Lego MindStorms Drive-Steer Car_soubory/homeoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A |
href="http://www.cs.uu.nl/people/markov/lego/challenge/index.html"><IMG |
height=58 alt=[Challenge] |
src="Lego MindStorms Drive-Steer Car_soubory/challengeoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/rcxcc/index.html"><IMG |
height=58 alt=[RcxCC] |
src="Lego MindStorms Drive-Steer Car_soubory/rcxccoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/robots/index.html"><IMG |
height=58 alt=[Robots] |
src="Lego MindStorms Drive-Steer Car_soubory/robotsoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/tips/index.html"><IMG |
height=58 alt=[Tips] |
src="Lego MindStorms Drive-Steer Car_soubory/tipsoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/links/index.html"><IMG |
height=58 alt=[Links] |
src="Lego MindStorms Drive-Steer Car_soubory/linksoff.gif" width=78 |
align=ABSCENTER border=0></A></P></TD> |
<TD><IMG src="Lego MindStorms Drive-Steer Car_soubory/final.jpg"> <FONT |
size=+4>Drive-Steer Car</FONT> |
<P><IMG src="Lego MindStorms Drive-Steer Car_soubory/divide.gif"></P>This |
mechanism is based on the adder-subtractors of <A |
href="http://carol.wins.uva.nl/~leo/lego/diff.html">Leo </A>and <A |
href="http://www.phred.org/~alex/lego/">Alex </A>. It must be driven by |
two motors; one connected to one of the four gears on one side, and the |
other connected to one of the three gears on the other side. One motor |
makes the wheels move in the same direction. The other sterrs by making |
the wheels move in opposite direction. My design is acccording to me |
stronger than the other ones. Here are some more pictures |
<P><IMG src="Lego MindStorms Drive-Steer Car_soubory/step1.jpg"> <IMG |
src="Lego MindStorms Drive-Steer Car_soubory/step2.jpg"> |
<P><IMG src="Lego MindStorms Drive-Steer Car_soubory/step3.jpg"> <IMG |
src="Lego MindStorms Drive-Steer Car_soubory/step4.jpg"> |
<P><IMG src="Lego MindStorms Drive-Steer Car_soubory/step5.jpg"> <IMG |
src="Lego MindStorms Drive-Steer Car_soubory/final.jpg"> |
<P><IMG |
src="Lego MindStorms Drive-Steer Car_soubory/divide.gif"></P>Comments to: |
<ADDRESS><A href="mailto:markov@cs.uu.nl" |
subject="MindStorms">markov@cs.uu.nl</A></ADDRESS></TD></TR></TBODY></TABLE></BODY></HTML> |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/Thumbs.db |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/back.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/challengeoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/divide.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/final.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/homeoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/linksoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/logo.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/rcxccoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/robotsoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/step1.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/step2.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/step3.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/step4.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/step5.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego MindStorms Drive-Steer Car_soubory/tipsoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks.htm |
---|
0,0 → 1,125 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0054)http://www.cs.uu.nl/people/markov/lego/tips/index.html --> |
<HTML><HEAD><TITLE>Lego Robots: Tips and Tricks</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"> |
<META content="MSHTML 6.00.2800.1226" name=GENERATOR></HEAD> |
<BODY background="Lego Robots Tips and Tricks_soubory/back.jpg"> |
<TABLE> |
<TBODY> |
<TR vAlign=top> |
<TD> |
<P><IMG src="Lego Robots Tips and Tricks_soubory/logo.gif"></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/index.html"><IMG |
height=58 alt=[Home] src="Lego Robots Tips and Tricks_soubory/homeoff.gif" |
width=78 align=ABSCENTER border=0></A></P> |
<P><A |
href="http://www.cs.uu.nl/people/markov/lego/challenge/index.html"><IMG |
height=58 alt=[Challenge] |
src="Lego Robots Tips and Tricks_soubory/challengeoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/rcxcc/index.html"><IMG |
height=58 alt=[RcxCC] |
src="Lego Robots Tips and Tricks_soubory/rcxccoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/robots/index.html"><IMG |
height=58 alt=[Robots] |
src="Lego Robots Tips and Tricks_soubory/robotsoff.gif" width=78 |
align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/tips/index.html"><IMG |
height=58 alt=[Tips] src="Lego Robots Tips and Tricks_soubory/tipson.gif" |
width=78 align=ABSCENTER border=0></A></P> |
<P><A href="http://www.cs.uu.nl/people/markov/lego/links/index.html"><IMG |
height=58 alt=[Links] |
src="Lego Robots Tips and Tricks_soubory/linksoff.gif" width=78 |
align=ABSCENTER border=0></A></P></TD> |
<TD><FONT size=+4>Lego Robots Tips and Tricks</FONT> |
<P><IMG src="Lego Robots Tips and Tricks_soubory/divide.gif"></P> |
<P> |
<H2>Sensors</H2> |
<H3>Putting light and touch sensors on one input</H3>It is easy to put |
touch and light sensors on one sensor input. In this case better set the |
sensor mode to raw. In nqc this can be done as follows: <PRE> SetSensor(SENSOR_2,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
</PRE>Now a value below 100 is a touch sensor event. Values above this |
correspond to light levels (the higher the darker). |
<H3>Using the IR port for proximity detection</H3>It turns out that the |
light sensor is very sensitive to the infra-red light produced by the the |
IR port on the robot. To uses this, mount the light sensor above the IR |
port, pointing forward. Now regularly send messages. When there is a wall |
close in front of the robot, you can notice this by high intensity changes |
in the reading of the light sensor (preferably in raw mode). The closer |
you get, the higher the fluctuations become. After a bit of tuning you can |
rather accurately predict the distance. Here is a simple <A |
href="http://www.cs.uu.nl/people/markov/lego/tips/ping.nqc">nqc |
program</A> to demonstrate how this works. Thanks to Dave Chen and Simen |
Svale Skogsrud for finding out about this. |
<H2>Design</H2> |
<H3>Front and back</H3>All designs that come with Lego MindStorms use the |
IR-port side of the RCX as the front. This is not a good idea because you |
normally add a lot of stuff at the front, making the IR-port almost |
invisible. Also, for balance reasons, it is good to put the motors under |
the middle of the RCX. Finally, if you use a swivelling wheel, put it at |
the back, not at the front. Pulling a swivelling wheel gives a much |
straighter motion than pushing it. |
<H3>Drive-Steer mechanism</H3> |
<P> |
<TABLE> |
<TBODY> |
<TR vAlign=top> |
<TD><IMG src="Lego Robots Tips and Tricks_soubory/step3.jpg"> </TD> |
<TD>This mechanism is based on the adder-subtractors of <A |
href="http://carol.wins.uva.nl/~leo/lego/diff.html">Leo </A>and <A |
href="http://www.phred.org/~alex/lego/">Alex </A>. It must be driven |
by two motors; one connected to one of the four gears on one side, |
and the other connected to one of the three gears on the other side. |
One motor makes the wheels move in the same direction. The other |
sterrs by making the wheels move in opposite direction. My design is |
acccording to me stronger than the other ones. More pictures can be |
found <A |
href="http://www.cs.uu.nl/people/markov/lego/tips/Differential1/index.html">here</A>. |
</TD></TR></TBODY></TABLE> |
<H3>Double motor power</H3> |
<P> |
<TABLE> |
<TBODY> |
<TR vAlign=top> |
<TD><IMG src="Lego Robots Tips and Tricks_soubory/twomotors.jpg"> |
</TD> |
<TD>If you need extra motor power, and you have enough motors, |
connect two together. You can out them both on the same output to |
drive them simultaneously. This is especially good for heavy robots |
or if you want your robots to go fast. I assume you can do the same |
with three or more motors, but I am not sure how many you can |
connect to one output. </TD></TR></TBODY></TABLE> |
<H3>Bumpers</H3> |
<P> |
<TABLE> |
<TBODY> |
<TR vAlign=top> |
<TD><IMG src="Lego Robots Tips and Tricks_soubory/bumper1.jpg"> </TD> |
<TD>Here is bumper I designed that uses only one touch sensor. |
Instructions for building it can be found <A |
href="http://www.cs.uu.nl/people/markov/lego/tips/bumper1/index.html">here</A>. |
</TD></TR></TBODY></TABLE> |
<H2>Internals</H2> |
<H3>Free memory</H3>After loading the firmware, it seems that there is |
about 6K of memory available for programs. You can use the <B>RCX Command |
Center</B> to free this memory when required. |
<H2>Programming with SPIRIT.OCX</H2> |
<H3>Using the joystick</H3>Here is an <A |
href="http://www.cs.uu.nl/people/markov/lego/tips/RCXJoystick.zip">example |
program</A> (in Delphi 3) of how you can use the joystick to steer the |
RCX. It comes with full source and is freeware. It is a simplified |
stand-alone version of the joystick window in my RCX Command Center |
version 2.0. |
<H3>Registering SPIRIT.OCX</H3>If you don't want to install the lego |
software on your system but still use programs like the <B>RCX Command |
Center</B> you must register the OCX. Copy the spirit.ocx file from the |
lego Cdrom to you harddisk and use the Run command in the windows Start |
menu to execute <PRE> REGSVR32.EXE spirit.ocx |
</PRE>This will register the ocx on your machine. (You might need to |
specify the path of the ocx in the above command.) |
<H3>Bugs</H3>There is a bug in the OCX: When polling the mode of a sensor |
(e.g. Poll(11,0)) you don't get the right mode but 32* the mode. |
<P>There is another bug in the polling command. Polling the watch gives |
you the total time in minutes, and not divided in hours and minutes as the |
doc suggests. </P></TD></TR></TBODY></TABLE></BODY></HTML> |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/Thumbs.db |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/back.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/bumper1.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/challengeoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/divide.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/homeoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/linksoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/logo.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/rcxccoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/robotsoff.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/step3.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/tipson.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Lego Robots Tips and Tricks_soubory/twomotors.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/ModelHobby2004.bak |
---|
0,0 → 1,118 |
// Robot na MiniSumo pro Model Hobby 2004 |
// $Archive: /Lego/ModelHobby2004.nqc $ |
// $Date: 2.10.04 0:44 $ |
// $Revision: 3 $ |
#define THRESHOLD 65 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 100 // Rozhodovaci uroven dalkoveho sensoru |
#define POHON OUT_A // Motory |
#define MULETA OUT_C |
#define VPRED OnFwd(POHON) |
#define VZAD OnRev(POHON) |
#define NAHORU OnRev(MULETA) |
#define DOLU OnFwd(MULETA) |
#define PREDNI SENSOR_1 // Sensory na okraj |
#define ZADNI SENSOR_3 |
#define BUMPER SENSOR_2 // Dalkovy sensor |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(400); // 5s podle pravidel - prvni prodleva procedury zapas |
SetSensor(PREDNI,SENSOR_LIGHT); // senzor na caru predni |
SetSensor(ZADNI,SENSOR_LIGHT); // senzor na caru zadni |
// sensor na prekazku |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
SetPower (POHON,OUT_FULL); // vykon motoru |
SetPower (MULETA,OUT_HALF); |
start radar; |
start zapas; |
start nevypadni; |
start toro; |
} |
task toro() |
{ |
int i=1; |
while(true) |
{ |
if (i++ & 1) {DOLU;} else {NAHORU;}; |
Wait(50); |
Off(MULETA); |
Wait(200); |
} |
} |
task zapas() |
{ |
Wait(100); |
while(true) |
{ |
VZAD; |
Wait(50); |
Off(POHON); |
Wait(100); |
VPRED; |
Wait(50); |
Off(POHON); |
Wait(100); |
Off(POHON); |
Wait(100); |
} |
} |
task nevypadni() |
{ |
while(true) |
{ |
if (THRESHOLD > PREDNI) // Cara vpredu |
{ |
stop zapas; |
stop radar; |
PlaySound (SOUND_FAST_UP); |
VZAD; |
Wait(50); |
start radar; |
start zapas; |
} |
else |
if (THRESHOLD > ZADNI) // Cara vzadu |
{ |
stop zapas; |
stop radar; |
PlaySound (SOUND_FAST_UP); |
VPRED; |
Wait(50); |
start radar; |
start zapas; |
} |
} // while(true) |
} |
task radar() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) // vidime robota? |
{ |
stop zapas; |
PlaySound(SOUND_DOWN); |
VPRED; |
Wait(50); |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/ModelHobby2004.nqc |
---|
0,0 → 1,118 |
// Robot na MiniSumo pro Model Hobby 2004 |
// $Archive: /Lego/ModelHobby2004.nqc $ |
// $Date: 2.10.04 10:45 $ |
// $Revision: 4 $ |
#define THRESHOLD 65 // rozhodovaci uroven mezi cernou a bilou |
#define FTHRESHOLD 100 // Rozhodovaci uroven dalkoveho sensoru |
#define POHON OUT_A // Motory |
#define MULETA OUT_C |
#define VPRED OnFwd(POHON) |
#define VZAD OnRev(POHON) |
#define NAHORU OnRev(MULETA) |
#define DOLU OnFwd(MULETA) |
#define PREDNI SENSOR_1 // Sensory na okraj |
#define ZADNI SENSOR_3 |
#define BUMPER SENSOR_2 // Dalkovy sensor |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(400); // 5s podle pravidel - prvni prodleva procedury zapas |
SetSensor(PREDNI,SENSOR_LIGHT); // senzor na caru predni |
SetSensor(ZADNI,SENSOR_LIGHT); // senzor na caru zadni |
// sensor na prekazku |
SetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
SetPower (POHON,OUT_FULL); // vykon motoru |
SetPower (MULETA,OUT_HALF); |
start radar; |
start zapas; |
start nevypadni; |
start toro; |
} |
task toro() |
{ |
int i=1; |
while(true) |
{ |
if (i++ & 1) {DOLU;} else {NAHORU;}; |
Wait(50); |
Off(MULETA); |
Wait(200); |
} |
} |
task zapas() |
{ |
Wait(100); // napodruhe pojedeme dele dozadu |
while(true) |
{ |
VZAD; // mateni telem |
Wait(50); |
Off(POHON); |
Wait(100); |
VPRED; |
Wait(50); |
Off(POHON); |
Wait(100); |
Off(POHON); |
Wait(100); |
} |
} |
task nevypadni() |
{ |
while(true) |
{ |
if (THRESHOLD > PREDNI) // Cara vpredu |
{ |
stop zapas; |
stop radar; |
PlaySound (SOUND_FAST_UP); |
VZAD; |
Wait(50); |
start radar; |
start zapas; |
} |
else |
if (THRESHOLD > ZADNI) // Cara vzadu |
{ |
stop zapas; |
stop radar; |
PlaySound (SOUND_FAST_UP); |
VPRED; |
Wait(50); |
start radar; |
start zapas; |
} |
} // while(true) |
} |
task radar() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > BUMPER) // vidime robota? |
{ |
stop zapas; |
PlaySound(SOUND_DOWN); |
VPRED; |
Wait(50); |
} |
lastlevel = BUMPER; |
lastlevel -= FTHRESHOLD; |
} |
} |
/roboti/istrobot/callis/NQC FAQ.htm |
---|
0,0 → 1,445 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0046)http://www.baumfamily.org/nqc_old/doc/faq.html --> |
<HTML><HEAD><TITLE>NQC FAQ</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"><!-- Copyright 1998 Dave Baum --> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD> |
<BODY bgColor=#ffffff> |
<H2>NQC FAQ</H2> |
<H3>General</H3> |
<UL> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#nqc">What is |
NQC?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#mindstorms">What |
is LEGO MINDSTORMS?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#RIS2">Does NQC |
support RIS 2.0?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#firmware">How can |
I get the RCX 2.0 firmware?</A> </LI></UL> |
<H3>NQC Compiler Usage</H3> |
<UL> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#dos">I'm using |
Windows, and when I click on NQC a window with some text flashes on the screen |
then disappears. What's going on?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#-Trcx2">I'm using |
the RCX 2.0 firmware but get errors when trying to call 2.0 functions (e.g. |
SetUserDisplay). What's wrong?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#errors">How can I |
redirect errors to a file?</A> |
<LI><A |
href="http://www.baumfamily.org/nqc_old/doc/faq.html#spiritinstall">Where is |
Spirit.ocx? RcxCC complains that it is not installed.</A> </LI></UL> |
<H3>IR Communication</H3> |
<UL> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#usb">How do I get |
NQC to work with my USB IR tower?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#control">How do I |
use a computer to control the RCX?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#irusb">How do I |
use the IR tower with a USB Macintosh?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#irdebug">Help, |
RcxCC/MacNQC/NQC can't communicate with my RCX!</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#irlaptop">How do I |
use my computer IR port with the RCX?</A> |
<LI><A href="file:///Users/dave/WebSite/nqc/doc/faq.html#irxp">How can I get |
the USB IR tower to work under Win XP?</A> </LI></UL> |
<H3>Miscellaneous</H3> |
<UL> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#spirit">Why |
doesn't NQC use the Spirit OCX?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#vision">Does NQC |
support Vision Command?</A> |
<LI><A href="http://www.baumfamily.org/nqc_old/doc/faq.html#build">What |
computers/tools/etc do you use to develop NQC?</A> </LI></UL> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=nqc></A>What is NQC?</H3> |
<P>NQC (Not Quite C) is a programming language for several LEGO MINDSTORMS |
products including the RCX, CyberMaster, and Scout. NQC's syntax is very similar |
to the C programming langauge, so experienced C programmers (and Java |
programmers) should find it very easy to get started with. Even if you aren't an |
experienced programmer, NQC is relatively easy to learn.</P> |
<P>The two primary reasons people move up to NQC from the standard tools (RCX |
Code and Robolab) is that NQC is a textual langauge, and it is more powerful. |
Graphical languages are often easier to learn (no syntax errors!) but are |
generally more tedious to use than a textual langauge. The graphical metaphors |
of RCX Code (and to a certain extent Robolab) also significantly limit the types |
of programs you can write.</P> |
<P>NQC uses the same firmware as LEGO's standard tools (RCX Code and Robolab). |
This means it is possible to have RCX Code, Robolab, and NQC programs loaded |
onto the RCX at the same time. NQC also benefits from the stability and user |
interface (e.g. the View button) provided by the standard firmware. On the minus |
side, NQC must live within the constraints of the standard firmware. For |
example, since the firmware does not provide floating point support, NQC cannot |
provide it either. Other altermatives for programming the RCX (notably legOS and |
pbForth) do not have such restrictions.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=mindstorms></A>What is LEGO MINDSTORMS?</H3> |
<P>LEGO MINDSTORMS is a series of LEGO sets that use special programmable bricks |
to allow construction of robots. The most versatile programmable brick is the |
RCX, which can be found in the Robotics Invention System set. A simpler brick, |
the Scout, can be found in the Robotics Discovery set. The simplest brick, Micro |
Scout, is featured in two sets with a Star Wars theme: Droid Developer Kit, and |
Dark Side Developer Kit. Even though it is the most expensive, the RCX based set |
is still the best value due to the versatility of the RCX itself. The Scout is a |
bit more limited, but still can be programmed (using NQC) to do some interesting |
things. The Micro-Scout is extremely limited, and it useful mainly as an |
accessory to another programmable brick such as the RCX or Scout. Further |
information on MINDSTORMS sets can be found at the official site: <A |
href="http://www.legomindstorms.com/" |
target=_blank>http://www.legomindstorms.com/</A>.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=RIS2></A>Does NQC Support RIS 2.0?</H3> |
<P>The RCX in the RIS 2.0 is nearly identical to the 1.0 RCX. However, new |
firmware is used to give the RCX some new capabilities. Fortunately for existing |
RCX owners, this firmware is available for download from www.legomindstorms.com |
(as part of the RIS 2.0 SDK). NQC supports this new firmware (see <A |
href="http://www.baumfamily.org/nqc_old/doc/faq.html#-Trcx2">here for more |
info</A>).</P> |
<P>RIS 2.0 also uses a new IR tower with a USB connection (instead of the |
eariler RS-232 based towers). Support for the USB tower under Windows and Mac OS |
X is currently in <A |
href="http://www.baumfamily.org/nqc_old/beta/index.html">beta test</A>. Support |
for Mac OS 9 will be added shortly and several other people are working on Linux |
support.</P> |
<H3> |
<HR align=left> |
<A name=firmware></A>How can I get the RCX 2.0 firmware?</H3> |
<P>The RCX 2.0 firmware is contained in a file named FIRM0328.LGO and is |
installed on your PC when you install the standard LEGO software. It is also |
installed as part of the Vision Command software and the 2.0 SDK.</P> |
<P>Unfortunately, all previously mentioned sources for the firmware require |
software to be installed on a Windows computer. If you are using a different |
operating system, then you will need to download the earlier Beta version of the |
2.0 SDK which was packaged as a .zip file rather than a full installer. This |
.zip file may then be expanded to get the FIRM0328.LGO file. The SDK 2.0 Beta |
can be found at <A href="http://mindstorms.lego.com/sdk2beta/default.asp" |
target=_blank>http://mindstorms.lego.com/sdk2beta/default.asp</A>.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=dos></A>I'm using Windows, and when I click on NQC a window with |
some text flashes on the screen then disappears. What's going on?</H3> |
<P>NQC is a command line based tool - normally you run it by typing an |
appropriate command into an MS-DOS window. When you double-click the exe file it |
launches an MS-DOS console, runs NQC within it, then since NQC finishes almost |
immediately, the entire window disappears.</P> |
<P>Some people prefer command line based tools because they allow you to use the |
text editor of your choice, etc. It also makes for identical behavior under |
Windows, Mac, and Linux. In order to use the command line version of NQC you'll |
need to do two things:</P> |
<P>1) Use some sort of text editor (such as Notepad) to edit and save a source |
file for NQC to compile.</P> |
<P>2) From an MS-DOS window type the appropriate NQC command. Its usually best |
to either put all of your programs and nqc.exe in the same directory, or make |
sure the directory containing NQC is in your command path. For example, to |
compile and download the program "test.nqc" using the default serial port you |
would type the following command:</P> |
<P>nqc -d test.nqc</P> |
<P>An alternative is to use the <A href="http://www.cs.uu.nl/~markov/lego/" |
target=_parent>RCX Command Center</A> by Mark Overmars, which is a familiar |
Windows style application that provides a front end to the NQC compiler.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=-Trcx2></A>I'm using the RCX 2.0 firmware but get errors when trying |
to call 2.0 functions (e.g. SetUserDisplay). What's wrong?</H3> |
<P>When NQC compiles a program it needs to know what kind of programmable brick |
you want it to generate code for (this is called the <I>target</I> for the |
compile). By default, NQC assumes you are targetting RCX 1.0. If you want to use |
RCX 2.0 features, you need to tell the compiler you are using an RCX 2.0 target. |
If you are using a command line version of NQC, then add <TT>-Trcx2</TT> to the |
command line:</P> |
<P><TT>nqc -Trcx2 -d foo.nqc</TT></P> |
<P>If you don't want to type <TT>-Trcx2</TT> all the time, then just use the |
environment variable <TT>NQC_OPTIONS</TT> - NQC reads this environment variable |
and inserts any options in this variable at the front of the command line. For |
example, if <TT>NQC_OPTIONS</TT> was set to <TT>-Trcx2</TT> and you issued the |
following command</P> |
<P><TT>nqc -d foo.nqc</TT></P> |
<P>NQC would behave as if you actually typed</P> |
<P><TT>nqc -Trcx2 -d foo.nqc</TT></P> |
<P>The specifics of setting environment variables depends on your operating |
system and shell. For example, under Windows you could type the following in a |
command shell:</P> |
<P><TT>set NQC_OPTIONS=-Trcx2</TT></P> |
<P>If you want to always use RCX 2.0, then you can make this setting permament |
by editing the AUTOEXEC.BAT file and adding the above command to the end of the |
file. This way, the variable will get set every time Windows is started.</P> |
<P>If you are using a GUI based version of NQC (such as MacNQC), then there |
should be some preference setting for the target - just make sure it is set to |
"RCX 2.0". Unfortunately, RcxCC does not have an "RCX 2.0" setting, but there is |
a workaround. Leave the target as "RCX" (which means RcxCC won't specify any |
target information and just rely on the fact that NQC defaults to RCX), then use |
the <TT>NQC_OPTIONS</TT> environment variable to specify RCX 2.0 (as described |
above).</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=errors></A>How can I redirect errors to a file?</H3> |
<P>Compile errors are written to stderr, not stdout. This is to allow the |
calling program to separate errors from the program listing (-l option) that |
appears on stdout. The normal redirection facility of a shell only redirects |
stdout, thus the errors will still be printed to the screen. Most shells have |
additional syntax that allows the stderr stream to be redirected (use |
"option->" in MPW, or "2>" for WinNT). I do not know of any mechanism to |
redirect stderr in Win95 command.com.</P> |
<P>In addition, nqcc now supports (verion 1.1 b1) the ability to route error |
messages to stdout with the -E option.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=spiritinstall></A>Where is Spirit.ocx? RcxCC complains that it is |
not installed.</H3> |
<P>NQC has never used Spirit.ocx, but RcxCC used to require Spirit.ocx for |
communication with the RCX. Lego no longer supports Spirit.ocx as of RIS 2.0, |
but fortunately RcxCC has been updated to no longer require it. In addition, |
RcxCC has been renamed to BricxCC (due to trademark concerns from Lego). You can |
download the latest version of BricxCC <A |
href="http://members.aol.com/johnbinder/bricxcc.htm" target=_blank>here</A>.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=usb></A>How do I get NQC to work with my USB IR tower?</H3> |
<P>Presently, USB towers are only supported under Mac OS X and Windows. I will |
be releasing Mac OS 9 support shortly. Some other developers are working on a |
Linux solution.</P> |
<P>USB support is in beta test and requires version 2.4a4 of NQC.</P> |
<P><B>IMPORTANT</B>- you need to tell NQC that you want it to look for a USB |
tower, otherwise it assumes you have a serial tower and uses the default serial |
port for your operating system (e.g. COM1 under Windows). Add <TT>-Susb</TT> to |
the command line or set the <TT>RCX_PORT</TT> environment variable to |
<TT>usb</TT>. When adding a command line option, put it near the beginning of |
the command:</P> |
<P><TT>nqc -Susb -d test.nqc</TT></P> |
<P><B>Windows only:</B> NQC uses the USB driver installed by the Lego RIS 2.0 |
software, so you will need to install the RIS software and run it once with the |
USB tower connected in order for the driver to be correctly installed.</P> |
<P><B>Mac OS X only:</B> NQC talks directly to the USB tower. There is no |
driver, so you'll never see the tower show up in /dev.<BR></P> |
<P><SPAN style="FONT-WEIGHT: bold">FreeBSD (unoffical port):</SPAN> As of NQC |
2.5 a5, the USB tower is supported when running a FreeBSD build from 02/28/03 or |
later (the upcoming FreeBSD 5.1 will work).<BR></P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=control></A>How do I use a computer to control the RCX?</H3> |
<P>There are two basic ways to do this: send raw commands to the RCX, or send |
'messages' which are then listened to by a program running on the RCX.</P> |
<H4>Sending Messages</H4> |
<P>This is generally the simplest way to interact with the RCX. First you write |
a program for the RCX that continuously checks for received messages (using the |
Message() and ClearMessage() calls) and then dispatches the messages |
accordingly. The messages may have any value between 1 and 255. There is no |
predefined meaning for these messages - your program can do whatever it wants |
with each message.</P> |
<P>There are several ways to send the message. You can use another RCX (or a |
Scout) by calling the SendMessage() function. You can also use the nqc command |
with the -msg option, for example to send message #3:</P> |
<P>nqc -msg 3</P> |
<P>You can use the LEGO remote control to send messages 1, 2, or 3. It is also |
possible to send the message by sending the appropriate command packet (see |
below)</P> |
<H4>Sending Raw Commands</H4> |
<P>Sending raw commands gives you complete control over the RCX. The commands |
(a.k.a. opcodes or bytecodes) and the general packet format are unofficially |
documented at <A href="http://graphics.stanford.edu/~kekoa/rcx/" |
target=_parent>http://graphics.stanford.edu/~kekoa/rcx/</A>. For example, to |
make the RCX play system sound #3 (upward tones), you would send a two-byte |
command (shown in hex):</P> |
<P>51 03</P> |
<P>Messages are just a specific type of command - F7 followed by the message |
value, so message #4 would be the packet</P> |
<P>F7 04</P> |
<P>If you are using NQC, you can let NQC take care of all the details of packet |
formatting, getting an acknowledgement from the RCX, and retrying if a failure |
occurs. You do this with the -raw option, which takes a single parameter listing |
all of the bytes (in hex format) for the command:</P> |
<P>nqc -raw 5103</P> |
<P>If you are writing your own program, you can build up the packet yourself. A |
suitable packet (for the plays sound command) would be:</P> |
<P>55 ff 00 51 ae 03 fc 54 ab</P> |
<H3> |
<HR align=left> |
<A name=irusb></A>How do I use the IR tower with a USB Macintosh?</H3> |
<P>Since a USB version of the IR tower doesn't exist (yet), you will need a USB |
to serial converter (such as the Keyspan TWIN adapter). If the adapter provides |
a 9-pin serial connector, then you should be able to use the standard Mindstorms |
cable between the adapter and the IR tower. If the adapter provides mac-style |
serial connector, then you will also need an appropriate cable as desribed <A |
href="http://www.baumfamily.org/lego/macmind/cables.html">here</A>.</P> |
<P><I>Note: I have heard several reports of the Palm USB adapter not working. I |
am not sure if this is a problem with the adapter itself, or some unusual |
interaction between it and the OS. If you have been able to use a Palm USB |
adapter with MacNQC or NQC, please let me know. I would like to get a definitive |
answer on whether this adapter can be made to work. Personally, I use the |
Keyspan Twin adapter (USA-28X), and I've heard that both the Keyspan PDA adapter |
(USA-19) and Xircom PortGear USB also work.</I></P> |
<P>If you are using MacNQC, then the popup menu in the Preferences dialog box |
will list all available serial ports (including those provided by USB |
converters).</P> |
<P>If you are using the MPW version of NQC, then you will need to specify the |
serial port either on the command line (using the -S option) or in the RCX_PORT |
environment variable. Both methods require that you know the name of the serial |
port driver. The easiest way to make this work is to use the adapter's control |
panel to configure the serial port to "emulate the printer port". This will |
cause the serial port to be named "B", thus you could do either of the |
following:</P> |
<P><TT>nqc -SB -d foo.nqc</TT></P> |
<P>or</P> |
<P><TT>set -e RCX_PORT B</TT></P> |
<P><TT>nqc -d foo.nqc</TT></P> |
<P>If you choose the second option, the <TT>set</TT> command only needs to be |
executed once per MPW session - adding it to a Startup file will make life |
simpler.</P> |
<H3> |
<HR align=left> |
<A name=irdebug></A>Help, RcxCC/MacNQC/NQC can't communicate with my RCX!</H3> |
<P>In most cases, problems like this boil down to a configuration issue, bad |
cable, or dead battery. Here are some troubleshooting tips.</P> |
<P>If the program says it cannot open the serial port, then this is almost |
certainly a configuration problem. For MacNQC, make sure you have a valid serial |
port selected in the Preferences dialog box. For NQC, make sure you have |
specified the appropriate serial port name (default is modem port, "B" is the |
printer port, see <A |
href="http://www.baumfamily.org/nqc_old/doc/faq.html#irusb">above</A> for USB |
based macs). For RcxCC, I suggest trying once with auto-detection, and if that |
fails, then manually set the serial port in the RcxCC program.</P> |
<P>If the program reports that it cannot communicate with the IR device, then |
either the program is talking to the wrong serial port (see the previous item), |
or there's a problem with the cable and/or battery. Make sure you have a fresh |
9v battery installed in the IR tower, and if possible use the cable supplied by |
Lego.</P> |
<P>If the program reports that it cannot communicate with the RCX, then |
communication with the IR tower is probably OK, and the problem is between the |
tower and the RCX.</P> |
<UL> |
<LI>Certain light sources (bright sunlight, certain projection TVs) can cause |
interference...try using a towel or other item to shield the IR tower and RCX |
from other light. |
<LI>The tower and RCX should be about 6 inches apart. Tty the switch on the |
front of the tower in both positions - some people report better success with |
"near" mode, and some with "far" mode. |
<LI>Make sure you have firmware downloaded into the RCX. If the display only |
shows "1" on it, then firmware isn't installed yet...download the firmware |
using the Lego software or the -firmware option for NQC (the firmware itself |
must be copied from the Lego CD or downloaded from <A |
href="http://www.legomindstorms.com/" |
target=_blank>http://www.legomindstorms.com/</A>). Once the firmware is |
installed you should see something like "00.00 1" on the display. </LI></UL> |
<P>If you have a terminal program (e.g. HyperTerminal for Windows, Zterm for the |
Mac), then you can check the IR tower directly. Open up a session to the |
appropriate serial port at 2400 baud, 1 stop bit, odd parity, and 8 data bits. |
Turn off local echo. Start typing a few characters. A green LED on the front of |
the IR tower should light up, and the characters you typed should be echoed back |
to the screen (with an occasional mistake depending on how much interference |
there is).</P> |
<P>If you are using the command line version of NQC, then you can have it log |
any serial communication. This is helpful in trying to isolate where |
communication is failing. A good general-purpose test is</P> |
<P><TT>nqc -v -raw 10</TT></P> |
<P>Please include the output of this test in any e-mail to me regarding IR |
communication problems.</P> |
<P></P> |
<HR align=left> |
<P></P> |
<H3><A name=irlaptop></A>How do I use my computer IR port with the RCX?</H3> |
<P>You can't. At least not easily.</P> |
<P>Most computers use the IrDA protocols for IR communication. The RCX uses a |
proprietary protocol developed by Lego for communication. Quite simply, these |
protocols are incompatable.</P> |
<H4>What about IrCom? Doesn't that let me use the IR port as a regular serial |
port?</H4> |
<P>Yes and no. From an application's point of view, IrCom looks like a serial |
port (complete with hardware handshaking and control lines). However, the IrCom |
layer actually resides on top of normal IrDA communication, so what appears to |
the application to be async serial communication, is in fact a bunch of IrDA |
packets getting sent back and forth. Since the RCX doesn't understand IrDA |
packets, it can't understand IrCom either.</P> |
<H4>What if I access the hardware directly?</H4> |
<P>Even if you bypassed the IrDA protocol stacks on the computer and somehow |
managed to control the hardware directly (a task that is likely to be different |
for different computer vendors), it still may not be possible. The Lego |
protocols encode bits using a 38kHz carrier frequency. This frequency is |
generated an filtered in hardware. IrDA doesn't really use a carrier frequency, |
and the actual specs on bit times provide a lot of lattitued to device |
manufacturers. As a result, it is difficult to get generic IrDA hardware to |
generate the required 38kHz carrier reliably. Filtering the recieve side is even |
more problematic.</P> |
<P>I would hesitate to say that this problem is "impossible" to solve, but |
people have been asking about this for over a year, and to my knowledge no |
general solution has emerged. There are, however, specialized solutions for |
specific pieces of hardware (usually PDAs or other handled devices such as a |
Palm III).<BR></P> |
<HR align=left> |
<H3><A name=irxp></A>How can I get the USB IR tower to work under Win XP?</H3> |
<P>There appear to be some timing related difficulties when using NQC with the |
USB tower under Windows XP. If you are having difficulty downloading |
programs, open the LEGO USB Tower control panel, select the Advanced Tab, and |
set the Read Timeout to 300 msec. This generally fixes the |
problem.<BR></P> |
<H3> |
<HR align=left> |
<A name=spirit></A>Why doesn't NQC use the Spirit OCX?</H3> |
<P>The Spirit OCX is only available on the PC. My personal preference is to use |
a Macintosh, so I needed to have a platform independent means for communicating |
with the RCX.</P> |
<H3> |
<HR align=left> |
<A name=vision></A>Does NQC Support Vision Command?</H3> |
<P>Vision command programs run in two places...all of the image processing |
software runs on the PC, then sends messages to a program running on the RCX. |
The messages that are sent are ordinary RCX messages, and by using Message() and |
ClearMessage(), NQC programs can respond to them. Mike Gasperi calls this "<A |
href="http://www.plazaearth.com/usr/gasperi/vcsensor.htm" target=_blank>Using |
Vision Command as a Smart Sensor</A>".</P> |
<P>Note that I have never tried this myself (Vision Command doesn't run on Mac), |
so I can't really help if things don't work as expected.</P> |
<H3> |
<HR align=left> |
</H3> |
<H3><A name=build></A>What computers/tools/etc do you use to develop NQC?</H3> |
<P>All of the NQC development takes place on my Macintosh PowerBook. I use |
Metrowerks CodeWarrior to write and debug the code as a Macintosh |
application.</P> |
<P>The Code Warrior project also has targets to build the MPW version of NQC as |
well as the Win32 version. Regression tests on the compiler are done on the PPC |
version of the MPW tool (via a couple of MPW scripts and a bunch of sample |
programs). Some minimal testing of the Win32 version is done from within Virtual |
PC - I just make sure that the build went fine and that the serial port works |
since that is really the only code custom to Win32.</P> |
<P>For the source release, I boot into Mac OS X, copy over the NQC source tree |
and build it (using make, gcc, etc). A simple test (again just to make sure the |
serial port code for Unix is working) is performed. I then use a shell script to |
create a source release tree, strip out any unwanted binaries, and package the |
entire thing up as a .tar.gz. Recently, I've also been packaging up a Mac OS X |
binary version.</P> |
<P>So there you have it...development for Mac, Windows, and Unix all done on my |
trusty PowerBook.</P> |
<P></P> |
<HR align=left> |
<TABLE height=24 cellSpacing=0 cellPadding=0 width="100%" border=0> |
<TBODY> |
<TR> |
<TD width="50%" height=17> <A |
href="http://www.baumfamily.org/nqc_old/doc/index.html" |
target=_parent>[Home]</A></TD> |
<TD align=right width="50%"> <IMG height=31 |
src="NQC FAQ_soubory/contact.gif" width=128 align=bottom |
naturalsizeflag="3"></TD></TR></TBODY></TABLE></BODY></HTML> |
/roboti/istrobot/callis/NQC FAQ_soubory/Thumbs.db |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/NQC FAQ_soubory/contact.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/P5080024.JPG |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/Thumbs.db |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/datalog.txt |
---|
0,0 → 1,67 |
Variable 3: 0 |
Variable 3: 5 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -15 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -6 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -11 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -8 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 3 |
Variable 3: 0 |
Variable 3: -8 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -10 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 3 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -16 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: -17 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 7 |
Variable 3: 1 |
Variable 3: 0 |
Variable 3: -3 |
Variable 3: 0 |
Variable 3: 0 |
Variable 3: 6 |
/roboti/istrobot/callis/ping.bak |
---|
0,0 → 1,43 |
/* |
* Ping |
* ==== |
* Adapted from a program by Dave Chen and Simen Svale Skogsrud |
* |
* This program assumes that the light sensor is on IN_2 and |
* that it points in the same direction as the infrared connection |
* on the robot. It beeps when the robot gets close to an obstacle. |
* This is done by repeatedly sending IR messages. These cause a |
* large fluctuation in light intensity. |
* |
* This is a nice mechanism to find a close by wall without bumping |
* in to it. |
*/ |
#define THRESHOLD 200 // Making this larger decreases the distance |
int lastlevel; |
task Ping() |
// Constantly test whether there is a high fluctuation |
{ |
SetSensor(SENSOR_2,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
// Close to something |
PlaySound(1); |
Wait(30); |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task main() |
{ |
start Ping; |
} |
/roboti/istrobot/callis/ping.nqc |
---|
0,0 → 1,43 |
/* |
* Ping |
* ==== |
* Adapted from a program by Dave Chen and Simen Svale Skogsrud |
* |
* This program assumes that the light sensor is on IN_2 and |
* that it points in the same direction as the infrared connection |
* on the robot. It beeps when the robot gets close to an obstacle. |
* This is done by repeatedly sending IR messages. These cause a |
* large fluctuation in light intensity. |
* |
* This is a nice mechanism to find a close by wall without bumping |
* in to it. |
*/ |
#define THRESHOLD 100 // Making this larger decreases the distance |
int lastlevel; |
task Ping() |
// Constantly test whether there is a high fluctuation |
{ |
SetSensor(SENSOR_2,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
// Close to something |
PlaySound(1); |
Wait(30); |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task main() |
{ |
start Ping; |
} |
/roboti/istrobot/callis/pokus.bak |
---|
0,0 → 1,14 |
#pragma reserve 0 3 |
int n; |
task main() |
{ |
PlaySound(SOUND_DOUBLE_BEEP); |
asm{0x14, 3, 2, 10, 0}; // setv 3, constant, 10 |
CreateDatalog(100); |
while (true) |
{ |
AddToDatalog(n); |
SetUserDisplay(n++, 0); |
Wait(100); |
} |
} |
/roboti/istrobot/callis/pokus.nqc |
---|
0,0 → 1,15 |
#pragma reserve 0 3 |
#define n @3 // VAR 3 |
task main() |
{ |
PlaySound(SOUND_DOUBLE_BEEP); |
// asm{0x14, 3, 2, 10, 0}; // setv 3, constant, 10 |
CreateDatalog(100); |
while (true) |
{ |
AddToDatalog(n); |
n=n+1; |
SetUserDisplay(n, 0); |
Wait(100); |
} |
} |
/roboti/istrobot/callis/reset.nqc |
---|
0,0 → 1,10 |
task main() |
{ |
SetSensor (SENSOR_1, SENSOR_TOUCH); |
SetSensor (SENSOR_2, SENSOR_TOUCH); |
SetSensor (SENSOR_3, SENSOR_TOUCH); |
Float (OUT_A); |
Float (OUT_B); |
Float (OUT_C); |
StopAllTasks (); |
} |
/roboti/istrobot/callis/stopar_pravidla.htm |
---|
0,0 → 1,9 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"> |
<!-- saved from url=(0032)http://www.robotika.sk/mains.htm --> |
<HTML><HEAD><TITLE>Slovenská verzia</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2"> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD><FRAMESET border=0 |
frameSpacing=0 frameBorder=0 cols=137,*><FRAME name=menu |
src="stopar_pravidla_soubory/menus.htm" frameBorder=0 noResize |
scrolling=no><FRAME name=telo src="stopar_pravidla_soubory/follower.htm" |
frameBorder=0 noResize></FRAMESET></HTML> |
/roboti/istrobot/callis/stopar_pravidla_soubory/follower.htm |
---|
0,0 → 1,195 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0044)http://www.robotika.sk/contest/follower.html --> |
<HTML><HEAD><TITLE>Istrobot - pravidla: Stopar</TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"><LINK |
title="Orange Style for Robots" href="follower_soubory/istrobot.css" |
type=text/css rel=StyleSheet> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD> |
<BODY bgColor=white><FONT face=Helvetica,Arial size=-1> |
<P align=center>[<A |
href="http://www.robotika.sk/contest/novinky.html">Novinky</A>] [<A |
href="http://www.robotika.sk/contest/pravidla.html">Pravidlá</A>] [<A |
href="http://www.robotika.sk/contest/roboti.html">Roboti</A>] [<A |
href="http://www.robotika.sk/contest/poradna.html">Poradòa</A>] [<A |
href="http://www.robotika.sk/contest/archive/index.html">Archív</A>] |
<P></P> |
<H1>Propozície kategórie Stopár</H1><IMG height=4 alt="" |
src="follower_soubory/bluelin.gif" width=500 align=top border=0> |
<P><BR> |
<P></P> |
<H3>Súaná úloha </H3> |
<P>Zostroji elektronicky riadeného autonómneho mobilného robota, ktorý prejde |
po urèenej dráhe a v èasovom limite do cie¾a. Smer a trasa je daná |
nama¾ovaným tmavým pruhom, na dráhe sú umiestnené rozlièné prekáky. |
<P>Toto zadanie prestavuje reálnu úlohu napríklad pre automatické skladové |
manipulátory a podobne. |
<P></P> |
<H3>Dráha</H3>Podklad dráhy bude svetlý (biely) s tmavou (èiernou) vodiacou |
èiarou írky 15+/-1 mm. Celková dåka dráhy nepresiahne 20 m. Materiál |
bude papier, drevo, linoleum alebo podobné materiály. |
<P>Najmení polomer oblúkov na trati bude 10 cm. Celkové prevýenie |
nepresiahne 3 cm, maximálne stúpanie a klesanie je 5%. Na dráhe, |
podobne ako v reálnom svete, sa môu vyskytova náhodné prekáky (preruená |
vodiaca èiara, prekáka na vodiacej èiare, zmena osvetlenia èiary a iné). |
<P>Úlohou robota nie je nájs správnu cestu (nebudú iadne kriovatky a |
odboèky), ale výhradne sledova nama¾ovanú èiaru. Na dráhe sa môe vyskytnú aj |
tunel s minimálnym prierezom 25x25 cm. Dráha sa poèas súae nemení, |
take robot sa môe uèi a napr. rovné úseky pri ïalej jazde prechádza |
rýchlejie. |
<P>Robot vytartuje z kruhu o polomere 30 cm oznaèeného nápisom |
TART, za ktorým nasleduje asi 50 cm dlhý priamy úsek, na ktorom musí nájs |
stopu a nastavi sa na òu. Za týmto úsekom sa nachádza tartovacia èiara, po |
preruení svetelného lúèa (10 mm nad povrchom dráhy) ¾ubovo¾nou èasou |
robota sa zaène mera èas. |
<P>Èasomiera sa zastaví po preruení podobného lúèa na konci dráhy. |
<P></P> |
<H3>Èinnos robota</H3> |
<P>Po umiestnení robota do tartovacieho kruhu a jeho zapnutí súaiaci nesmie |
do jeho èinnosti nijakým spôsobom zasahova. Robot musí by riadený výluène |
vstavanými elektronickými obvodmi. |
<P>Po prekroèení tartovacej èiary robot nesmie opusti dráhu vyznaèenú tmavou |
èiarou s výnimkou obchádzania prekáky. Pri pohybe nesmie zanecháva iadne |
stopy a znaèky. Na dráhe nesmie osta ani iadna jeho súèas. |
<P>Pri pokodení súanej dráhy je robot diskvalifikovaný. |
<P></P> |
<H3>Rozmery a ve¾kos robota</H3> |
<P>Rozmer robota nesmie v iadnom smere presiahnu 25cm. Uvedomte si aj |
obmedzenia dané tunelmi a polomermi oblúkov na dráhe. |
<P>Minimálne rozmery nie sú obmedzené. Hmotnos nie je obmedzená. |
<P></P> |
<H3>Kontrukcia a materiály</H3> |
<P>Na kontrukciu sa nekladú iadne obmedzenia. Jedinou poiadavkou je to, aby |
robot bol výrobkom súaiaceho (súaiacich). To nevyluèuje komerèné stavebnice |
(LEGO, Fischertechnik), iba hotové výrobky. |
<P></P> |
<H3>Senzorika</H3> |
<P>Nie sú kladené iadne obmedzenia na typ, poèet a rozmery pouitých snímaèov, |
ak neporuujú iné pravidlá. |
<P>Súaiaci nesmú poui iadne vonkajie pomôcky na zlepenie navigácie |
(nálepky, znaèky, zrkadielka,...) |
<P></P> |
<H3>Elektronika</H3> |
<P>iadna èas robota nesmie pracova s väèím napätím ako je 24V. Celková |
spotreba by nemala by viac ako 20A. Výnimky z tohto pravidla schva¾uje |
porota. Vetky riadiace obvody musia by súèasou robota, nie je moné riadi |
jeho pohyb napríklad z externého PC pripojeného èi u káblom, alebo |
bezdrôtovo. |
<P>Na pouité elektronické súèiastky nie je iadne obmedzenie. |
<P>Zdroje energie sú problém súaiacich. |
<P></P> |
<H3>Poradie úèastníkov a priebeh súae</H3> |
<P>Poradie súaiacich bude vylosované tesne pred súaou. Úèastníci musia |
absolvova predpísanú dráhu v poradí urèenom losovaním. Kadý súaiaci |
robot môe prejs dráhu trikrát vo vylosovanom poradí. Èas medzi pokusmi môe |
úèastník vyui na ¾ubovo¾né opravy a úpravy. Ak sa vak nedostaví do 1 minúty |
po výzve na tart, stráca právo absolvova pokus. V prípade, e sa prihlási |
ve¾a súaiacich, porota môe zníi poèet pokusov, prípadne vyhlási |
kvalifikaèné kolo. |
<P></P> |
<H3>Èasové limity</H3> |
<P>Na prejdenie dráhy je stanovený èasový limit 5 minút. Po piatich minútach sa |
meranie èasu zastaví a pokus sa zruí. Aj napriek tomuto handicapu vak nie je |
diskvalifikovaný. Zastavenie merania èasu nemá nijaký vplyv na ostatné pokusy. |
<P></P> |
<H3>Hodnotenie a ceny</H3> |
<P>Kadý prihlásený robot, ktorý prejde stanovenú dráhu, dostane diplom. Víazom |
sa stane robot s najniím dosiahnutým èasom zo vetkých pokusov. Okrem |
toho môe porota udeli cenu za najlepiu kontrukciu a najelegantnejiu |
kontrukciu (kapotá). |
<P></P> |
<H3>Diskvalifikácia</H3> |
<P>Vo veobecnosti platí, e pri kadom poruení pravidiel je robot zo súae |
vylúèený. To platí najmä v týchto situáciach: |
<UL> |
<LI>nebezpeèné správanie, ohrozenie bezpeènosti, |
<LI>pokodenie dráhy, |
<LI>ak sa robot poèas jazdy rozpadne. </LI></UL> |
<P></P> |
<H3>Bezpeènos</H3> |
<P>Tri zákony robotiky: |
<OL type=1> |
<P> |
<LI><B>Robot nesmie ublíi èloveku</B> alebo svojou neèinnosou dopusti, aby |
bolo èloveku ublíené. |
<LI><B>Robot musí poslúchnu príkaz èloveka</B>, s výnimkou prípadov, keï |
je taký príkaz v rozpore s prvým zákonom. |
<LI><B>Robot musí chráni sám seba pred znièením</B>, s výnimkou |
prípadov, keï je to v rozpore s prvým a druhým zákonom. </LI></OL> |
<P> |
<DIV align=right><EM>Isaac Asimov: The Complete Robot, Nightfall Inc., |
1982.</EM> </DIV> |
<P>V prípade, e zariadenie nebude spåòa základné bezpeènostné predpisy, |
porota ho nesmie pripusti k súai a nesmie dovoli jeho prevádzkovanie. |
<P>Kadý robot, ktorý by mohol ohrozi úèastníkov, divákov, alebo zariadenie, |
bude vypnutý. |
<P> |
<P><BR> |
<P><BR></P> |
<H3>Klimatické podmienky</H3> |
<P>Súa bude prebieha v bených klimatických podmienkach (T = 270 - |
310 K, <I>p</I> = 90 - 120 kPa, 0 - 90% RH). |
<P>Skutoènú úroveò osvetlenia scény nie je moné vopred urèi. Pred súaou bude |
vyhradený èas, ktorý môu súaiaci vyui na optimálne nastavenie citlivosti |
snímaèov. Organizátor nemôe zaruèi, e diváci nebudú vrha na dráhu tiene. |
<P>Upozornenie: Kontruktéri si musia uvedomi, e moderné filmové a |
fotografické prístroje pouívajú zábleskové zariadenia a infraèervené vysielaèe |
na zaostrovanie. Pretoe priebeh súae bude zaznamenávaný, pri kontrukcii |
treba poèíta aj s takýmito poruchovými signálmi. |
<P></P> |
<H3>Dokumentácia</H3> |
<P>Kadý súaiaci musí odovzda pred súaou dokumetáciu popisujúcu |
elektroniku, kotrukciu a riadiaci algoritmus. Najlepia forma je <TT>html</TT>, |
organizátor poskytne priestor na jej uverejnenie na svojom serveri. |
<P></P> |
<H3>Porota</H3> |
<P>Nad priebehom súae a dodriavaním pravidiel bdie porota. |
<P>Porota je najmenej trojèlenná, skladá sa zo zástupcov fakulty, tudentov a |
sponzorov. |
<P>Výroky poroty sú záväzné vo vetkých sporných bodoch i v otázkach |
výkladu pravidiel. |
<P></P> |
<H3>Kedy a kde?</H3> |
<P>Súa bude prebieha v priestoroch Fakulty elektrotechniky a informatiky |
na Ilkovièovej 3 v Bratislave 23. apríla 2003. Úèastníci budú ma monos |
otestova dráhu (pravdae nie jej súaný tvar) v stanovených termínoch a deò |
pred súaou. |
<P></P> |
<H3>Podpora úèastníkov</H3> |
<P>Organizátor (KAR) umoní prihláseným úèastníkom pracova na zariadeniach KAR |
a pod¾a monosti ich bude pri kontrukcii podporova. Pracovníci katedry |
prispejú odbornými radami, oddelenie AP poskytne vývojové prostriedky pre |
procesory radu 8051. |
<P>Súa môe by doplnená ukákami profesionálnych robotov, prípadne |
demontráciami sponzorujúcich firiem. |
<P></P> |
<H3>Registrácia a prihláky</H3> |
<P>Súae sa môu zúèastni jednotlivci a tímy (max. 5-èlenné) bez oh¾adu na vek |
èi zamestnanie. |
<P>Predbenú prihláku treba posla najneskôr do 1. februára 2003 na adresu |
Ing. Richard BALOGH, Katedra automatizácie a regulácie, FEI STU, |
Ilkovièova 3, 812 19 Bratislava, e-mail: <A |
href="mailto:balogh@elf.stuba.sk"><TT>balogh@elf.stuba.sk</TT></A>, tel. +421 - |
2 - 602 91 411. Prihlási sa je moné aj pomocou formulára na www stránke |
<P align=center><A |
href="http://www.robotika.sk/contest/pravidla.html#prihlaska"><TT>http://www.robotika.sk/</TT></A> |
<P>Tam nájdete aj pravidlá, kontrukèné návody, rady, inpiraèné obrázky a |
odkazy na podobné súae vo svete. |
<P>Akáko¾vek pripomienka a podpora je vítaná. <A |
href="http://www.robotika.sk/contest/pravidla.html#prihlaska"></P> |
<H3>Prihláka...</H3></A> |
<P><BR></FONT> |
<P align=center>[<A |
href="http://www.robotika.sk/contest/novinky.html">Novinky</A>] [<A |
href="http://www.robotika.sk/contest/pravidla.html">Pravidlá</A>] [<A |
href="http://www.robotika.sk/contest/roboti.html">Roboti</A>] [<A |
href="http://www.robotika.sk/contest/poradna.html">Poradòa</A>] [<A |
href="http://www.robotika.sk/contest/archive/index.html">Archív</A>] |
<P><BR> |
<P> |
<HR> |
<P align=center><FONT size=-2>© 2002 Katedra automatizácie a regulácie FEI |
STU<BR>Ilkovièova 3, 812 19 Bratislava <BR>Posledná zmena: 19. septembra |
2002.<BR>Zodpovedný èlovek: <I><A href="mailto:balogh@elf.stuba.sk">Richard |
Balogh</A></I>. </FONT></P></BODY></HTML> |
/roboti/istrobot/callis/stopar_pravidla_soubory/follower_soubory/bluelin.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/follower_soubory/istrobot.css |
---|
0,0 → 1,24 |
BODY { |
PADDING-RIGHT: 1ex; PADDING-LEFT: 1ex; FONT-SIZE: 10pt; BACKGROUND: white; PADDING-BOTTOM: 1ex; MARGIN: 1ex; COLOR: black; PADDING-TOP: 1ex; FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif |
} |
A:link { |
FONT-WEIGHT: bold; COLOR: #ff8c1d; TEXT-DECORATION: none |
} |
A:visited { |
FONT-WEIGHT: bold; COLOR: #ff8c3d; TEXT-DECORATION: none |
} |
A:hover { |
FONT-WEIGHT: bold; COLOR: #ff8c2d; TEXT-DECORATION: underline |
} |
A:active { |
FONT-WEIGHT: bold; COLOR: #ff8c2d; TEXT-DECORATION: underline |
} |
H1 { |
FONT-WEIGHT: normal; FONT-SIZE: 3em; WIDTH: 80%; BORDER-BOTTOM: #ffd700 thin solid; FONT-STYLE: normal; FONT-VARIANT: normal |
} |
H2 { |
FONT-WEIGHT: normal; FONT-SIZE: 2em; WIDTH: 65%; COLOR: black; BORDER-BOTTOM: #ffd700 thin solid; FONT-STYLE: normal; FONT-VARIANT: normal |
} |
H3 { |
FONT-WEIGHT: normal; FONT-SIZE: 1.5em; WIDTH: 50%; COLOR: black; BORDER-BOTTOM: #ffd700 thin solid; FONT-STYLE: normal; FONT-VARIANT: normal |
} |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus.htm |
---|
0,0 → 1,99 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
<!-- saved from url=(0032)http://www.robotika.sk/menus.htm --> |
<HTML><HEAD><TITLE></TITLE> |
<META http-equiv=Content-Type content="text/html; charset=windows-1250"> |
<META content="MSHTML 6.00.2800.1400" name=GENERATOR> |
<SCRIPT language=JavaScript> |
<!-- |
function fwLoadMenus() { |
if (window.fw_menu_0) return; |
window.fw_menu_0 = new Menu("root",115,21,"Verdana, Arial, Helvetica, sans-serif",12,"#ffff00","#ffffff","#000099","#0066ff"); |
fw_menu_0.addMenuItem("Novinky","window.open('./contest/novinky.html', 'telo');"); |
fw_menu_0.addMenuItem("Pravidlá","window.open('./contest/pravidla.html','telo');"); |
fw_menu_0.addMenuItem("Roboti","window.open('./contest/roboti.html','telo');"); |
fw_menu_0.addMenuItem("Poradna","window.open('./contest/poradna.html','telo');"); |
fw_menu_0.addMenuItem("Archív","window.open('./contest/archive/index.html','telo');"); |
fw_menu_0.fontWeight="normal"; |
fw_menu_0.hideOnMouseOut=true; |
fw_menu_0.writeMenus(); |
} // fwLoadMenus() |
//--> |
</SCRIPT> |
<SCRIPT language=JavaScript1.2 src="menus_soubory/fw_menu.js"></SCRIPT> |
<SCRIPT language=javascript> |
<!-- |
active = new Image(135,80); |
active.src = "enveron.jpg"; |
inactive = new Image(135,80); |
inactive.src = "enverof.jpg"; |
//--> |
</SCRIPT> |
</HEAD> |
<BODY text=#000000 vLink=#ff00ff aLink=#ff0000 link=#0000ff leftMargin=0 |
background=menus_soubory/fuga1.gif topMargin=0 marginheigh="0" marginwidth="0"> |
<SCRIPT language=JavaScript1.2>fwLoadMenus();</SCRIPT> |
<TABLE cellSpacing=0 cellPadding=0 width=135 border=0><!-- fwtable fwsrc="Untitled" fwbase="menu.gif" fwstyle="Dreamweaver" fwdocid = "742308039" fwnested="0" --> |
<TBODY> |
<TR> |
<TD><IMG height=15 alt="" src="menus_soubory/fuga.gif" width=135 |
border=0></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/novinky.htm" target=telo><IMG height=40 |
alt=Novinky src="menus_soubory/novinky.jpg" width=135 border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/domov.htm" target=telo><IMG height=40 |
alt="O nás" src="menus_soubory/onas.jpg" width=135 border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/projects/projekty.htm" target=telo><IMG |
height=40 alt=Projekty src="menus_soubory/pro.jpg" width=135 |
border=0></A></TD></TR><!-- Publikacie v menu su disabled |
<TR> |
<TD><IMG SRC="pub.jpg" WIDTH="135" HEIGHT="40" BORDER="0" ALT=""></TD> |
</TR> |
--> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/holls/2003/index.html" target=telo><IMG |
height=40 alt="Robotické prázdniny" src="menus_soubory/pra.jpg" width=135 |
border=0></A></TD></TR><!-- Na chvilu vymenime odkazy |
<TR> |
<TD><A HREF="contest/novinky.html" TARGET="telo" onMouseOver="window.status='';return true"><IMG SRC="menu_r2_c1.gif" WIDTH="135" HEIGHT="40" BORDER="0" ALT="Sutaz"></A></TD> |
</TR> |
--> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/contest/index.html" target=telo><IMG |
height=40 alt=Sutaz src="menus_soubory/menu_r2_c1.gif" width=135 |
border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/forum/messageboard.php" target=telo><IMG |
height=40 alt="Diskusné fórum" src="menus_soubory/forum.jpg" width=135 |
border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/kontakt.htm" target=telo><IMG height=40 |
alt=Kontakt src="menus_soubory/kon.jpg" width=135 border=0></A></TD></TR> |
<TR> |
<TD><A onmouseover="window.status='';return true" |
href="http://www.robotika.sk/linky.htm" target=telo><IMG height=40 |
alt="Zaujímavé adresy" src="menus_soubory/lin.jpg" width=135 |
border=0></A></TD></TR> |
<TR> |
<TD><IMG height=15 alt="" src="menus_soubory/fuga.jpg" width=135 |
border=0></TD></TR> |
<TR> |
<TD><A |
onmouseover="inactive.src=active.src; window.status='English version';return true" |
onmouseout="inactive.src='enverof.jpg'; window.status=''" |
href="http://www.robotika.sk/maine.htm" target=_parent><IMG height=80 |
alt="" src="menus_soubory/enverof.jpg" width=135 border=0 |
name=inactive></A></TD></TR></TBODY></TABLE></BODY></HTML> |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/enverof.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/forum.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/fuga.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/fuga.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/fuga1.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/fw_menu.js |
---|
0,0 → 1,678 |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/kon.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/lin.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/menu_r2_c1.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/novinky.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/onas.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/pra.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/stopar_pravidla_soubory/menus_soubory/pro.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/sumo.bak |
---|
0,0 → 1,60 |
#define THRESHOLD 44 |
#define POJEZD OUT_A |
#define VYHAZ OUT_C |
task main() |
{ |
Wait(500); // 5s |
SetSensor(SENSOR_2,SENSOR_LIGHT); // senzor na caru |
SetSensor(SENSOR_3, SENSOR_TOUCH); // poloha vyhazovadla |
SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy |
while (true) |
{ |
PlaySound (SOUND_CLICK); |
start k_care; |
Wait(1000); // 10s |
stop utok; |
stop k_care; |
stop bumper; |
} |
} |
task k_care() |
{ |
SetPower (POJEZD,OUT_HALF/2); |
OnFwd (POJEZD); // dojezd k care |
while (SENSOR_2 > THRESHOLD); |
Off(POJEZD); |
OnRev (POJEZD); |
SetPower (POJEZD,OUT_FULL); |
OnFor (POJEZD, 30); |
PlaySound (SOUND_LOW_BEEP); |
start utok; |
start bumper; |
} |
task utok() |
{ |
ClearSensor (SENSOR_3); |
while (SENSOR_2 > THRESHOLD); // jed, kdyz nas neco dotlaci k care |
stop bumper; |
SetPower (POJEZD+VYHAZ,OUT_FULL); |
OnRev (POJEZD); |
OnFwd(VYHAZ); |
while (0 == SENSOR_3); |
Off(VYHAZ); |
Off(POJEZD); |
start k_care; |
} |
task bumper() |
{ |
Float(VYHAZ); |
ClearSensor (SENSOR_3); |
while (0 == SENSOR_3); |
OnRev(VYHAZ+POJEZD); |
Wait(50); |
Off(VYHAZ+POJEZD); |
} |
/roboti/istrobot/callis/sumo.nqc |
---|
0,0 → 1,60 |
#define THRESHOLD 44 |
#define POJEZD OUT_A |
#define VYHAZ OUT_C |
task main() |
{ |
Wait(500); // 5s |
SetSensor(SENSOR_2,SENSOR_LIGHT); // senzor na caru |
SetSensor(SENSOR_3, SENSOR_TOUCH); // poloha vyhazovadla |
SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy |
while (true) |
{ |
PlaySound (SOUND_CLICK); |
start k_care; |
Wait(1000); // 10s |
stop utok; |
stop k_care; |
stop bumper; |
} |
} |
task k_care() |
{ |
SetPower (POJEZD,OUT_HALF/2); |
OnFwd (POJEZD); // dojezd k care |
while (SENSOR_2 > THRESHOLD); |
Off(POJEZD); |
OnRev (POJEZD); |
SetPower (POJEZD,OUT_FULL); |
OnFor (POJEZD, 30); |
PlaySound (SOUND_LOW_BEEP); |
start utok; |
start bumper; |
} |
task utok() |
{ |
ClearSensor (SENSOR_3); |
while (SENSOR_2 > THRESHOLD); // jed, kdyz nas neco dotlaci k care |
stop bumper; |
SetPower (POJEZD+VYHAZ,OUT_FULL); |
OnRev (POJEZD); |
OnFwd(VYHAZ); |
while (0 == SENSOR_3); |
Off(VYHAZ); |
Off(POJEZD); |
start k_care; |
} |
task bumper() |
{ |
Float(VYHAZ); |
ClearSensor (SENSOR_3); |
while (0 == SENSOR_3); // jed, kdyz nekdo narazi do vyhazovace |
OnRev(VYHAZ+POJEZD); |
Wait(50); |
Off(VYHAZ+POJEZD); |
} |
/roboti/istrobot/callis/sumo2.bak |
---|
0,0 → 1,98 |
#define THRESHOLD 44 |
#define POJEZD OUT_B |
#define VYHAZ OUT_C |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(SENSOR_1,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(SENSOR_2,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(SENSOR_3, SENSOR_TOUCH); // poloha vyhazovadla |
SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy |
while (true) |
{ |
// kazdych 10s dojed k care a zpet do vyckavaci pozice |
PlaySound (SOUND_CLICK); |
start k_care; |
Wait(1000); // 10s |
stop k_care; |
stop radar; |
stop cara; |
} |
} |
// udrazeni soupere, pokud drcnul do radaru nebo nas natlacil na caru |
task utok() |
{ |
stop radar; |
stop cara; |
PlaySound (SOUND_FAST_UP); |
SetPower (POJEZD+VYHAZ,OUT_FULL); // plnou parou vpred |
OnFwd(POJEZD); |
OnRev(VYHAZ); |
ClearSensor (SENSOR_3); |
// tlac, dokud se radar 2x neotoci nebo je jeste videt cara |
while ( (2 > SENSOR_3) || (SENSOR_2 > THRESHOLD) ); |
Off(VYHAZ); |
Off(POJEZD); |
start k_care; // po odrazeni soupere se vrat do vyckavaci pozice |
stop utok; |
} |
task k_care() // najed do vyckavaci pozice |
{ |
SetPower (POJEZD,OUT_FULL); |
OnRev (POJEZD); // dojezd k care |
while (SENSOR_2 < THRESHOLD); |
OnFwd (POJEZD); |
SetPower (POJEZD,OUT_FULL); |
OnFor (POJEZD, 30); // popojed kus od cary |
PlaySound (SOUND_DOUBLE_BEEP); |
start radar; |
start cara; |
start cara2; |
stop k_care; |
} |
task cara() // hlidani natlaceni na caru |
{ |
while (SENSOR_2 < THRESHOLD); // utoc, kdyz nas neco dotlaci k care |
start utok; |
} |
task radar() // hlidani najeti do prostoru vyhazovace |
{ |
OnFwd(VYHAZ); // roztoceni radaru |
SetPower (VYHAZ,OUT_FULL); |
OnFor(VYHAZ,50); |
SetPower (VYHAZ,OUT_LOW); // snizeni vykonu po roztoceni |
while (true) |
{ |
ClearSensor (SENSOR_3); |
OnFwd(VYHAZ); // stouchni do radaru na 400ms |
Wait(40); |
Float(VYHAZ); // volnobeh |
ClearTimer (0); |
while (0 == SENSOR_3) // testuje se, zda se do 700ms radar otoci |
{ |
if (Timer (0) > 7) start utok; // utoc, pokud je zablokovan radar |
} |
} |
} |
task cara2() // hlidani cary ze strany "radaru" |
{ |
while (SENSOR_1 > THRESHOLD); // cekej na caru |
stop radar; // vsechno zastav |
stop cara; |
stop k_care; |
stop utok; |
Off(POJEZD); |
Off(VYHAZ); |
start k_care; // snaz se dojet k care na druhe strane |
stop cara2; |
} |
/roboti/istrobot/callis/sumo2.nqc |
---|
0,0 → 1,98 |
#define THRESHOLD 44 |
#define POJEZD OUT_B |
#define VYHAZ OUT_C |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(SENSOR_1,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(SENSOR_2,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(SENSOR_3, SENSOR_TOUCH); // poloha vyhazovadla |
SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy |
while (true) |
{ |
// kazdych 10s dojed k care a zpet do vyckavaci pozice |
PlaySound (SOUND_CLICK); |
start k_care; |
Wait(1000); // 10s |
stop k_care; |
stop radar; |
stop cara; |
} |
} |
// udrazeni soupere, pokud drcnul do radaru nebo nas natlacil na caru |
task utok() |
{ |
stop radar; |
stop cara; |
PlaySound (SOUND_FAST_UP); |
SetPower (POJEZD+VYHAZ,OUT_FULL); // plnou parou vpred |
OnFwd(POJEZD); |
OnRev(VYHAZ); |
ClearSensor (SENSOR_3); |
// tlac, dokud se radar 2x neotoci nebo je jeste videt cara |
while ( (2 > SENSOR_3) || (SENSOR_2 > THRESHOLD) ); |
Off(VYHAZ); |
Off(POJEZD); |
start k_care; // po odrazeni soupere se vrat do vyckavaci pozice |
stop utok; |
} |
task k_care() // najed do vyckavaci pozice |
{ |
SetPower (POJEZD,OUT_FULL); |
OnRev (POJEZD); // dojezd k care |
while (SENSOR_2 < THRESHOLD); |
OnFwd (POJEZD); |
SetPower (POJEZD,OUT_FULL); |
OnFor (POJEZD, 50); // popojed kus od cary |
PlaySound (SOUND_DOUBLE_BEEP); |
start radar; |
start cara; |
start cara2; |
stop k_care; |
} |
task cara() // hlidani natlaceni na caru |
{ |
while (SENSOR_2 < THRESHOLD); // utoc, kdyz nas neco dotlaci k care |
start utok; |
} |
task radar() // hlidani najeti do prostoru vyhazovace |
{ |
OnFwd(VYHAZ); // roztoceni radaru |
SetPower (VYHAZ,OUT_FULL); |
OnFor(VYHAZ,50); |
SetPower (VYHAZ,OUT_LOW); // snizeni vykonu po roztoceni |
while (true) |
{ |
ClearSensor (SENSOR_3); |
OnFwd(VYHAZ); // stouchni do radaru na 400ms |
Wait(40); |
Float(VYHAZ); // volnobeh |
ClearTimer (0); |
while (0 == SENSOR_3) // testuje se, zda se do 700ms radar otoci |
{ |
if (Timer (0) > 7) start utok; // utoc, pokud je zablokovan radar |
} |
} |
} |
task cara2() // hlidani cary ze strany "radaru" |
{ |
while (SENSOR_1 > THRESHOLD); // cekej na caru |
stop radar; // vsechno zastav |
stop cara; |
stop k_care; |
stop utok; |
Off(POJEZD); |
Off(VYHAZ); |
start k_care; // snaz se dojet k care na druhe strane |
stop cara2; |
} |
/roboti/istrobot/callis/sumo_bumper.bak |
---|
0,0 → 1,152 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_3 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_1 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
start blue_bumper; |
start cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Obrat() |
{ |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(150); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(1)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
task blue_bumper() // naraznik na modre strane |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
stop stochastika; |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cervena() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
// Close to something |
PlaySound(SOUND_FAST_UP); |
stop stochastika; |
Obrat(); |
start stochastika; |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
stop stochastika; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_bumper.nqc |
---|
0,0 → 1,153 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_3 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_1 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
start blue_bumper; |
start cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Obrat() |
{ |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(150); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(1)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
task blue_bumper() // naraznik na modre strane |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
stop stochastika; |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cervena() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
// Close to something |
PlaySound(SOUND_FAST_UP); |
stop stochastika; |
Obrat(); |
Wait(50); |
start stochastika; |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
stop stochastika; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_kaklik.nqc |
---|
0,0 → 1,158 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_3 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_1 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(20); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
start blue_bumper; |
start cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Obrat() |
{ |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(125); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(1)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
task blue_bumper() // naraznik na modre strane |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
stop stochastika; |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cervena() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
// Close to something |
PlaySound(SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(10); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
Obrat(); |
Wait(50); |
start stochastika; |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
stop stochastika; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_kaklik2.bak |
---|
0,0 → 1,158 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_3 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_1 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(20); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
Off(MLEFT); |
Off(MRIGHT); |
start blue_bumper; |
start cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() // nahodne otaceni |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Obrat() |
{ |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(125); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(1)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
task blue_bumper() // naraznik na modre strane |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
stop stochastika; |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cervena() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
PlaySound(SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(10); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
Obrat(); |
GoBlue(); |
start stochastika; |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
stop stochastika; |
stop cervena; |
GoRed(); |
start cervena; |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_kaklik2.nqc |
---|
0,0 → 1,161 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_3 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_1 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
SetTxPower(TX_POWER_HI); // aby daleko videl |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(20); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
Off(MLEFT); |
Off(MRIGHT); |
Wait(20); // pockej na ustaleni narazniku |
// rozjed tasky |
start blue_bumper; |
start cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() // nahodne otaceni |
{ |
while(true) Zatoc(); |
} |
void GoBlue() // pojezd ve smeru modreho senzoru |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() // pojezd ve smeru cerveneho senzoru |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Obrat() // obrat o 180 stupnu |
{ |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(125); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() // nahodne zatoceni, nebo popojeti |
{ |
switch (Random(1)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
task blue_bumper() // naraznik na modre strane |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
stop stochastika; |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cervena() // dalkovy sensor |
{ |
int lastlevel; |
lastlevel = 0; |
while(true) |
{ |
SendMessage(0); |
if(lastlevel > SENSOR_2) |
{ |
PlaySound(SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(10); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
Obrat(); |
GoBlue(); |
start stochastika; |
} |
lastlevel = SENSOR_2; |
lastlevel -= THRESHOLD; |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
stop stochastika; |
stop cervena; |
GoRed(); |
start cervena; |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_zataceci.bak |
---|
0,0 → 1,160 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
k_care(); |
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
semafor = false; |
ClearTimer (0); |
start stochastika; |
} |
task stochastika() |
{ |
while (true) |
{ |
Wait(500); |
if (semafor) start blue_bumper; |
PlaySound (SOUND_CLICK); |
OnFwd (MLEFT); // dojezd k care |
OnFwd (MRIGHT); // dojezd k care |
while (BLUE > THRESHOLD); |
GoRed(); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Zatoc(); |
ClearTimer (0); |
} |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(2)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
} |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void k_care() // najed do vyckavaci pozice |
{ |
OnFwd (MLEFT); // dojezd k care |
OnFwd (MRIGHT); // dojezd k care |
while (BLUE > THRESHOLD); |
GoRed(); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
task red_bumper() |
{ |
while(true) |
{ |
while (100 != RED); // utoc, kdyz neco narazi do narazniku |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
Zatoc(); |
start stochastika; |
if (semafor) start blue_bumper; |
} |
} |
task blue_bumper() |
{ |
semafor = false; |
while (0 == BBUMPER); // utoc, kdyz neco narazi do narazniku |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
semafor = true; |
} |
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
while (RED < THRESHOLD || RED > RED_WHITE); // utoc, kdyz nas neco dotlaci k care |
Wait(2); // kontrola za 20ms, aby se to nespletlo s naraznikem |
if (RED > THRESHOLD && RED < RED_WHITE) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
GoBlue(); |
} |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
while (BLUE > THRESHOLD); // cekej na caru |
stop cara_cervena; |
PlaySound (SOUND_DOUBLE_BEEP); |
GoRed(); |
if (semafor) start blue_bumper; |
start cara_cervena; |
} |
} |
/roboti/istrobot/callis/sumo_zataceci.nqc |
---|
0,0 → 1,165 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
// k_care(); |
OnFwd (MLEFT); // dojezd k care |
OnFwd (MRIGHT); // dojezd k care |
Wait(50); |
GoRed(); |
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
semafor = false; |
ClearTimer (0); |
start stochastika; |
} |
task stochastika() |
{ |
while (true) |
{ |
Wait(500); |
if (semafor) start blue_bumper; |
PlaySound (SOUND_CLICK); |
OnFwd (MLEFT); // dojezd k care |
OnFwd (MRIGHT); // dojezd k care |
while (BLUE > THRESHOLD); |
GoRed(); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Zatoc(); |
ClearTimer (0); |
} |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(2)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
} |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void k_care() // najed do vyckavaci pozice |
{ |
OnFwd (MLEFT); // dojezd k care |
OnFwd (MRIGHT); // dojezd k care |
while (BLUE > THRESHOLD); |
GoRed(); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
task red_bumper() |
{ |
while(true) |
{ |
while (100 != RED); // utoc, kdyz neco narazi do narazniku |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
GoRed(); |
//!!! Zatoc(); |
start stochastika; |
if (semafor) start blue_bumper; |
} |
} |
task blue_bumper() |
{ |
semafor = false; |
while (0 == BBUMPER); // utoc, kdyz neco narazi do narazniku |
PlaySound (SOUND_FAST_UP); |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
semafor = true; |
} |
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
while (RED < THRESHOLD || RED > RED_WHITE); // utoc, kdyz nas neco dotlaci k care |
Wait(2); // kontrola za 20ms, aby se to nespletlo s naraznikem |
if (RED > THRESHOLD && RED < RED_WHITE) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
GoBlue(); |
} |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
while (BLUE > THRESHOLD); // cekej na caru |
stop cara_cervena; |
PlaySound (SOUND_DOUBLE_BEEP); |
GoRed(); |
if (semafor) start blue_bumper; |
start cara_cervena; |
} |
} |
/roboti/istrobot/callis/sumo_zataceci2.bak |
---|
0,0 → 1,164 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
GoRed(); |
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(3)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(200); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(200); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(20); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(20); |
break; |
} |
} |
void k_care() // najed do vyckavaci pozice |
{ |
OnFwd (MLEFT); // dojezd k care |
OnFwd (MRIGHT); // dojezd k care |
while (BLUE > THRESHOLD); |
GoRed(); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
task red_bumper() |
{ |
while(true) |
{ |
if (100 == RED) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
} |
} |
} |
task blue_bumper() |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
Wait(2); |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop red_bumper; |
GoBlue(); |
start red_bumper; |
start stochastika; |
} |
} |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_zataceci2.nqc |
---|
0,0 → 1,151 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
GoRed(); |
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(3)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(200); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(200); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(20); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(20); |
break; |
} |
} |
task red_bumper() |
{ |
while(true) |
{ |
if (100 == RED) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
} |
} |
} |
task blue_bumper() |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
Wait(2); |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop red_bumper; |
GoBlue(); |
start red_bumper; |
start stochastika; |
} |
} |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_zataceci3.bak |
---|
0,0 → 1,155 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(3)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(20); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(20); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(200); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(200); |
break; |
} |
} |
task red_bumper() |
{ |
while(true) |
{ |
if (100 == RED) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
} |
} |
} |
task blue_bumper() |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
Wait(2); |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop red_bumper; |
GoBlue(); |
start red_bumper; |
start stochastika; |
} |
} |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/sumo_zataceci3.nqc |
---|
0,0 → 1,155 |
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou |
#define RED_WHITE 60 // maximum bile na cervenem senzoru |
#define MLEFT OUT_A |
#define MRIGHT OUT_C |
#define BLUE SENSOR_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
int semafor; |
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
start stochastika; |
} |
task stochastika() |
{ |
while(true) Zatoc(); |
} |
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
void Zatoc() |
{ |
switch (Random(3)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(20); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(20); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
task red_bumper() |
{ |
while(true) |
{ |
if (100 == RED) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
} |
} |
} |
task blue_bumper() |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
Wait(2); |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop red_bumper; |
GoBlue(); |
start red_bumper; |
start stochastika; |
} |
} |
} |
} |
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
/roboti/istrobot/callis/tunel.JPG |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/uxas03.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/callis/vssver.scc |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |