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