Prírodou inšpirované algoritmyštudijné materiály pre projekt mobilnej triedy umelej inteligencie |
||||||||||||||||||||
|
Simulácia Braitenbergovho vozidlaÚvodBalí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 1Je 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.
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. |
|||||||||||||||||||
Kontakt: Marek Bundzel |