Studentská tvůrčí a odborná činnost STOČ 2015 POUŽITÍ FUZZY LOGIKY PRO ŘÍZENÍ AUTONOMNÍHO ROBOTA - 2D MAPOVÁNÍ PROSTORU Michal JALŮVKA Ostravská univerzita v Ostravě Dvořákova 7 701 03 Ostrava 23. dubna 2015 FAI UTB ve Zlíně
Klíčová slova: fuzzy, lego, robot, Java, mapování Anotace: Obsahem práce je návrh logiky chování autonomního robota při 2D mapování prostoru. Rozhodování robota je založeno na teorii fuzzy množin a fuzzy logice, jež umožňuje vyhodnocovat závěry na základě nepřesného popisu určité situace pomocí jazykově formulovaných fuzzy (IF-THEN) pravidel. Tato pravidla jsou následně integrována v programovatelném zařízení robota. Na konstrukci robota byla použita robotická stavebnice LEGO MINDSTORMS EV3. Funkčnost robota zahrnuje ovládání EV3 komponent, mapování prostoru, uchování získaných dat a vytvoření mapy daného prostoru. V rámci práce byl vyvinut program, který realizuje tuto funkčnost robota. V závěru jsou zhodnoceny výsledky mapování, které byly srovnány s reálným prostorem. Dále jsou uvedeny návrhy ke zlepšení programu a jeho využití v dalších projektech. 2
Obsah 1. LINGUISTIC FUZZY LOGIC CONTROLLER... 4 2. LEGO MINDSTORM EV3... 4 3. POUŽITÍ FUZZY LOGIKY PRO ŘÍZENÍ AUTONOMNÍHO ROBOTA... 4 4. EXPERIMENTÁLNÍ STUDIE... 7 5. ZHODNOCENÍ VÝSLEDKŮ A ZÁVĚR... 8 Literatura... 9 3
1. LINGUISTIC FUZZY LOGIC CONTROLLER Linguistic Fuzzy Logic Controller (LFLC) je software založený na teorii fuzzy množin a fuzzy logice. Umožňuje vyhodnocovat závěry na základě nepřesného popisu určité situace pomocí jazykově formulovaných fuzzy (IF-THEN) pravidel. Tento software vytváří soubor báze pravidel (v ní je obsažen vstupní a výstupní fuzzy množiny, IF-THEN pravidla), z něhož se provádí dedukce po předložení vstupních množin. Software byl vytvořen v Ústavu pro výzkum a aplikace fuzzy modelování (IRAFM) na Ostravské univerzitě. Jeho demo verze LFLC 2000 (např. omezený počet pravidel) a je volně dostupný na oficiálních stránkách http://irafm.osu.cz/en/c100_software/ s podrobnou dokumentací [3]. Program LFLC umožňuje generovat CSV soubor, ve kterém jsou kombinace vstupních hodnot dle jejich definičních oborů a po provedení inferenční metody i výsledná výstupní hodnota. V každém řádku je počet sloupců dle uvedených vstupních proměnných v RB souboru a jeden výstupní sloupec. Díky tomuto souboru je snadné vyhledat takovou výstupní hodnotu z řádku, ve které se vstupní hodnoty shodují nebo přibližují s hodnotami zadanými do bází pravidel. 2. LEGO MINDSTORM EV3 LEGO MINDSTORMS jsou programovatelné robotické stavební sady, které umožňují vytvořit a ovládat své vlastní LEGO roboty. Jedná se o třetí generaci LEGO MINDSTORMS, přičemž zkratka "EV" znamená evoluci, odtud tedy EV3. [2] Tato stavebnice disponuje programovatelnou řídící kostku EV3 brick, která se svým firmwarem může ovládat a řídit své vstupní a výstupní zařízení. Příkladem jednotlivých zařízení může být: 1. Motory: a. Velký motor b. Střední motor 2. Senzory: a. Barevný senzor b. Dotykový senzor c. Infračervený senzor d. Ultrazvukový senzor 3. Dálkový ovladač Řídící kostka má zaveden defaultně operační systém z dílen LEGO Mindstorms, který může komunikovat s vývojovým prostředím od totožné firmy. Existuje varianta, která umožňuje zavést do kostky jiný operační systém, zvláště takový, který umožňuje spouštět programy napsané v programátorském jazyce (C/C++, Java). Nejužívanější alternativy operačního systému je BrickOS pro programování v C/C++ a LeJOS [4] pro Javu. 3. POUŽITÍ FUZZY LOGIKY PRO ŘÍZENÍ AUTONOMNÍHO ROBOTA Chování robota je realizován za pomocí fuzzy pravidel, což jsou podmíněné jazykové výrazy ve tvaru [1]: IF antecedent THEN konsekvent (1) přičemž antecedent je složen z jedné nebo více fuzzy množin oddělených logickými spojkami a konsekvent je jediná fuzzy množina. 4
Báze pravidel jsou sestaveny v prostředí LFLC tak, aby se mohl robot rozhodovat, jak by měl získat souřadnice překážky. Ideálně se senzor snímající překážky chová jako radar, který je nastaven směrem dopředu vzhledem k jízdě robota a otáčí se o 180 doprava nebo doleva. Snímání senzoru vychází z předpokladu, že jeho lokace je vztažena k bodu [0;0] (označen fialovou tečkou). Z technických důvodů to nemusí být možné (zamotání datového kabelu, méně ideální konstrukce robota), a proto je senzor nastaven tak, aby snímal nanejvýš na 90 doprava nebo doleva. Aby robot pokryl snímání celý prostor, musel by se otáčet o 360. Důležitými vstupními proměnnými pro naše rozhodování je vzdálenost překážky a úhel (pro otočení senzoru a otočení robota). Pro naše experimentální účely je dostatečné, aby báze pravidel byla navržena pouze pro první kvadrant, tj. v rozmezí úhlu od 0 do 90. Pro pokrytí celého prostoru (0 až 360 ) je navržena další báze pravidel, která nám zaručí, v jakém kvadrantu snímáme překážku. Výsledná lokace (čtvercová oblast) má ve skutečnosti rozměry 150x150mm (obr. 1). Obr. 1: Úplné zobrazení snímaného prostoru Vstupní proměnná Vzdálenost překážky (báze pravidel pro snímání překážky) je vyjádřena v mm a je v rozsahu 0 1000mm. Skládá se z množiny termů znázorňující prostor mezi dvěma sousedními kružnicemi (obr. 1). Každý z těchto termů má funkci příslušnosti tvaru lichoběžníku. Vstupní proměnná Úhel (báze pravidel pro snímání překážky) vyjadřuje otočení senzoru. Je definovaná od 0 do 90 (obr. 1). Každý z těchto termů má funkci příslušnosti tvaru trojúhelníkovou. Výstupní proměnná Souřadnice (báze pravidel pro snímání překážky) je chápána jako X-ová souřadnice vycházející ze vstupních proměnných Vzdálenost překážky a Úhel. Množina termů má funkci příslušnosti tvaru trojúhelníku. V tabulce 1 jsou vypsána fuzzy pravidla pro snímání překážky. Vzhledem k tomu, že tato báze pravidel je rozsáhlá, je vypsán výběr pravidel, která nabývají proměnnou úhel ostrý30. 5
Pořadí pravidla Vzdálenost překážky Úhel Souřadnice 05. do75 ostrý30 Souřadnice0 12. do150 ostrý30 Souřadnice0 19. do225 ostrý30 Souřadnice1 26. do300 ostrý30 Souřadnice1 33. do375 ostrý30 Souřadnice1 40. do450 ostrý30 Souřadnice1 47. do525 ostrý30 Souřadnice2 54. do600 ostrý30 Souřadnice2 61. do675 ostrý30 Souřadnice2 68. do750 ostrý30 Souřadnice2 75. do825 ostrý30 Souřadnice3 82. do900 ostrý30 Souřadnice3 89. do975 ostrý30 Souřadnice3 96. do1000 ostrý30 Souřadnice3 Tab.1: Výběr báze pravidel pro snímání překážky nabývající proměnná úhel ostrý30 Díky tomuto rozhodovacímu procesu získáme X-ovou souřadnici při předložení vstupních proměnných Vzdálenost překážky a Úhel. Pro Y-ovou souřadnici je třeba náš Úhel odečíst od 90. Takto získáme souřadnici překážky z prvního kvadrantu Vstupní proměnná Úhel (báze pravidel pro znaménko souřadnice) nabývá součtu úhlu natočeného senzoru a úhlu natočeného robota. Je definovaná od -359 do 359 (obr. 1). Každý z těchto termů má funkci příslušnosti tvaru lichoběžníku. Výstupní proměnná Znaménko (báze pravidel pro znaménko souřadnice) má množinu termů s funkcí příslušnosti tvaru trojúhelníku. V tabulce 2 jsou vypsána fuzzy pravidla pro snímání překážky. Vzhledem k tomu, že tato báze pravidel je rozsáhlá, je vypsán výběr pravidel, která nabývají proměnnou úhel ostrý30. Pořadí pravidla Úhel Znaménko 01. kladdo180 kladné 02. kladdo360 záporné 03. zapdo180 záporné 04. zapdo360 kladné Tab.2: Báze pravidel pro znaménko souřadnice 6
Podle těchto pravidel získáme skutečnou polohu překážky, která nám říká, ve kterém kvadrantu (z obrázku 1) se skutečně nalézá. Pro Y-ovou souřadnici budeme stejně jako v předchozí bázi zvyšovat úhel o 90. 4. EXPERIMENTÁLNÍ STUDIE Pro experimentální účely byl sestaven robot z robotické stavebnice Lego Mindstorm EV3. Tento robot (viz obr. 2) používá svou řídící kostku, jež má zavedený linuxový operační systém LeJOS. Tento robot používá: 2 velké motory pro pohyb roboty, střední motor pro otáčení senzoru a ultrasonický senzor. Obr. 2: Testovací robot Pro experimentální účely byl vytvořen program, jenž realizuje chování robota pro mapování prostoru, je rozdělen do pěti částí (vrstev) představující jednotlivé funkčnosti (obr. 3). Obr. 3: Use Case chování robota 7
Proces snímání prostoru má nastavení na 15 iterací (nemá implementován algoritmus, kdy se má sám zastavit). Každá iterace se skládá z dílčích činností (viz obr. 4). Obr. 4: Iterace procesu snímání Testování robota probíhalo ve vymezeném prostoru (obr. 5). Robot tento prostor nasnímal a vytvořil jeho mapu. Tento prostor je rozdělen do mřížky s rozměrem jedné buňky 5x5cm. Tato mřížka nám pomůže určit lokaci překážek, testovacího robota a jeho následných úkonů. Po spuštění programu robot začne snímat své okolí a zaznamenávat souřadnice překážek do své paměti. Po ukončení procesu snímání vytvoří výstupní obraz, tedy mapu snímaného prostoru, která byla porovnána s reálnou mapou. Obr. 5: Snímaný prostor 5. ZHODNOCENÍ VÝSLEDKŮ A ZÁVĚR Experimentální výsledky byly zhodnoceny porovnáním získané mapy, kterou robot nasnímal (obr. 6 vpravo) a mapy reálného snímaného prostoru (obr. 6 vlevo). Na mapě prostoru jsou označeny oblastí, kde se nachází překážky. Obě mapy jsou rozděleny do čtvercových oblastí, které ve skutečnosti odpovídá rozměrům 15x15 cm. 8
Obr. 6: Mapa reálného prostoru a získaná mapa z robota Bylo vytvořeno několik experimentů a vždy jsme získali podobné výsledky, které jsou prezentovány na obrázku 6. Výsledná mapa se částečně shoduje s mapou reálného prostoru. Během testování jsem si všiml, že se robot nepohybuje do přesné vzdálenosti a neotáčí se pod úhlem, jakým chceme dosáhnout. To způsobuje vychýlení dráhy a přepisování parametrů ve snímaných čtvercových oblastí. Dále jsem si všiml, že senzoru nemá vhodné umístění. Způsobuje špatné vyhodnocování směru pro příští iteraci snímání. Jeden z příkladu je takový, že tělo robota je postaven hned vedle překážky, ale senzor vidí vedle se volnou cestu, to má za následek otočení robota a kolize senzoru s přepážkou. V některém případě došlo i k neustále otáčením doleva a doprava. Bylo by vhodné umístit senzor ve středu těla, aby rozhodování příštího směru bylo korektním. Dalším problém je přepisování překážek během snímání. Stává se, že senzor pod určitým úhlem nezaznamená překážku, která je před ním. To nám způsobuje, že dříve zaznamenanou překážku ve čtvercové oblasti vyhodnotí jako oblast bez překážky, tudíž ve výsledné mapě z černého bodu vznikne šedý bod. V poslední řadě bych zmínil zaznamenání oblastí mimo snímaného prostoru (vpravo od zeleného obdélníka) způsobené tím, že překážka je oblepena papírem a ultrazvukové vlny jemu prochází. Literatura [1] Novák, V. Základy fuzzy modelování. 1. Praha : BEN, 2000. ISBN 80-730-0009-1. [2] Podpora - Mindstorms LEGO.com. LEGO Mindstorms EV3. [Online] The LEGO GROUP, 2014. [Citace: 1. 12 2014.] http://www.lego.com/cs-cz/mindstorms/support. [3] IFRAM. LFLC. Ostrava : Ostravská univerzita, 2003. [4] LeJOS, Java for LEGO Mindstorms. [Online] 2009. [Citace: 2014. 12 1.] www.lejos.org 9