Urban Search and Rescue (USAR) témájú verseny a BME Méréstechnika és Információs Rendszerek Tanszék és a Schnell Alapítvány szervezésében.

Az ágensek programozása

A kiadott keretrendszeren (szimulátoron) belül három csomag található: a rescueagents tartalmazza a robotokat vezérlő ágens osztályt, a rescueframework a keretrendszer forrásfájljait, míg a world package a világot leíró fájlokat tárolja.

Az ágensek programozása

Az rescueagents package *RobotControl osztályaiban van lehetőség az ágensek intelligenciájának implementálására. Ezek az osztályok az AbstractRobotControl leszármazottjai, ahol a robotok egyedi számmal történő ellátása került implementálásra. A robot a RobotPercepcion interfészen keresztül érzékeli a külvilágot (más módon nem férhet hozzá annak állapotához), amely számos segédfüggvényt (útvonalkeresési algoritmust) is tartalmaz az ágensek megvalósításának megkönnyítésére. Ezek az eljárások nem feltétlenül vesznek figyelembe minden tényezőt (pl. futásidejű változásokat), így csak korlátozottan optimálisak.

A robotvezérlők a robot állapotáról a RobotInterface segítségével kaphatnak információkat (pl. a robot helye, van-e sérült vagy gyógyszer nála stb.).

Az egyes ágensek egymással információkat oszthatnak meg közös adatstruktúrákon (pl. az AMSService osztályon) keresztül. A kooperáció ügyes kialakítása elengedhetetlen a jó pontszám eléréséhez.

A robotok cselekvésüket a fentiekben leírt érzékelések (külvilág, robot) és más ágensektől kapott információk alapján alakítják ki, és a step() metódus visszatérési értékeként adják meg a keretrendszer számára. A visszaadott érték alapján a szimulátor ellenőrzi, hogy az adott akció az ágens számára engedélyezet-e (lehet-e arra lépni, gyógyítani vagy sérültet felvenni), és amennyiben igen, végrehajtja az akciót. Az ágensprogramok más módon nem befolyásolhatják a világot, nem mozgathatják a robotokat, nem szállíthatnak vagy gyógyíthatnak sérülteket.

Útvonalkeresés

A feladat egyik kulcseleme a hatékony útvonalkeresés megvalósítása. A RobotPercepcion interfészek keresztül elérhető beépített útvonalkereső hívásai helyett saját algoritmusok is készíthetők. Ennek során kívánság szerint használható a world package AStarSearch statikus osztálya, mellyel A* keresést lehet megvalósítani két cella között a robotok által ismert cellákat figyelembe véve:

public static Path AStarSearch.search(Cell start, Cell target, int maxDistance)

A* algoritmussal kiszámítja a két cella közötti legrövidebb, maximum MaxDistance hosszú utat.
A maxDistance értékét -1-re állítva nincs korlátozás a megtalált út hosszára.
Ha nem található út a két cella között, akkor a függvény NULL értékkel tér vissza.
Az algoritmus megvalósítási részletei a keretrendszer kiadott forráskódjában tanulmányozhatók.

Természetesen saját útvonalkereső algoritmus is implementálható a cellák adataira támaszkodva.

Kooperáció

Bár az ágensek közötti kommunikációval a feladatban nem kell foglalkozni, a kooperáció kialakítása fontos a robotközösségben.

Egy jó megoldás elkészítéséhez az ágensek közötti feladatmegosztással is érdemes foglalkozni. Ehhez nyújt segítséget az AMSService osztály, amelyben további adatstruktúrák és eljárások hozhatók létre ebből a célból.

Mesterséges Intelligencia hallgatói verseny