Designspecifikation Självetablerande sensornätverk med 3G och GPS Version 0.2 Christian Östman Datum: 15 maj 2008 Status Granskad Robert Sandberg 080226 Godkänd
Projektidentitet Gruppens e-post: Hemsida: Beställare: Kund: Kursansvarig: Handledare: cdio2008@googlegroups.com http://www.isy.liu.se/edu/projekt/tsrt71/2008/foi Rikard Falkeborn, Linköpings Universitet Telefon: +46 13 282636, E-post: falkeborn@isy.liu.se FOI, Olaus Magnus väg, 583 30 Linköping Telefon: +46 13 378000 Kontaktperson hos kund: David Lindgren E-post: david.lindgren@foi.se Daniel Axehill, Linköpings Universitet Telefon: +46 13 284042, E-post: daniel@isy.liu.se Christian Lyzell, Linköpings Universitet Telefon: +46 13 282803, E-post: lyzell@isy.liu.se Gruppmedlemmar Namn Ansvar Telefon E-post (@student.liu.se) Christian Östman Projektledare (PL) 070 6665630 chros822 Anna Forsberg Dokumentansvarig (DOK) 070 2037698 annfo613 Robert Sandberg Designansvarig (DES) 073 3892770 robsa577 Oskar Larsson Kvalitetssamordnare (QS) 070 3473716 oskla129 Johan Lundström Testansvarig (TST) 070 2701853 johlu730 Tobias Carlstedt Implementationsansvarig 070 3294398 tobca636 (IMP)
Dokumenthistorik Version Datum Utförda ändringar Utförda av Granskad 0.1 2008-02-21 Första utkast Alla RS 0.2 2008-02-26 Ändringar enligt kommentarer CÖ, RS, RS OL, TC
Innehåll 1 Inledning 1 2 Översikt av systemet 1 2.1 Ingående delsystem........................................ 1 3 Delsystem - Sensornod 2 3.1 Ingående komponenter...................................... 2 3.2 Gränssnitt............................................. 2 3.3 Funktioner............................................ 3 4 Delsystem - Server och operatörsstation 7 4.1 Ingående komponenter...................................... 8 4.2 Databas.............................................. 9 4.3 Gränssnitt............................................. 10 4.4 Funktioner............................................ 10 5 Delsystem - Kommunikation 13 5.1 Ingående komponenter...................................... 13 5.2 Gränssnitt............................................. 13 5.3 Funktioner i sensornoden.................................... 13 5.4 Funktioner i serverenheten.................................... 16
Självetablerande sensornätverk 1 1 Inledning Projektets syfte är att utveckla ett självetablerande sensornätverk. Sensornätverket kan användas för tillfällig övervakning vid speciella händelser såsom exempelvis toppmöten. Sensorerna är utrustade av mikrofoner och kameror. Sensorenheterna ska själva positionera sig via GPS och kommunicera med en server. Kommunikationen ska ske via det befintliga 3G-nätet. Den här designspecifikationen beskriver en färdig produkt enligt kravspecifikationen. 2 Översikt av systemet Figur 1: Systemöversikt. Figur 1 visar systemets ingående delar, deras kopplingar till omgivningen och varandra. Systemet kan delas upp i tre delsystem. Indelningen har gjorts med avsikt att göra utvecklingen av systemet lättare. Nedan beskrivs delsystemen mer ingående. 2.1 Ingående delsystem Systemet är indelat i delsystemen: Sensornod Server och operatörsstation Kommunikation Sensornoden kommer att skicka information via 3G/internet till servern. Detta kommer att ske via kommunikationsdelsystemet. Till servern ska en operatör kunna ansluta via en operatörsstation och därigenom övervaka hela systemet.
Självetablerande sensornätverk 2 3 Delsystem - Sensornod Figur 2: Sensornod. Sensornoden har i huvudsak tre huvuduppgifter. Den första är att den ska kunna samla in information om dess omgivning. Detta kan vara i form av ljud, bild eller video. Den andra är att behandla informationen för att i någon mening avgöra värdet av densamma. Om informationen anses betydelsefull ska denna skickas till servern för loggning och operatören meddelas. Den tredje uppgiften är att fastställa sin position via den i sensorn inbyggda GPS-mottagaren. Figur 2 illustrerar detta. 3.1 Ingående komponenter Sensornoden är utrustad med följande komponenter: Kamera Mikrofon GPS-mottagare 3G-kommunikation f Sensorenheterna består av mobiltelefoner av märket HTC Touch Cruise. Mobiltelefonen använder Windows mobile som operativssystem. Mobilen stödjer C++/C# och kommer därför att programmeras i dessa språk. I telefonen kommer det att finnas ett huvudprogram som körs hela tiden och anropar de funktioner som t.ex. spelar in ljud. Detta huvudprogram (main) initieras automatiskt vid start av telefonen. 3.2 Gränssnitt För att underlätta hantering och programmering har vi valt en mobiltelefonen med operativsystemet Windows Mobile och C++/C#-stöd. Sensornoden kommunicerar med servern via 3G/internet.
Självetablerande sensornätverk 3 3.3 Funktioner Delsystem sensornod kan delas in i ett antal mindre delsystem. Nedan specificeras funktioner som är specifika för dem. 3.3.1 Huvudfunktioner Funktionsnamn: main Inargument: - Variabler: link Huvudprogrammet initieras vid uppstart av telefonen. Programmet initierar delfunktionerna sensor main och comm main node som körs i separata trådar. Som gränssnitt mellan de två trådarna skapas en sändningskö som hanterar utgående data samt en instruktionskö som hanterar inkommande instruktioner från operatören. Figur 3 visar ett flödeschema över programmet. Figur 3: Flödesschema över mainprogrammet. Funktionsnamn: sensor main Inargument: - Variabler: soundupdate, alarm Funktionen sensor main kommer att anropa record, hur ofta bestäms av variabeln soundupdate. Variabeln soundupdate har initialt värdet 20 sekunder. Efter record är klar så anropas ljudbearbetning. Om man vi ljudbearbetning upptäcker en intressant händelse så ska sensorn larma, det vill säga anropa sensor alarm. I sensor main anropas även delfunktionen GPS. Figur 4 visar ett flödesschema. 3.3.2 Larm Funktionsnamn: sensor alarm Inargument: larmtyp Variabler: alarm Denna funktion skickar en larmsignal till servern med larmanledning. Larmet kan komma från GPS om sensorn flyttas eller ifrån ljudbearbetningsfunktionen. Vid larm från ljudbearbetningsfunktionen skickas även ett ljudspektra från situationen.
Självetablerande sensornätverk 4 Figur 4: Flödesschema över sensor main-programmet. 3.3.3 Status Funktionsnamn: node status Inargument: - Variabler: string Denna funktion samlar in informaion om batteristatus och signalstyrka och returnerar detta i en textsträng. Textsträngen ska se ut enligt följande: batteristatus i procent + signalstyrka i lägen mellan 1 och 5. Exempelvis 453 betyder 45 procent kvar av batteriet och signalstyrka 3. 3.3.4 Ljudupptagning Denna delfunktion ansvarar för att ta upp ljud via mikrofonen och lagra detta i telefonens minne i lämpligt format. Denna inspelning ska sedan finnas tillgänglig för att bearbetas. Funktionsnamn: record Inargument: time Variabler: - Funktionen anropas med funktionsnamn och invariabel time. Time anger hur lång tid inspelningen ska ske, med en decimal och max 99,9 s. Time är 3 sekunder om ingen invariabel anges. Funktionen sparar inspelningen i telefonens minne under namnet sound+år+mån+dag+klockslag+time. Exempelvis sound080221152122050 anger ett ljud som spelats in 2008-02-21 klockan 15:21:22 och som är 5,0 sekunder långt. Telefonens minne ska ha en egen katalog för inspelat ljud där allt ljud lagras, denna har namnet sound.
Självetablerande sensornätverk 5 3.3.5 Ljudbearbetning Ljudbearbetningsfunktionen har till uppgift att avgöra när någon intressant händelse inträffar. När så är fallet skickas det intressanta spektrat till operatören. Funktionsnamn: snd manip Inargument: soundfile Variabler: - För att avgöra vad som är intressant mäts volymen och ett spektrum beräknas på inspelat ljud. En analys av spektrumet avgör om det inspelade ljudet betraktas som en intressant händelse eller inte. När ljudet bedöms som intressant så larmas operatören och ett spektrum av ljudet skickas. Ljudfiler sparas i en timme. När ljudet bedöms vara intressant sparas även ett spektra till detta i en timme. 3.3.6 GPS Sensorenheterna är, som tidigare nämnts, mobiltelefoner av märke och sort HTC Touch Cruise. Dessa har inbyggda GPS-mottagare vilka använder NMEA 0183 standarden för dataöverföring. Informationen är specificerat i kommaseparerade meningar (NMEA-sentences) med specifika variabelnamn i början på meningen. Dessa variabelnamn säger vilken typ av information som kan förväntas finnas i meningen. Den viktigaste NMEA meningen är den som benämns med inledande variabelnamnet $GPGGA. Den ger data om 3D position och nogrannhetsdata. En typisk mening kan se ut såhär: $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47 Där: GGA Global Positioning System Fix Data 123519 Tid för positionering 12:35:19 UTC 4807.038,N Latitude 48 deg 07.038 N 01131.000,E Longitude 11 deg 31.000 E 1 Nogrannhet: 0 = invalid 1 = GPS fix (SPS) 2 = DGPS fix 3 = PPS fix 4 = Real Time Kinematic 5 = Float RTK 6 = estimated (dead reckoning) (2.3 feature) 7 = Manual input mode 8 = Simulation mode 08 Antalet satelliter som följs 0.9 Horisontell avvikelse av positionen 545.4,M Höjd, angett i meter över havet (median havsnivå) 46.9,M Höjden för havsnivån (medianvärde) över WGS84 ellipsoiden (empty field) Tid angett i sekunder sen senaste DGPS uppdatering (empty field) DGPS stations ID nummer *47 checksum data, börjar alltid med *
Självetablerande sensornätverk 6 Funktionsnamn: get gps data Inargument: information type Returnerar: gps information Invariabeln information type säger vilken sorts NMEA-mening som ska hämtas. Funktionen ska returnera NMEA-meningen i sträng format. Exempel: queue object(&get gps data( GGA ), 1). Funktionsnamn: changed gps position Inargument: information type, *nmea sentence Returnerar: bool Funktionen kontrollerar om sensorn har flyttats sen senaste mätningen, returnerar en bool. Funktionsnamn: parse gps data Inargument: information type, *nmea sentence Returnerar: gps information Funktionen tar som invariabel vilken typ av NMEA-meningen som ska parsas samt meningen. Funktionen lagrar sedan informationen i en hash.
Självetablerande sensornätverk 7 4 Delsystem - Server och operatörsstation Figur 5: Server och operatör. En användare av systemet utnyttjar en operatörsstation som är i kontakt med sensornätverket via en server. Servern ska alltid vara tillgänglig då sensornätverket är aktivt. Servern placeras stationärt med anslutning till internet. Se figur 5. Operatörsstationen ska vara en dator även den med anslutning till internet. Denna ska ha ett grafiskt gränssnitt som tillåter övervakning och administration av systemet. Servern ska ta emot inkommande data från sensornoderna. Den data som servern ska ta emot är data som sensornoderna kommer att skicka på begäran av operatören eller de alarm sensornoderna skickar då de själva har upptäck något av intresse. Informationen som tas emot av servern ska loggas i en databas. Operatören kopplar upp sig via internet och via MOSARTs Real Time Infrastructure (prti) mot servern. Som gränssnitt mot användare används Netscene för bildvisning och positionering av noder samt moduler för ljuduppspelning. Gränssnittet kommer att visa en karta över det aktuella området, på den kartan kommer sedan noderna att positionera sig där de hör hemma. Noderna kommer att visas som symboler på kartan. Om noden representeras av en ljus symbol så betyder det att den är aktiv. Om noden representeras av en mörk symbol betyder det att det är den senast kända platsen av en nod som server har tappat kontakten med. Detta kommer att se ut ungefär som figur 6. Om sedan en nod larmar om något intressant så ska noden blinka mellan ljus och mörk för att visa att den har något intressant som händer i närheten.
Självetablerande sensornätverk 8 Figur 6: Gränssnitt med karta. För att får reda på mer information om en nod så klickar man på noden i gränssnittet och får då fram en inforuta om noden. Den kommer att se ut ungefär som figur 7 och där ska följande information finnas: Position i kooordinater Senaste tidpunkten man hade kommunikation med noden Loggade händelser Figur 7: Informationsruta om noden. 4.1 Ingående komponenter Servern ska vara en dator som är ansluten till internet och alltid finnas tillgänglig för uppkoppling mot aktiva sensornoder. Servern sparar data från sensornoderna i en databas som sedan operatöresstationen kan läsa. Operatörstationen implementeras på en bärbar dator för ökad rörlighet. Datorn behöver internetuppkoppling för trafik till servern. Inga hårda prestandakrav ställs på denna dator. Den bör köra ett modernt operativsystem samt ha tilläcklig kapacitet för att lagra och köra MOSART-programvaran.
Självetablerande sensornätverk 9 4.1.1 MOSART MOSART testbänk beskrivs som en programvara till för att underlätta exempelvis distibuerade simuleringar. Senariohantering osv. MOSART är utvecklad av bland andra FOI med medarbetare och är baserat på HLA 1516 standarden. I programpaketet finns en testbädd samt ett antal program med olika endamål. Dessa kallas federater. Det i detta dokument beskrivna projektet nyttjar följande prti Federation manager Netscene prti prti är en komersiell programvara som håller reda på trafiken mellan olika så kallade federater i ett nätverk. Dessa federater tillåts prenumerera på information i nätverket. Denna information kategoriseras i klasser. Information når endast de federater som prenumererar på aktuell klass. Informationen skickas genom att sändande federat så kallat publicerar densamma i nätverket. En central RTI nyttjas för administrationen av nätverket. Denna körs på någon dator i nätet. Varje federat har i sin tur en egen unik lokal RTI. Komunikationen sker enligt TCP/IP protokollet. Federation manager Federation manager är en MOSART modul som måste köras ovanpå RTI för att administrera de i nätet ingående federaterna. Federation manager synkroniserar de ingående komponenterna i federatet samt fungerar som server med avseende på de i MOSART specificerade federatreglerna. Netscene Netscene är ett verktyg för att simulera scenarion och har stöd för att presentera data på en kartbild i 2D. Stöd finns i MOSART för att göra koordinattransformationer om så krävs. 4.2 Databas En SQL-databas av typen PostgreSQL kommer att användas för att logga och spara data som kommer från sensornoder och operatörsstation. Nedan kommer relationerna (tabellerna) att definieras. Event Kolumn event id node id time data direction Typ heltal heltal tidpunkt in/out
Självetablerande sensornätverk 10 Outgoing instruction Kolumn event id instruction Typ heltal textsträng Alarm Kolumn event id alarm type ack Typ heltal heltal sant/falskt Alarm type Kolumn alarm id alarm desc Typ heltal textsträng Position Kolumn node id time GPS-data Typ heltal tidpunkt textsträng Resource Kolumn event id native name type data Typ heltal textsträng textsträng fil 4.3 Gränssnitt Som grafiskt gränssnitt mot operatören så kommer programmet Netscene köras, och detta programmeras i språket Java. För att sedan få kontakt med noderna används programmet prti och Federation manager. 4.4 Funktioner 4.4.1 Server Funktionsnamn: change federation object Inargument: object, event Returnerar: success Denna funktion ska ändra egenskaper för något objekt.
Självetablerande sensornätverk 11 Funktionsnamn: get instruction from operator Inargument: - Returnerar: instruction Hämtar instruktion från operatör. Kan vara t.ex. begäran om logg för en nod eller spektrum för en händelse. 4.4.2 Operatörsstation Funktionsnamn: main MOSART Inargument: - Returnerar: - Funktionen main MOSART ska köras hela tiden i bakgrunden i systemet. Då nya data kommer in till servern så ska uppdate node anropas. Funktionsnamn: update node Inargument: node Returnerar: string Funktionen ska hämta all information om en nod från och uppdatera information om dem (larm, uppkopplad, ej uppkopplad och position). Funktionsnamn: request node spectra Inargument: node Returnerar: - Med hjälp av denna funktion begärs ljudet som just nu spelas in från noden, i format av spektrum. Funktionsnamn: request node log Inargument: node Returnerar: - Denna funktion begär det data som finns lagrat i databasen för den noden. Funktionen anropas då operatören begär detta från informationsfönstret som hör till noden. Funktionsnamn: open node info Inargument: node Returnerar: - Denna funktion anropas då noden node blir klickad på, och då öppnas en inforuta om den aktuella noden. I rutan kan man sedan begära att få ljud skickat från noden via funktionen request node spectra.
Självetablerande sensornätverk 12 Funktionsnamn: update map Inargument: time Returnerar: - Ritar upp kartan med nya nodtillstånd, denna funktion körs med jämna mellanrum som bestäms av time.
Självetablerande sensornätverk 13 5 Delsystem - Kommunikation Delsystem kommunikation är det system som ska hantera all kommunikation mellan server, sensorenhet och operatörsstation. Detta innebär att det kommer att finnas funktioner från kommunikationsenheten på både sensorenhet och serverenhet. Kommunikationen mellan operatörsstation och server kommer att ske via färdigbyggda funktioner i MOSART. Kommunikationen från sensornoden till servern kommer att ske via 3G och internet. All kommunikation mellan servern och operatörsstationen kommer att ske via internet. 5.1 Ingående komponenter Kommunikationsenheten består enbart av mjukvara och kommer att utnyttja befintlig utrustnings hårdvara. 5.2 Gränssnitt Delsystemet i sig utgör ett gränssnitt för kommunikation mellan sensorerna, servern och operatörsstationen. 5.3 Funktioner i sensornoden Nedan beskrivs funktioner och program i sensornoden. 5.3.1 Huvudfunktioner Huvudprogrammet i kommunikationssystemet kommer att anropas i sensorns huvudprogram som körs vid uppstart av telefonen. Kommunikationsdelsystemets huvudprogram kommer att upprätta en anslutning över 3G och internet till servern, när denna anlutning är upprättad sändning av objekt i kö. Funktionsnamn: comm main node Inargument: - Variabler: conn link Detta är kommunikationssystemets huvudprogram. I figur 8 visas ett flödesschema över programmet i sensornoden. 5.3.2 Länketablering Funktionsnamn: init Inargument: server ip, *conn link, *link up Returnerar: own ip Funktionen init initierar en länk till server med IP-adress server ip. Den sätter en pekare *conn link för att referera till anslutningen. En flagga link up sätts till true om uppkopplingen lyckas, *link up pekar på denna flagga. Funktionen returnerar ett boolskt värde för om anslutningen upprättades eller inte.
Självetablerande sensornätverk 14 Figur 8: Flödesschema över kommunikationssystemet på noden. Funktionsnamn: kill connection Inargument: *conn link, *link up Returnerar: success Funktionen stänger anslutningen som *conn link pekar på och sätter *link up till false. Returnerar bool success. Funktionsnamn: ping Inargument: *conn link, *link up[, ip] Returnerar: success Funktionen PING:ar IP-adressen ip. Om ip utelämnas PING:as servern och sätter link up därefter. Returnerar bool success.
Självetablerande sensornätverk 15 5.3.3 Sändningskö Funktionsnamn: queue object Inargument: *data/text, prio Returnerar: void Funktionen lägger ett objekt på kö *data/text kan vara en textsträng, pekare till fil eller pekare till en dataström. Man anger även vilken prioritet sändningen har. Objektet läggs sist i sin egen prioritetsnivå. Prio ett är högst prio. Funktionsnamn: object in queue Inargument: void Returnerar: bool Funktionen returnerar sant eller falskt på frågan om ett finns objekt i sändningskön. Funktionsnamn: get next in queue Inargument: void Returnerar: *data/text Funktionen returnerar *data/text som kan vara en textsträng, pekare till fil eller pekare till en dataström. 5.3.4 Sända data Funktionsnamn: send text Inargument: *conn link, text string Returnerar: success Funktionen skickar en textsträng via en anslutning till servern. Funktionsnamn: send file Inargument: *conn link, *file ptr Returnerar: success Funktionen skickar en fil via en anslutning till servern. Funktionsnamn: send stream Inargument: *conn link, *stream ptr Returnerar: success
Självetablerande sensornätverk 16 Funktionen skickar en dataström via en anslutning till servern. Funktionsnamn: send Inargument: *conn link, *data/text Returnerar: success Funktionen tar in data av något slag och skickar det med någon av ovanstående funktioner. 5.4 Funktioner i serverenheten Denna enhet handhar mottagandet och hantering av informationen som skickas från sensornoden. 5.4.1 Huvudfunktioner Funktionsnamn: comm main server Inargument: - Returnerar: - Denna funktion initierar kommunikationen på serverenheten, det vill säga börjar lyssna efter anslutande noder. Figur 9 visar ett flödesschema. Figur 9: Flödesschema över kommunikationssystemet på servern.
Självetablerande sensornätverk 17 5.4.2 Länketablering Funktionsnamn: listen for connection Inargument: port Returnerar: - Denna funktion detekterar inkommande anslutningar från sensornoder på port. Funktionsnamn: establish connection Inargument: ip, *conn link Returnerar: success Denna funktion upprättar en anslutning till sensornoden. Funktionsnamn: open connection Inargument: ip,, *conn link Returnerar: success Denna funktion initierar en anslutning till en sensornod. 5.4.3 Sända/mottaga information Funktionsnamn: receive data Inargument: *conn link Returnerar: data Funktionen tar emot data och avslutar anslutningen. Funktionsnamn: send instruction to node Inargument: instruction, *conn link Returnerar: success Denna funktion skickar en instruktion till noden som sedan ska exekveras på noden. 5.4.4 Sändningskö Funktionsnamn: queue object Inargument: instruction, prio Returnerar: void Funktionen lägger en instruktion till en nod på kö. Man anger även vilken prioritet sändningen har. Objektet läggs sist i sin egen prioritetsnivå. Prio ett är högst prio.
Självetablerande sensornätverk 18 Funktionsnamn: object in queue Inargument: void Returnerar: bool Funktionen returnerar sant eller falskt på frågan om ett finns objekt i sändningskön. Funktionsnamn: get next in queue Inargument: void Returnerar: instruction Funktionen returnerar den instruktion som ligger på tur att skickas. 5.4.5 Logga data Funktionsnamn: store data Inargument: data Returnerar: success Denna funktion sparar mottagen information i databasen.