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ě
STOČ 2015 - Studentská tvůrčí a odborná činnost 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
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
Obsah LINGUISTIC FUZZY LOGIC CONTROLLER................................................... 4 1. 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
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
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
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
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
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
Úhel
Souřadnice
05.
Vzdálenost překážky 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
Pořadí pravidla
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 01.
Úhel kladDo180
Znaménko kladné
02.
kladDo360
záporné
03.
zapDo180
záporné
04.
zapDo360
kladné
Tab.2: Báze pravidel pro znaménko souřadnice
6
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
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
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
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
STOČ 2015 - Studentská tvůrčí a odborná činnost 23. dubna 2015, FAI UTB ve Zlíně
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