Kooperatív
robotok vezérlése – Robotfoci
(Pázmány
Péter Katolikus Egyetem – Robotika laboratórium)
Írta:
Kurczina Gergő
Konzulensek:
Dr. Cserey György, Árvai László
Bevezetés
A
robotfoci egy olyan játék, mely mögött összetett tudományos munka áll. A játék megalkotásához
használnunk kell a robotikában alkalmazott összes tudományágat, ezáltal a
robotfoci tökéletes terepet nyújt e tudományágak eredményeinek kipróbálására és
fejlesztésére. De lássuk, melyek is ezek a területek! A mesterséges
intelligencia, a képfeldolgozás, az irányításelmélet, az elektronika, a 3D-s
tervezés, az útvonaltervezés és a szoftvertechnológia.
A projekt célja, melynek keretében diplomamunkám
készült az volt, hogy egy olyan robotfoci csapatot hozzunk létre, mely a
későbbiekben versenybe szállhat más országok csapataival a világbajnokságokon.
A projekten belül felmerülő feladatok közül ez a dolgozat a robotfoci kamerás
moduljával foglalkozik. Ennek a modulnak a feladata, hogy input adatokat
szolgáltasson a robotfoci rendszerének.
A robotfoci története
1992-ben a „Grand Challenge in Artificial
Intelligence” elnevezésű konferencia adta meg azt a kezdő lökést, amelynek
köszönhetően 1993-ban japán kutatók a hétköznapi emberek számára a futballt
használták fel a tudomány, a technika, a mesterséges intelligencia és a robotika
fejlődésének bemutatására. Ettől a ponttól számítva indult rohamos fejlődésnek
e terület, és kezdtek egyre több egyetemen, laboratóriumban kutatásokat,
kísérleteket végezni a robotfoci segítségével.
Hamarosan az egyes csapatok elkezdték összemérni tudásukat más
csapatokkal, így kezdődtek az első meccsek, melyekből később bajnokságok
lettek.
1997. június 5-én hivatalosan is
megalakult a Federation of International Robot-soccer Association (továbbiakban
csak FIRA). Ma ez az egyik legnagyobb szövetség. A szövetség szabályrendszere
szerint terveztük meg, és kezdtük fejleszteni saját csapatunkat is.
A
robotfoci működése
Tekintsük
át, hogyan is működik egy robotfoci-rendszer. Először is adott egy játéktér,
melyen színes jelzésekkel ellátott robotok mozoghatnak. Egy narancssárga labda
is található a pályán. A pálya fölé egy kamerát helyezünk, ez adja majd az
inputképet a pályán történő eseményekről. Az ebből jövő input feldolgozásra
kerül egy számítógép segítségével, majd a kapott mozgásmintákat wireless
kapcsolat segítségével közvetítjük, a robotoknak, melyek végrehajtják azokat,
majd indul újra a körforgás.
A
kamera modul
Mint már említettem a kamera modul adja a rendszer
egyetlen bemenetét, ezért megtervezésénél és implementálásánál fontos szerepet
kapott a pontosság. A másik kritikus szempont az algoritmus gyorsasága volt.
Ennek - a játék természetéből adódóan - valós időben történő futásnak kellett
lennie.
Az első lépés
a kamera képének megszerzése volt. Ezt - annak érdekében, hogy a rendszer minél
gyorsabban futhasson - közvetlenül a kártya driver-jéből töltöttük át. A
beolvasott képet egy RGB színtérben kaptuk meg. Ez a fajta színtér a
legáltalánosabban elterjedt színreprezentálási forma. Az RGB színtérnek azonban
nagy hátránya, hogy nagyon érzékeny az árnyalatok, a színek fényerősségének
változására, valamint ezek kapcsolatának reprezentálása is nehézkes.
Megoldásként áttértünk a HSV színtérre, melynek sajátossága, hogy egy kúpon
helyezkednek el a színek. Az alapszíneket egy körív mentén tudjuk kijelölni,
mely a kúp alapját alkotja. Az árnyalatot és a fényerősséget
pedig a maradék két dimenzión lehet ábrázolni, ahogy a mellékelt ábrán is
láthatjuk. Az új színtérben már könnyedén tudjuk reprezentálni a színeket, s a
hozzá tartozó árnyalatokat és fényerősséget.
Az így reprezentált képet ezek után egy
tresholdolási eljárásnak vetjük alá. Ennek az eljárásnak az a feladata, hogy
kiszűrje a képről azokat az információkat, amelyekre nekünk szükségünk van. A
könnyebb feldolgozás érdekében a kapott képet binarizáljuk,
ami azt jelenti, hogy az általunk fontosnak tartott információkat egységesen feketével,
vagyis 1-gyel reprezentáljuk, a többit pedig fehérrel,
azaz 0-val. Az eljárás úgy működik, hogy végigmegyünk a teljes képen, és a
pixeleket egyesével megvizsgáljuk, majd a jó információt
tartalmazó pixelt feketére, a többit pedig fehérre állítjuk. A szoftver options
menüje - 4 gördíthető csúszka - segítségével tudjuk állítani, hogy mely színekre
vagyunk kíváncsiak.
A kamera modulnak a tresholdolt képből a következő
információkat kell visszaadnia a rendszer számára: a robotok és a labda helye,
a robotok iránya és sebessége.
Először tekintsük át a robotok helyét megadó
objektumfelismerő eljárást. Amint a képen is látható, a kapott alakzat, melyet
meg kell találnunk, a zajok miatt nagyon amorf és nehezen reprezentálható. Ezen
felül az alakzat a zajok miatt folyamatosan - kis mértékben ugyan -, de
változik. Ezen tulajdonságok miatt egy olyan megoldásra volt szükségünk, amely
képes az emberhez hasonlóan egy alakzat hasonlóságából asszociálni arra, hogy
milyen alakzat is volt ott eredetileg.
A rendszernek könnyen taníthatónak is kellett
lennie, hogy ne legyen szükség hosszú számítások végzésére a legkisebb
változásnál is. Ez a rendszer, amely rendelkezik a fönt említett
tulajdonságokkal, egy neurális hálózat.
A neurális hálózatok mesterséges neuronokból
felépített hálózatok, melyek képesek tanulni, és a tanultak alapján dönteni egy
kapott mintáról, hogy az megfelel-e a tanultaknak vagy sem. A neurális hálózatok
másik nagy előnye, hogy bizonyítottan nagyon gyors rendszerek. Ez a tulajdonságuk
nagyban elősegítette a rendszer valós időben történő futását.
A rendszer működése a következőképpen történik. A már
feldolgozott képből 40x40-es képi mintákat adunk a rendszernek, és megmondjuk,
hogy a kapott kép rossz vagy jó mintát tartalmaz. A minták segítségével a
neurális hálózat felépít magának egy W mátrixot, mely az egyes neuron összeköttetések
súlyát tartalmazza. Ez alapján – a későbbiekben a mátrix alapján - fogja a
rendszer meghozni döntését. A tanítás befejeztével elindítjuk a döntéshozó rendszert,
mely minden kapott képet megvizsgál, hogy megtalálható-e rajta a tanult alakzat.
Ha igen, akkor elraktározza az alakzat vélt középpontját.
Az algoritmus hibája, hogy egy alakzathoz több
középpontot is találhat a valós középpont körül. Ennek kiküszöbölése két
lépésben történik. Először is hozzárendeljük az egyes középpontokat egy
másodlagos ID szín segítségével a megfelelő robothoz. Miután ez megtörtént - egy
mediánszűrő segítségével - megadjuk az alakzat középpontját a hozzárendelt
pontokból.
Az utolsó két adat a sebesség és az irány
kiértékelését, egy eljárás végzi a következő metódus segítségével. Vesszük a két egymást követő képből szerzett
robotközéppontokat, és kiszámoljuk azok elmozdulás vektorát. Ebből a vektorból
az irány jól meghatározható. A sebességet az elmozdulás vektor hosszával adjuk
meg. Majd ezt - a kerékátmérő és a kamera frissítési sebességének segítségével
- valós sebességre is átszámolhatjuk.
Köszönetnyilvánítás
Az útmutatásért és a segítségért
köszönet illeti:
Dr. Cserey Györgyöt (egyetemi
docens, a Robotika labor vezetője),
Rák Ádámot (doktorandusz),
és a
Pázmány Péter Katolikus Egyetem Robotika Laborjának dolgozóit.
Külön köszönet illeti:
Árvai Lászlót, aki kezdeményezte
a projekt létrejöttét, és a szívén viseli a magyar robotfoci sorsát.
A Varinex Kft. munkatársait,
akik a robotok elkészítésében nyújtottak segítséget.