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 | ||||||||||||||||||||