

| 000 | akadálykikerülést végző Braitenberg-jármű demonstrációja |
| 001 | kommunikáció a soros csatlakozáson keresztül 9600 baudon |
| 010 | kommunikáció a soros csatlakozáson keresztül 19200 baudon |
| 011 | kommunikáció a soros csatlakozáson keresztül 38400 baudon |
| 100 | felhasználó által betöltött program futtatása |
| 101 | programletöltés 9600 baudon |
| 110 | programletöltés 38400 baudon |
| 111 | robot funkcionalitási tesztje |







NewRobot, LoadRobot, SaveRobot,
ResetRobot, UserCommand,
StepRobot
FastStepRobot: kirajzolás nincs, számításigényes
algoritmushoz
UserInit, UserClose
a program indulásakor és befejeződésekor
boolean StepRobot(struct Robot *robot)
{
if ((robot->IRSensor[0].DistanceValue > COLLISION_TH) ||
(robot->IRSensor[1].DistanceValue > COLLISION_TH) ||
(robot->IRSensor[2].DistanceValue > COLLISION_TH)) {
robot->Motor[LEFT].Value = TURN_SPEED;
robot->Motor[RIGHT].Value = -TURN_SPEED;
} else if ((robot->IRSensor[3].DistanceValue > COLLISION_TH) ||
(robot->IRSensor[4].DistanceValue > COLLISION_TH) ||
(robot->IRSensor[5].DistanceValue > COLLISION_TH)) {
robot->Motor[LEFT].Value = -TURN_SPEED;
robot->Motor[RIGHT].Value = TURN_SPEED;
} else {
robot->Motor[LEFT].Value = FORWARD_SPEED;
robot->Motor[RIGHT].Value = FORWARD_SPEED;
}
return(TRUE);
}
boolean StepRobot(struct Robot *robot)
{
double sense;
sense = ((double)robot->IRSensor[4].DistanceValue+
(double)robot->IRSensor[5].DistanceValue)/2;
robot->Motor[LEFT].Value = (int)(-0.01 * sense + 5.0);
robot->Motor[RIGHT].Value = (int)(0.02 * sense - 4.0);
}
void UserCommand(struct Robot *r,char *text)
{
for( int i = 0; i < Population::Number_of_iterations; ++i ) {
light->switch_on();
for( int j = 0; j < Population::Population_size; ++j ) {
actual = population->element(j);
actual->setRobot(r);
population->startFitness(j);
for( int k = 0;
k < Population::Number_of_tests; ++k ) {
// robot elhelyezése
for( int l = 0;
l < Population::Number_of_teststeps; ++l ) {
FastRunRobot(r);
}
population->calcFitness(j);
}
}
population->dropWorsts();
population->duplicateBests();
population->mutate();
light->switch_off();
}
population->showBest();
}



khepera_get_light

khepera_get_jumper, khepera_set_led

panoramic_get_raw a sötét oszlop sötét képének
irányába elmozduláshoz
panoramic_get_lowpass1,
panoramic_get_lowpass2,
panoramic_get_highpass,
panoramic_get_odd

grip_set_arm, grip_set_grip


khepera_send_serial sztring küldése
khepera_receive_serial utasítás fogadása sztringként





