Ágensek (robotok)
A keretrendszer négyféle robot vezérlését támogatja: Rescue, Medic, Drone és Sensor.
- A Rescue egy szállítórobot, alapvető célja sérültek mentése.
- A Medic is alkalmas szállításra, de elsődleges célja a sérültek életben tartása.
- A Drone egy alacsony költségű repülő robot, amely a kezdetben ismeretlen terep felderítésére alkalmas.
- A terepen előzetesen "ledobhatók" Sensor ágensek, amelyek a ledobás környezetéről nyújtanak valósidejű információkat.
A feladat az egyes ágensek programjanak elkészítése. Ez a rescueagents csomagban található *Control osztályok segítségével tehető meg.
Az ágensek működése
Az ágensek működtetése a szokásos észlelés - következtetés - cselekvés működési modell szerint történik.
A szimuláció során az ágensek vezérlőprogramjait a keretrendszer aktiválja a step() metódusuk meghívásával. A robotvezérlők ebben a metódusban határozzák meg (következtetés) a robotok elvégzendő cselekvéseit az érzékeléseik alapján.
Az ágensek csak a közvetlen környezetük érzékelésére képesek (van egy meghatározott látósugaruk, és nem látnak át falakon), így a világról mindig csak korlátozott információkkal rendelkeznek. Az egyes robotok természetesen megoszthatják egymással észleléseiket és más információkat. A keretrendszer erre a célra biztosít egy "belső" világmodellt (internalWorldMap), amely megkönnyíti az érzékelést és az információmegosztást. A szimulátor a világ ágensek által érzékelt részeit automatikusan leképezi a belső világmodellre. Ez a belső modell további könnyítésként tartalmaz néhány segédfüggvényt is, például útvonalkeresést a legközelebbi sérültig. Fontos azonban azt tudni, hogy a belső világmodell nem feltétlenül tükrözi a teljes aktuális valóságot (lehetnek felfedezetlen területek, illetve egyes cellák állapota futásidőben változhat), és a segédfüggvények sem feltétlenül az optimális megoldást szolgáltatják.
Az ágensek közötti együttműködés kialakítása egy fontos része a feladatnak. Az ágensprogramok mellett kiadott AMSService osztályban a belső világmodell mellett kialakíthatók további közös funkciók (a moveRobotAlongPath mintájára) és adatstruktúrák, amelyek minden ágens számára elérhetők.
Az ágensek cselekvései meghatározzák a mozgásukat (lépés előre, hátra, jobbra illetve balra), illetve a sérültekkel kapcsolatos akcióikat (szállítás, gyógyítás). A kiadott minta ágensvezérlőkekben láthatók a lehetséges cselekvések. A step() metódus visszatérési értéke határozza meg az ágens cselekvését.
A robotoknak véges mennyiségű energia áll a rendelkezésükre a cselekvések végrehajtására (robot.getBatteryLifeTime() metódus). Ha elfogy, a robot nem tud több akciót végrehajtani, és a környezetét sem érzékeli a továbbiakban. Például a szenzorágensek meglehetősen kevés energiával rendelkeznek, így működésük a szimuláció közben jellemzően leáll. A Medic robot számára az energia mellett a sérültek állapotának javítására használt orvosság is véges erőforrás (robot.hasMedicine()).