Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Používateľské rozhranie
Programové rozhranie
Simulácia Braitenbergovho vozidla



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


Simulácia Braitenbergovho vozidla

Úvod

Balík POPBUGS sa osvedčil ako užitočný nástroj pre simuláciu Braitenbergových vozidiel, ktoré majú priame prepojenie pohonu kolesa so snímačom. Pohyb vozidiel je ovládaný schémou a silou tohto prepojenia snímača a pohonu. Podrobnejšie informácie o Braitenbergových vozidlách nájdete tu.

Vozidlo 1

Je zostrojené z jedného snímača a jedného motora. Prepojenie so snímačom je veľmi jednoduché. Čím vyššia je hodnota zo snímača, tým rýchlejšie sa motor krúti.

V POPBUGSE môžeme vytvoriť túto simuláciu napríklad takto:

Najprv zostrojíme svet s jedným vozidlom

   1 -> pb_new_world;
 

Potom priradíme vozidlu jeden snímač vzdialenosti.

   [[prox1]] -> pb_sensors;

Nakoniec zadefinujeme pohybovú charakteristiku tak, že hodnota snímača bude koeficientom pre hnaciu silu oboch kolies.

   [[x(1)][x(1)]] -> pb_behaviour;

Keď spustíme simuláciu robot sa vrhne na najbližšiu stenu a narazí do nej.

Vozido tretieho typu (láska)

Pozorovateľ by mal u vozidla pozorovať správanie, ktoré pripomína lásku.

Jedným z riešení je upraviť prepojenie medzi senzormi a pohonmi tak, že zmeníme znamienko hodnoty snímača z pozitívneho na negatívne. Tým dosiahneme, že motor spomalí keď bude príslušný senzor aktivovaný.

Pred simuláciou musíme zinicializovať svet robotov.

   1 -> pb_new_world;
   [[name roger][position [30 50]][colour pink][shape circle]] -> pb_spec;
   [[{10} roger][{-10} roger]] -> pb_sensors;
   [90 90] -> pb_position;

Aby sme dosiahli spomaľujúci efekt musíme hodnoty snímačov odpočítať od výstupov motorov.

   [[(1-x(1))][(1-x(2))]] -> pb_behaviour;

S takto zadefinovaným pohybom sa zdá, že vozidlo je fascinované ružovým objektom. Klesajúcou rýchlosťou sa pohybuje smerom k nemu

Pre modelovanie zložitejších vozidiel pridáme štyri páry snímačov, ktoré snímajú rôzne veličiny z prostredia; povedzme: svetlo, teplotu, koncentráciu kyslíka a množstvo organických látok.
Snímače pripojíme k motorom nasledovne:

  • svetlo - prvý pár snímačov
  • zrýchľujúcim spojením priamo (čím väčšia hodnota snímača, tým väčšia rýchlosť motora)
  • teplota – druhý pár
  • zrýchľujúcim spojením nakríž (ľavý snímač je pripojený k pravému motoru)
  • koncentrácia kyslíka – tretí pár
  • spomaľujúcim spojením priamo (čím väčšia hodnota snímača, tým menšia rýchlosť motora)
  • množstvo organických látok – štvrtý pár
  • spomaľujúcim spojením nakríž (čím väčšia hodnota snímača, tým menšia rýchlosť motora)

Kvôli simulácii teploty pridáme object nazvaný 'temperature' a umiestnime 4 vozidlá. Poloha objektu potom efektívne simuluje koncentráciu príslušnej veličiny.

Najprv zinicializujeme simuláciu a pridáme pseudo objekty:

   1 -> pb_new_world;
   [[number 1][substance rubber_shell]] -> pb_spec;
   {20 20} -> pb_position;
   [[name light][position [40 53]][colour yellow][dimensions [6 6]]] ->       
   pb_spec;
   [[name temp][position [60 38]][colour red][dimensions [6 6]]] -> pb_spec;
   [[name oxygen][position [81 58]][colour LightCyan][dimensions [6 6]]] ->    
   pb_spec;
   [[name dung][position [48 69]][colour brown][dimensions [6 6]]] ->   
   pb_spec;

Pripomeniem len, že zdroj tepla predstavuje malý červený objekt. Organickú hmotu hnedý objekt, zdroj svetla je žltý a kyslík predstavuje svetlomodrý objekt.

Teraz vybavíme vozidlá snímačmi:

   [
    [{40} light]    [{-40} light]
    [{40} temp]     [{-40} temp]
    [{40} oxygen]   [{-40} oxygen]
    [{40} dung]     [{-40} dung]
   ] -> pb_sensors;

A teraz prepojíme motory so snímačmi:

   [[0.3+x(2)+x(3)-x(5)-x(8)]
   [0.3+x(1)+x(4)-x(6)-x(7)]] -> pb_behaviour;

Na videu vidieť, že máme vozidlo s veľmi zaujímavým správaním. Nemá rado vysokú teplotu a otáča sa od horúcich miest. Ešte viac nenávidí zdroje svetla, ku ktorým sa otáča a ničí ich. Na druhej strane sa zdá že obľubuje okysličené miesta s dostatkom organickej hmoty.

Hore
Kontakt: Marek Bundzel