2001/2002-es szemeszter 1. beadandója.
Feladat:
Útkövetés
Készítsen egy olyan robotot, ami képes egy útvonalat követni.
Az útvonal a "nem út"-tól eltérő színű.
Fontos tényezők:
- Az út "színe" (sötét alapon világos vagy fordítva), szín egyenletsége miatt szükséges a kalibrációt
- Az út szélessége: keskeny vagy széles út
- A kanyarok "erossége" (pld. nagyon éles “hajtukanyarok”)
Megoldás:
Egy négykerekű autó a megoldás. A hátsó két kereket egy motor hajtja.
Van benne egy sebességváltó, mely 2 sebességi fokozat között vált.
Ha egy bizonyos ideig egyenesen megy, akkor a nagyobb fokozatba kapcsol,
ha kanyarodnia kell, akkor visszakapcsol.Ezt is egy motor oldja meg.
A kanyarodást egy kormánnyal oldottuk meg, mely az első kerekeket
irányítják.A kormányt is egy motor hajtja.
Az auton két szenzor van elöl.
Az autó addig megy egyenesen, amíg egyik szenzor sincs az úton. Ha az
egyik szenzor más értéket mutat, akkor az autó a megfelelő irányba
eltekeri a kormányt, és tolat, amjd ugyanezt előre. Addig csinálja,
amíg tudja folytatni az útját előre.
A program:
#define KORMANY OUT_A
#define MOTOR OUT_B
#define SEBVALT OUT_C
#define BAL SENSOR_1
#define JOBB SENSOR_3
task main(){
int i=0;
SetSensor(BAL, SENSOR_LIGHT);
SetSensor(JOBB, SENSOR_LIGHT);
SetSensorMode(BAL, SENSOR_MODE_RAW);
SetSensorMode(JOBB, SENSOR_MODE_RAW);
while (true){
if (abs(BAL-JOBB)<20){
//mehet elore
SetPower(MOTOR,7);
OnFwd(MOTOR);
Wait(1);
if (30==++i) {
// ***********************
//sebvalto nagy fokozatba
SetPower(MOTOR,3);
SetPower(SEBVALT,7);
OnFwd(SEBVALT);
Wait(10);
Off(SEBVALT);
SetPower(MOTOR,7);
}
}
else{Off(MOTOR);
{
// S E B V A L T O
// ***************
if (i>30){
SetPower(MOTOR,3);
SetPower(SEBVALT,7);
OnRev(SEBVALT);
Wait(10);
Off(SEBVALT);
SetPower(MOTOR,7);
}
i=0;
if ((BAL-JOBB)>0){
//egyik iranyba elteker
SetPower(KORMANY,3);
OnRev(KORMANY);
Wait(15);
Off(KORMANY);
//megy egy picit
SetPower(MOTOR,7);
OnRev(MOTOR);
// while (BAL-JOBB>0){Wait(20);}
Wait(8);
Off(MOTOR);
//masik iranyba elteker
SetPower(KORMANY,3);
OnFwd(KORMANY);
Wait(15);
Off(KORMANY);
//addig tolat, amig az egyik feketen, a masik feheren
SetPower(MOTOR,7);
OnFwd(MOTOR);
// while (BAL-JOBB>0){Wait(20);}
// Itt
Wait(8);
Off(MOTOR);
}
else{
SetPower(KORMANY,3);
OnFwd(KORMANY);
Wait(10);
Off(KORMANY);
//addig tolat, amig az egyik feketen, a masik feheren
SetPower(MOTOR,7);
OnRev(MOTOR);
// while (BAL-JOBB<0){Wait(20);}
Wait(8);
Off(MOTOR);
//egyik iranyba elteker
SetPower(KORMANY,3);
OnRev(KORMANY);
Wait(15);
Off(KORMANY);
//megy egy picit
SetPower(MOTOR,7);
OnFwd(MOTOR);
// while (BAL-JOBB<0){Wait(20);}
Wait(8);
//masik iranyba elteker
Off(MOTOR);
}
}
}
}
}
A robotról néhány videó:
1.videó
2.videó
3.videó
készítették :
Kristóf Imola
Lustig Péter
Ajtai Róbert
Nagy Barnabás