


simil = propRGB(red,green,blue,goal);
diff = min(100,fabs(red - green) + fabs(red - blue) +
fabs(green - blue));
margin = TOLERANCE * ((2 - diff/100) + simil);
resp = (fabs(red - goal[0])< margin) &&
(fabs(green - goal[1])< margin) &&
(fabs(blue - goal[2])< margin);

start_pos kezdeti kerékszámláló-érték, a
FULL_TURN előre meghatározott konstans
if((side == LEFT && (my_khepera_get_position(LEFT) >
start_pos - FULL_TURN) ||
side == RIGHT && (my_khepera_get_position(LEFT) <
start_pos + FULL_TURN)) &&
(left_food_stimuli + right_food_stimuli == 0)) {
return true;
} else {
return false;
}
main() {
// inicializálás, képnagyság-távolság tábla tárgyankénti
// feltöltése
CalculateOneStep() {
GetStepData() {
CreateFilteredImages() {
// energiaforrás, ég, föld színének érzékelése
// másik Khepera kiszűrése az energiaforrás színéből
// több energiaforrás szétválasztása
// közelebbi forrás meghatározása magasság alapján
LookUpDistance(); // forrás távolságának meghatározása
// az eddigi eljárás megismétlése a még nem
// érintett színekre
// töltődő energiaforrás meghatározása és
// közelében maradás, ha szükséges
// távolmaradás kevés földpixelt és/vagy sok
// falat tartalmazó oldaltól
IdentifyImmediateLandmarks(); // képen látható
// tereptárgyak azonosítása
// ha nincs használható energiaforrás és régóta nem
// volt a robot egy tereptárgynál, akkor az az új cél
}
}
SetGoalAndthePresentLandmark() // cél kiválasztása
// hangulat alapján
UpdateLandmarkDistanceRelationships() // tereptárgyak
// egymáshoz viszonyított távolságának eltárolása
RunAMood {
// egy viselkedés kiválasztása és futtatása
}
}
}







egy pozíció értéke egy
mérésre alapozva.

kifejezés kiszámítása az
értékekre alapozva.

| szisztematikus | véletlen | nem egyforma méretű kerekek | egyenetlen padló |
| szabálytalan kerekek | kerekek csúszása |
| mintavételezés ritkasága | ütközések |
| mintavételezés precízitása |

