lánctalpas járgány

útvonalkövető robot
készítők : bogdányi tamás bogdanyi@inf.elte.hu, földesi tamás bearny@inf.elte.hu, kardos istván kardi_@inf.elte.hu, katzer péter konzerv@freemail.hu


az útvonal egy világos (fehér) felületre ragasztott néhány cm széles ragasztószalag volt.

a meghajtást 2 motor végezte, a fordulásokat az egyik oldali motor megállításával, illetve hátrafelé forgatásával oldottuk meg. 3 fényérzékelőt használtunk, bár elég lett volna 2 is, de végül is 3 lett a tuti. a 3 érzékelő közül 2 az úton kell hogy legyen, ha nem így van, akkor a megfelelő irányba mozdul a cucc.

a jobb oldali képen látható az érzékelők elhelyezkedése, a két egymás melletti van az úton, a harmadik mellette...

 

 

 

 

 

több-kevesebb sikerrel megpróbáltunk egy infrás távirányítót is építeni, az építéssel nem is volt semmi gond, mint az a képen látható. a gond a két rcx közötti kommunikációval volt, elég ritkán észlelték egymás jeleit, és így a küldött irányváltoztatások döntő hányada elveszett...

érdemes még megemlíteni a járgány elején látható, lényegében funkció nélküli 2 motort, viszont a hangja gyönyörű volt... :-)

 

 

a robotról készült videók:

video17.avi
video18.avi
video19.avi
video20.avi
video21.avi
video22.avi- a pilótafülkében ülve...

a program forrása:

#define balsensor SENSOR_1
#define legbalsensor SENSOR_2
#define jobbsensor SENSOR_3
#define balmotor OUT_A
#define jobbmotor OUT_C

int ut,nemut;
int irany; //-1:bal, 0:kozep, 1:jobb

int m;

task main(){
SetSensor(balsensor, SENSOR_LIGHT);
SetSensor(jobbsensor, SENSOR_LIGHT);
SetSensor(legbalsensor, SENSOR_LIGHT);
SetSensorMode(balsensor, SENSOR_MODE_PERCENT);
SetSensorMode(jobbsensor, SENSOR_MODE_PERCENT);
SetSensorMode(legbalsensor, SENSOR_MODE_PERCENT);


m=0;
if ((legbalsensor-10) > jobbsensor){
ut=jobbsensor;
nemut=(legbalsensor-10);
}
else
{
ut=(legbalsensor-10);
nemut=jobbsensor;
}

irany=0;
SetPower(balmotor,100);
SetPower(jobbmotor,100);
On(balmotor);
On(jobbmotor);
Rev(balmotor);
Rev(jobbmotor);
while (0==0){
/*if ((balsensor >= (nemut-5)) && (jobbsensor >= (nemut-5))) {
if (irany==1){
Off(jobbmotor);
OnFwd(balmotor);
}
else{
OnFwd(jobbmotor);
Off(balmotor);
}

}
else { */
// lb, b az ut mellett, j az uton =>
if ((jobbsensor <= (ut+5)) && (balsensor >= (nemut-5)) && ((legbalsensor-10) >= (nemut-5))) {
irany=1;
Off(jobbmotor);
OnRev(balmotor);
}

// lb, j az ut mellett, b az uton =>
if ((jobbsensor >= (nemut-5)) && (balsensor <= (ut+5)) && ((legbalsensor-10) >= (nemut-5))) {
irany=-1;
OnRev(jobbmotor);
Off(balmotor);
}

// j, b az uton, lb az ut mellett => egyenesen kell menni
if ((jobbsensor <= (ut+5)) && (balsensor <= (ut+5)) && ((legbalsensor-10) >= (nemut-5))) {
OnRev(balmotor);
OnRev(jobbmotor);
}

// j, b, lb az ut mellett =>
if ((jobbsensor >= (nemut-5)) && (balsensor >= (nemut-5)) && ((legbalsensor-10) >= (nemut-5))) {
OnRev(balmotor);
OnFwd(jobbmotor);
/*if (m==0) {OnRev(balmotor);
OnFwd(jobbmotor); m=1; Wait(10); }
else { OnFwd(balmotor);
OnRev(jobbmotor); m=0; Wait(10); }*/
}


// b az ut mellett, lb, j az uton =>
if ((jobbsensor <= (ut+5)) && (balsensor >= (nemut-5)) && ((legbalsensor-10) <= (ut+5))) {
irany=1;
OnFwd(jobbmotor);
OnFwd(balmotor);
}

// j az ut mellett, lb, b az uton =>
if ((jobbsensor >= (nemut-5)) && (balsensor <= (ut+5)) && ((legbalsensor-10) <= (ut+5))) {
irany=-1;
OnRev(jobbmotor);
Off(balmotor);
}

// lb, j, b az uton
if ((jobbsensor <= (ut+5)) && (balsensor <= (ut+5)) && ((legbalsensor-10) <= (ut+5))) {
OnFwd(balmotor);
OnRev(jobbmotor);
}

// j, b az ut mellett, lb az uton =>
if ((jobbsensor >= (nemut-5)) && (balsensor >= (nemut-5)) && ((legbalsensor-10) <= (ut+5))) {
Off(balmotor);
OnRev(jobbmotor);
}


}
Off(jobbmotor);
Off(balmotor);
}

© 2002, design by pucka SMS pötyögő