Mérési jegyzőkönyv készítette Szabó Attila Mesterséges intelligencia alkalmazások gyakorlat, ELTE IK 2006/2007-2 1. RFSPP projekt 1.1. SPP demo alkalmazás rf-mems-ekre: A Survivable Pipeline Protocol leírása és a protokollhoz használt definíciók, illetve fogalmak [1]-ben találhatók. Az feladat kerekes székkel közlekedő emberek helyzetének nyomon követése. Ehhez minden kerekes székre kerül néhány rf-mems egység, továbbiak a falakon és a ház környékén kerülnek elhelyezésre. A kerekes székek relatív, illetve abszolút helyzete a rádió- és ultrahang jelek segítségével határozható meg. Bár kevés az információátvitel, megfelelő szervezés nélkül az egységek nem tudják megszerezni a szükséges adatokat. Az adatforgalmazásnak egy meghatározott rendszert (sorrendet) kell követnie (egyszerre nem rádiózhatnak többen adott sugáron belül), és ez a sorrend folyamatosan változik/változhat mozgás során. A számítások és a kommunikáció szervezését az SPP oldja meg. 1.2 Az SPP feladat: elosztott, központi ágens nélküli helyzetmonitorozó rendszer készítése Olyan PO-kat (Pipeline Operation) kell meghatározni, amik egyrészt biztosítják a helyzet meghatározásához szükséges információkat a cricketeknek, másrészt megfelelő kommunikációs sorrendet definiálnak. Ezek a PO-k a következők: három bázis PO, (origó, pozitív x irányt jelölő, illetve pozitív y irányt jelölő bázisok) melyekben egy-egy cricket dolgozik, illetve egy negyedik, amihez többen csatlakozhatnak. Ez utóbbi tagjai a három bázis által sugárzott adatokból számolják a saját helyzetüket háromszögelés segítségével. 1.3. Az eszköz:crossbow Cricket Projekt szempontjából fontosabb technikai adatok: Processzor: 8Mhz-es 8 bites architektúrájú ATLmega128L Program-memória/RAM: 128KB/4KB (!) Külső memória: 512KB flash Rádió: 868/916MHz, 433MHz, vagy 315MHz Szenzor: ultrahang adó-vevő Programozáshoz használt szoftverek: TinyOS 1.1.15. telepítő (tartalma: cygwin, jdk, fordítóprogram, szimulátor, stb.) 1.4. Programcsomagok A használt programcsomagokat a tos (TinyOS programok), illetve a cricket (Java programok) könyvtárak tartalmazzák, lásd 7.3-7.4. 2. TinyOS kiegészítések
2.1. Háromszög-távolságmérés Mivel az ultrahang adott esetben a különböző tömör felületekről visszaverődve (plafon, padló, stb.) érkezik, a távolságmérő nem a két cricket valós távolságát adja meg. Ilyenkor a jel egy egyenlő szárú háromszög szárain megy végig (feltételezve egyrészt, hogy a többszörös visszaverődés kizárható, másrészt, hogy a két cricket azonos, padlóval párhuzamos síkban van). A fentiek alapján a következőkkel egészítettem ki a távolságmérést: a DistanceMeasureM modulban beállítható a visszaverő felület távolsága (kezdetben ez nulla). A beállítást a megjelenítő programmal lehet elvégezni a szoftveres ki/bekapcsoláskor (2.2.). Ha a mért távolság fele nagyobb a megadott értéknél, akkor a program automatikusan háromszögtávolságot számol, egyébként az adatot légvonalban vett távolságnak tekinti. 2.2. Szoftver ki/bekapcsolás A tesztelés könnyítése érdekében a cricketeken futó programot a megjelenítő program segítségével lehet megállítani és elindítani, megspórolva ezzel az áramtalanítást. A szoftver újraindításakor a cricket üzenetben megkapja a visszaverő felület távolságát. A megjelenítő programból történő leállításkor a főprogram futása áll meg, indításkor ez indul újra: ennek hatása megegyezik a ki- és bekapcsolás eredményével. A szolgáltatást az RFSwitchM modul biztosítja, ami SwitchMsg típusú üzeneteket fogad és ezek alapján vezérli az RFSPPSystemM modul StdControl komponensét (Start(), illetve Stop() műveleteinek hívásával). 2.3. Külső tag bug A rendszer felállási idejének tesztelésekor derült arra fény, hogy egy-egy cricket a negyedik PO tagjaként viselkedik, de nem szerepel a többiek nyilvántartásában. A hiba a nyilvántartás összehangolásának korlátai miatt adódott (a sorrend eleje három hosszan kerül elküldésre ellenőrzésképp). Kiküszöbölése a sorra kerülés ellenőrzésével sikerült: aki több körön keresztül nem kerül sorra (a konkrét hiba esetében pl. örök negyedik a saját nyilvántartása szerint), újraindítja a csatlakozási eljárást. 3. Java kiegészítések A Java forráskódot kiegészítettem a 2.1-2.2.-ben leírtakhoz szükséges vezérlőkkel és üzenetküldéssekkel. Készült egy naplófájlokat feldolgozó program is. 5. Mérések 5.1. Indítások mérése a bug javítása után (a vízszintes tengelyen a cricketek száma, a függőlegesen az eltelt idő másodpercben látható): A szórás igen nagy, emellett a negyedik PO méretének növekedésével (7,12,19,22 cricket) erősen (exponenciálisan?) nő a görbe meredeksége, mivel a kötött sorrendű rádiózás rontja a csatlakozás esélyét (a csatlakozni akaró a csatlakozásra szánt idő alatt nem kap elég engedélyt, több próbálkozás szükséges). A mérések a programindítástól (összes cricket egyszerre indult) az utolsó cricket csatlakozásáig tartottak.
5.2. A fenti ábra alapjául szolgáló mérési eredmyények: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 31 23 19 33 31 26 33 41 20 23 26 30 20 27 23 15 56 35 34 45 36 47 49 47 47 47 43 87 44 42 97 20 101 86 46 87 67 68 59 132 50 125 107 79 111 61 62 25 174 117 145 139 131 135 139 223 104 115 237 112 146 159 105 5.2. távolságok mérésének pontossága, háromszög-mérés nélkül (az ábrák skálái cm-ben értendők): 5.2.1. Szintben lévő cricketek távolságmérései, egymás felé fordított soros porttal: A távolságonkénti 25 mérés átlaga és szórása mutatja, hogy a soros port olyan mértékben árnyékolja le az ultrahangvevőt, hogy az erősen zavart jelet tud csak fogni. 120 cm-es távolságnál már egyértelműen egy fix távoli felületről (a 191cm-re levő plafonról) verődik vissza a jel, ezért a szórás minimálisra csökken.
5.2.2. Szintben lévő cricketek távolságmérései, egymás felé fordított soros porttal: A plafonról visszaverődő jel viszonylag nagy szórást mutat és figyelembe véve, hogy a plafon 191cm-re van, a mérés pontatlan. 5.2.3. Szintben lévő cricketek távolságmérései, egymás felé fordított ultrahang adóvevővel:
A szórás elhanyagolható, de a mérés konzekvensen kisebb a valós értéknél. Árnyékolás nincs, a szenzor a légvonalbeli távolságot méri. 6. Kapcsolódó anyagok [1] A. Meretei, Z. Palotai, A. Lőrincz: Systems and methods for sensing physiologic parameters of the human body and achieving a therapeutic effect - United States Patent 20070043591 [2] Zia, T.A., and Zomaya, A.Y., An Analysis of Simulations and Programming in Wireless Sensor Networks, In the proceedings of the International Workshop on Sensor Networks and Applications [3] Alec Woo The Mica Sensing Platform, Jan 15th, 2002 NEST Retreat 7. Függelék 7.1. Telepítés A http://www.tinyos.net/download.html oldalon leírtak alapján. Szimulátoros futtatásokhoz fontos, hogy cygwin alatt a PATH változó a telepítő által felrakott jdk-t tartalmazza (minden esetleges más jdk előtt). 7.2. Frissítések
Az update.zip-ben található állományokra kell lecserélni a TinyOS könyvtárstruktúra megfelelő elemeit. 7.3. TinyOS programcsomag Az eredeti kód a commented_tos.zip tömörített fájl tartalma, a kiegészített változat a tos.zip-ben található. 7.4. Java programcsomag A cricket.zip tömörített fájl tartalma. 7.5. Fordítás/futtatás cygwin alatt 7.5.1. Szimulátorral Fordítás: make pc Futtatás: A simdriver.jar és a getenv.dll legyen a futtatható állománnyal egy könyvtárban. A parancsokat természetesen ebből a könyvtárból kell kiadni. Egyik ablakban: export DBG=temp./build/pc/main.exe [options] num_nodes //Pl.:./build/pc/main.exe -gui -b=1 5 > log_fixstarttime_5_1.txt Másik ablakban: java -cp.\;simdriver.jar net.tinyos.sim.simdriver -gui -plugins nipg/spp/tinyviz 7.5.2. Crickettel Fordítás: Feltöltés: make cricket make reinstall.1 cricket //Ahol a reinstall.x-ben az x a TOS_LOCAL_ADDRESS azonosító. Futtatás (NetBeans): run file "MainLocatiionTracker"