Prírodou inšpirované algoritmy

študijné materiály pre projekt mobilnej triedy umelej inteligencie

Späť ku kurzom triedy
Obsah
Ovládanie pohybu
Ovládanie senzorov
Používanie senzorových programov
Programovanie náhodného správania
Generovanie video záznamu simulácie
Spúšťanie simulácii na pozadí
Premenné prístupné používateľovi



Ostatné kapitoly
Walterove korytnačky
BEAM Robotika
Kolektívne správanie robotov
KANSEI
Braintenbergove vozidlá
POPBUGS
iRobot
Insect Robots
Ešte niekoľko robotov ...
MIT Roboty


Tutoriály
 Celulárne automaty
 Morfogenéza
 Simulátory
 Evolučné algoritmy
 Chaos
 Roboty
 Rôzne


Ovládanie senzorov

Existuje veľa prípadov, keď pohyb robota potrebujeme zmeniť podľa informácie od senzorov, ktoré snímajú okamžitý stav okolitého sveta. Roboty sú štandardne vybavené jedným senzorom vzdialenosti. Tento meria vzdialenosť najbližšieho objektu priamo pred robotom a vyhodnotí ju ako reálne číslo v intervale 0-1. Informácia o senzorickej výbave robota je uchovávaná v atribúte s názvom sensors.
Zistíme hodnotu tohoto atribútu:

   pb_sensors ==>
   ** [0]

Táto informácia hovorí že, robot má jeden senzor umiestnený 0 stupňov od priameho smerovania.
Môžeme zistiť aké vzdialenosti senzor ukazuje použitím premennej pb_sensor_inputs.

   pb_sensor_inputs ==>
   ** [0.388612]

Senzorový lúč môžeme zobraziť zvýšením hodnoty premennej display_level prostredníctvom ovládacieho panela alebo:

   3 -> pb_display_level;

Roboty sa dajú vybaviť aj farebnými senzormi. Tieto môžu byť nakonfigurované tak, aby vnímali farbu najbližšieho objektu v senzorovom lúči. Príklad:

   [[10][10 col1][-10][-10 col1]] -> pb_sensors;

Vstupný senzorový vektor robota bude obsahovať striedavo dve hodnoty vzdialenosti a dve hodnoty farieb.

   pb_sensor_inputs ==>
   ** [0.410506 0.008 0.348626 0.008]

Pre zistenie hodnoty internej reprezentácie farby použijeme procedúru pb_colour_code

   pb_colour_code("red") ==>
   ** 0.043

Ak by sme chceli vytvoriť komplexné senzorické vnímanie okolitého sveta, stálo by to veľa písania. Život si môžeme uľahčiť použitím procedúry 'pb_make_sensors'. Táto vytvorí kruhové usporiadanie senzorov. Príklad:

   pb_make_sensors([[30][30 col1]],5,10) ==>
   ** [[30]
       [30 col1]
       [20]
       [20 col1]
       [10]
       [10 col1]
       [0]
       [0 col1]
       [-10]
       [-10 col1]]

Druhý argument je počet senzorov, tretí je veľkosť uhla medzi dvoma susednými senzormi.

Hore
Kontakt: Marek Bundzel