Difference between revisions of "Simulace robotického vysavače"

From Simulace.info
Jump to: navigation, search
(Závěr)
 
(11 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
'''Metoda:''' Multiagentní<br><br>
 
'''Metoda:''' Multiagentní<br><br>
 
=Definice problému=
 
=Definice problému=
Simulace se bude věnovat simulaci robotického vysavače v různých místnostech domácnosti s různým rozložením. Budou zde vyzkoušeny různé algoritmy pro pohyb v prostoru a pro navigování kolem překážek. Od algoritmů s náhodným pohybem při styku s překážkou, přes systematické algoritmy, které budou prostor procházet buď vertikálně nebo horizontálně, až po algoritmy s detekcí překážky v dráze pohybu.
+
Simulace se bude věnovat simulaci robotického vysavače v různých místnostech domácnosti s různým rozložením. Budou zde vyzkoušeny různé algoritmy pro pohyb v prostoru a pro navigování kolem překážek. Od algoritmů s náhodným pohybem při styku s překážkou, po systematické algoritmy, které budou prostor procházet buď vertikálně nebo horizontálně.
 +
 
 
=Metoda=
 
=Metoda=
 +
Simulace byla prováděna v nástroji NetLogo, jelikož se jednalo o jedinný vhodný nástroj pro tuto simulaci, aby bylo možné vizualizovat pohyb robota v prostředí a vytvářet překážky v daném prostředí.
  
 
=Model=
 
=Model=
 +
Model je postaven na simulační ploše o rozměru 50x50 s tím, že velikost robota se rovná právě jednomu poli na ploše. Průběh simulace je měřen podle jednotlivých kroků (''"ticks"''). Simulační plocha disponuje třemi různými rozloženími co se překážek týče a překážky jsou tvořeny poli s bílou barvou. Standardní povrch je pak tvořen hnědými poli, přičemž po přejezdu robota pole zesvětlají, signalizujíc, že daná pozice byla robotem vysána.
 +
[[File:Vacuum-model.png]]
 +
== Agenti ==
 +
Model obsahuje 2 typy agentů.
 +
 +
=== Robot ===
 +
Představuje robotický vysavač, je reprezentován černým kolečkem na simulované ploše. Vlastnostmi tohoto agenta jsou:
 +
* rychlost, která je stanndardně nastavena na 1
 +
* typ algoritmu, který agent používá pro porhcázení prostoru
 +
* startovní pozice
 +
 +
=== Překážky ===
 +
Představuje překážky, které se nacházjí v prostoru a blokují robota v pohybu. V protoru jsou vyznačeny bílou barvou. Rozložení těchto agentů je dáno parametrem '''obstacles'''.
 +
[[File:Obstacles2.png|thumb|left|Překážky: Simple]]
 +
[[File:Obstacles3.png|thumb|center|Překážky: Complex]]
 +
 +
 +
== Parametry ==
 +
Model je vybaven třemi paramtery, které lze měnit přímo z rozhraní simulace, ale uvnitř kódu se nachází několik dalších veličin, které ovlivňují průběh simulace a to například rychlost robota nebo stupeň otočení. Zde se budeme věnovat pouze těmto třem.
 +
 +
*'''Algorithm''' je parametr, který určuje chování robota v průběhu simulace. Na výbě jsou 4 možnosti.
 +
**'''Randomized''' je algoritmus, při kterém se robot v prostoru ohybuje zcela náhodně. Robot se náhodně natáčí na pravou či levou stranu a při střetu s překážkou se otočí o 180°.
 +
**'''Vertical''' je algoritmus, při kterém robot prochází prostor po vertikálách, pohybuje se tedy vždy shora dolů a naopak.
 +
**'''Horizontal''' je podobný jako vertical, s tím že v tomto případě se robot pohybuje horizontálně, tedy z leva do prava a naopak.
 +
**'''Advanced''' je poslední typ, u kterého se robot pohybuje vždy vstříc poli, které ještě v současném běhu nenavštívil.
 +
 +
*'''Obstacles''' je parametr, který určuje rozložení překážek v prostoru. Je rozdělen do tří úrovní.
 +
**'''None''' znamená, že prostor neobsahuje žádné překážky
 +
**'''Simple''' znamená, že se v prostoru vyskytují 4 překážky v pevně daných pozicích
 +
**'''Complex''' představuje nejtěžší úroveň překážek v modelu. Překážky jsou tvořeny tak, aby bylo obtížnější kolem nich navigovat robota.
 +
 +
*'''Start''' je parametr, který určuje startovní pozici robota
 +
**'''Corner''', robot je umístněn v levém dolnm rohu
 +
**'''Center''', robot je umístněn
 +
**'''Critical''', robot je umístněn náhodně v prostoru a v případě třetí úrvně překážek je umístněn na kritické místo u překážky
 +
== Další vlastnsti ==
 +
* Model je nastaven tak, aby simulace zastavila v momentě, kdy robot projede každé možné místo v prosotoru, a to z důvodu měření efektivity
 +
* U algoritmů vertical a horizontal byla přidána funkce, že pokud robot v jistém intervalu neprojede nové pole, změní se algoritmus na randomized. Důvodem je to, že tyto algoritmy samotné nejsou schopné projít celý prostor s přeakážkami třetí úrovně.
  
 
=Výsledky=
 
=Výsledky=
 +
Pro vyhodnocení modelu bylo jako metrika použito množství kroků (''ticks'') potřebné pro vyčistění všech dostupných polí v prostoru. Jelikož se některé algoritmy pohybují náhodně, bylo pro každou kombinaci parametrů provedeno 10 simulací a následně se použil jejich průměr. Níže jsou uvedeny tabulky pro jednotlivé obtížnosti prostoru.
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Prostor bez překážek'''
 +
!| Algoritmus || Start - corner || Start - center || Start - critical
 +
|-
 +
| Vertical || 2499 || 3674 || 8027
 +
|-
 +
| Horizontal || 2499 || 3674 || 13624
 +
|-
 +
| Randomized || 32162 || 35832 || 36053
 +
|-
 +
| Advanced || 9900 || 9749 || 9865
 +
|}
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Prostor s jednoduchými překážkami'''
 +
!| Algoritmus || Start - corner || Start - center || Start - critical
 +
|-
 +
| Vertical || 4450 || 4246 || 4594
 +
|-
 +
| Horizontal || 4450 || 4246 || 4598
 +
|-
 +
| Randomized || 33756 || 40232 || 38393
 +
|-
 +
| Advanced || 10031 || 9792 || 9733
 +
|}
 +
 +
{| class="wikitable"
 +
|+ align="top" | '''Prostor s nejtěžšími překážkami'''
 +
!| Algoritmus || Start - corner || Start - center || Start - critical
 +
|-
 +
| Vertical || 37360 || 42190 || 38394
 +
|-
 +
| Horizontal || 21348 || 36350 || 24200
 +
|-
 +
| Randomized || 34693 || 36541 || 40984
 +
|-
 +
| Advanced || 11875 || 13278 || 12730
 +
|}
 +
 +
V tabulkách si můžeme všimnout vlivů startovní pozice, překážek v prostředí a zvoleného algoritmu na rychlost vyčištění prostoru. Čísla v tabulkách představují průměrný počet potřebných kroků na projetí celého prostoru.
  
 
=Závěr=
 
=Závěr=
 +
Cílem simulace bylo porovnat efektivitu jednotlivých algoritmů a zjistit jaká pozice v prostoru je ideální pro startovní stanici. Z výsledků simulace uvedených v tabulkách můžeme vyvodit několik závěrů. Za prvé můžeme z výsledků vidět, že Vertical a Horizontal algoritmy dosahují velmi podobných výsledků či v některých situacích dokonce totožných. A pro oba tyto algoritmy platí, že u nejtěžších překážek došlo k prudkému nárůstu potřebných kroků, což je z části způsobeno tím, že se zde musel použít i algoritmus Randomized, jelikož se původní algoritmus nebyl schopen se dostat do jistých míst. Dále lze z dat vyčíst, že algoritmus Randomized je jednoznačně nejhorší možností, jelikož pouze ve 2 kombinacích neměl nejhorší výsledek. Jako nejlepší volba se tedy jeví algoritmus Advanced, a to i přesto, že v prvních dvou úrovních překážek nebyl nejlepší. Výhodou je zejména to, že narozdíl od ostatních algoritmů se počet potřebných kroků s rostoucí náročností překážek zvyšoval podstatně pomaleji. Co se týče pozice startovní stanice, nelze z dostupných výsledků jasně určit optimální umístnění.
  
 
=Kód=
 
=Kód=
 +
Zdrojový kód:[[Media:Racj01 simulace.nlogo]]

Latest revision as of 23:15, 15 June 2021

Název: Simulace robotického vysavače
Autor: Racj01 (talk) 23:45, 13 June 2021 (CET)
Nástroj: NetLogo
Metoda: Multiagentní

Definice problému

Simulace se bude věnovat simulaci robotického vysavače v různých místnostech domácnosti s různým rozložením. Budou zde vyzkoušeny různé algoritmy pro pohyb v prostoru a pro navigování kolem překážek. Od algoritmů s náhodným pohybem při styku s překážkou, po systematické algoritmy, které budou prostor procházet buď vertikálně nebo horizontálně.

Metoda

Simulace byla prováděna v nástroji NetLogo, jelikož se jednalo o jedinný vhodný nástroj pro tuto simulaci, aby bylo možné vizualizovat pohyb robota v prostředí a vytvářet překážky v daném prostředí.

Model

Model je postaven na simulační ploše o rozměru 50x50 s tím, že velikost robota se rovná právě jednomu poli na ploše. Průběh simulace je měřen podle jednotlivých kroků ("ticks"). Simulační plocha disponuje třemi různými rozloženími co se překážek týče a překážky jsou tvořeny poli s bílou barvou. Standardní povrch je pak tvořen hnědými poli, přičemž po přejezdu robota pole zesvětlají, signalizujíc, že daná pozice byla robotem vysána. Vacuum-model.png

Agenti

Model obsahuje 2 typy agentů.

Robot

Představuje robotický vysavač, je reprezentován černým kolečkem na simulované ploše. Vlastnostmi tohoto agenta jsou:

  • rychlost, která je stanndardně nastavena na 1
  • typ algoritmu, který agent používá pro porhcázení prostoru
  • startovní pozice

Překážky

Představuje překážky, které se nacházjí v prostoru a blokují robota v pohybu. V protoru jsou vyznačeny bílou barvou. Rozložení těchto agentů je dáno parametrem obstacles.

Překážky: Simple
Překážky: Complex


Parametry

Model je vybaven třemi paramtery, které lze měnit přímo z rozhraní simulace, ale uvnitř kódu se nachází několik dalších veličin, které ovlivňují průběh simulace a to například rychlost robota nebo stupeň otočení. Zde se budeme věnovat pouze těmto třem.

  • Algorithm je parametr, který určuje chování robota v průběhu simulace. Na výbě jsou 4 možnosti.
    • Randomized je algoritmus, při kterém se robot v prostoru ohybuje zcela náhodně. Robot se náhodně natáčí na pravou či levou stranu a při střetu s překážkou se otočí o 180°.
    • Vertical je algoritmus, při kterém robot prochází prostor po vertikálách, pohybuje se tedy vždy shora dolů a naopak.
    • Horizontal je podobný jako vertical, s tím že v tomto případě se robot pohybuje horizontálně, tedy z leva do prava a naopak.
    • Advanced je poslední typ, u kterého se robot pohybuje vždy vstříc poli, které ještě v současném běhu nenavštívil.
  • Obstacles je parametr, který určuje rozložení překážek v prostoru. Je rozdělen do tří úrovní.
    • None znamená, že prostor neobsahuje žádné překážky
    • Simple znamená, že se v prostoru vyskytují 4 překážky v pevně daných pozicích
    • Complex představuje nejtěžší úroveň překážek v modelu. Překážky jsou tvořeny tak, aby bylo obtížnější kolem nich navigovat robota.
  • Start je parametr, který určuje startovní pozici robota
    • Corner, robot je umístněn v levém dolnm rohu
    • Center, robot je umístněn
    • Critical, robot je umístněn náhodně v prostoru a v případě třetí úrvně překážek je umístněn na kritické místo u překážky

Další vlastnsti

  • Model je nastaven tak, aby simulace zastavila v momentě, kdy robot projede každé možné místo v prosotoru, a to z důvodu měření efektivity
  • U algoritmů vertical a horizontal byla přidána funkce, že pokud robot v jistém intervalu neprojede nové pole, změní se algoritmus na randomized. Důvodem je to, že tyto algoritmy samotné nejsou schopné projít celý prostor s přeakážkami třetí úrovně.

Výsledky

Pro vyhodnocení modelu bylo jako metrika použito množství kroků (ticks) potřebné pro vyčistění všech dostupných polí v prostoru. Jelikož se některé algoritmy pohybují náhodně, bylo pro každou kombinaci parametrů provedeno 10 simulací a následně se použil jejich průměr. Níže jsou uvedeny tabulky pro jednotlivé obtížnosti prostoru.

Prostor bez překážek
Algoritmus Start - corner Start - center Start - critical
Vertical 2499 3674 8027
Horizontal 2499 3674 13624
Randomized 32162 35832 36053
Advanced 9900 9749 9865
Prostor s jednoduchými překážkami
Algoritmus Start - corner Start - center Start - critical
Vertical 4450 4246 4594
Horizontal 4450 4246 4598
Randomized 33756 40232 38393
Advanced 10031 9792 9733
Prostor s nejtěžšími překážkami
Algoritmus Start - corner Start - center Start - critical
Vertical 37360 42190 38394
Horizontal 21348 36350 24200
Randomized 34693 36541 40984
Advanced 11875 13278 12730

V tabulkách si můžeme všimnout vlivů startovní pozice, překážek v prostředí a zvoleného algoritmu na rychlost vyčištění prostoru. Čísla v tabulkách představují průměrný počet potřebných kroků na projetí celého prostoru.

Závěr

Cílem simulace bylo porovnat efektivitu jednotlivých algoritmů a zjistit jaká pozice v prostoru je ideální pro startovní stanici. Z výsledků simulace uvedených v tabulkách můžeme vyvodit několik závěrů. Za prvé můžeme z výsledků vidět, že Vertical a Horizontal algoritmy dosahují velmi podobných výsledků či v některých situacích dokonce totožných. A pro oba tyto algoritmy platí, že u nejtěžších překážek došlo k prudkému nárůstu potřebných kroků, což je z části způsobeno tím, že se zde musel použít i algoritmus Randomized, jelikož se původní algoritmus nebyl schopen se dostat do jistých míst. Dále lze z dat vyčíst, že algoritmus Randomized je jednoznačně nejhorší možností, jelikož pouze ve 2 kombinacích neměl nejhorší výsledek. Jako nejlepší volba se tedy jeví algoritmus Advanced, a to i přesto, že v prvních dvou úrovních překážek nebyl nejlepší. Výhodou je zejména to, že narozdíl od ostatních algoritmů se počet potřebných kroků s rostoucí náročností překážek zvyšoval podstatně pomaleji. Co se týče pozice startovní stanice, nelze z dostupných výsledků jasně určit optimální umístnění.

Kód

Zdrojový kód:Media:Racj01 simulace.nlogo