Diplomarbeit Location Sensing für ortsabhängige Dienste auf Basis von Web-Services Tino Fleuren Juli 2004 Betreuer: Prof. Dr. Paul Müller Dipl. Inform. Markus Hillenbrand Fachbereich Informatik AG Integrierte Kommunikationssysteme TU Kaiserslautern - Postfach 3049 - 67653 Kaiserslautern Kurzfassung Eine Hauptaufgabe von ortsabhängigen Systemen ist die Erfassung des Aufenthaltsortes einer Person und die Ermittlung der physikalischen Ressourcen und der Software Dienste in ihrer Nähe, um maßgeschneiderte und nutzerabhängige Dienste bereitstellen zu können. Für ortsbewusste Applikationen ist ein Positionsdienst wünschenswert, der standardisierte Positionsinformationen anbieten kann, mehrere Lokalisierungs- technologien gleichzeitig einsetzt und damit zum Beispiel innerhalb und außerhalb von Gebäuden operieren kann. Außerdem sollte ein solcher Positionsdienst - transparent für die Applikation - die Steuerung und den Übergang von einer Technik zur nächsten übernehmen. Ist dieser Positionsdienst auf Basis von Web-Services realisiert, so ermöglicht er einen standardisierten Zugriff auf von Diensten bereitgestellten Operationen mittels einer Kommunikation zwischen heterogenen Plattformen. Ziel dieser Arbeit ist es einen solchen Positionsdienst zu modellieren und zu entwickeln. Ich versichere, dass ich die vorliegende Diplomarbeit selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe. Tino Fleuren 1 2 EINLEITUNG ......................................................................................................... 1 1.1 MOTIVATION ...................................................................................................... 1 1.2 AUFGABENSTELLUNG DER DIPLOMARBEIT ........................................................ 3 1.3 ANFORDERUNGEN AN DEN POSITIONSDIENST ..................................................... 3 1.4 AUFBAU DIESER ARBEIT .................................................................................... 4 GRUNDLAGEN DER LOKALISIERUNG ......................................................... 5 2.1 POSITIONIERUNGSMODELLE ............................................................................... 5 2.1.1 Geometrische Positionierungsmodelle...................................................... 5 2.1.2 Symbolische Positionierungsmodelle ........................................................ 9 2.1.3 Bezeichnungen......................................................................................... 12 2.1.4 Kombinationen von Positionierungsmodellen ........................................ 13 2.2 LOKALISIERUNGSTECHNIKEN ........................................................................... 14 2.2.1 Triangulation .......................................................................................... 14 2.2.2 Analyse des Ortes .................................................................................... 18 2.2.3 Näherungsmessung ................................................................................. 19 2.3 3 SENSOR-FUSION ............................................................................................... 20 LOKALISIERUNGSSYSTEME ......................................................................... 23 3.1 VERGLEICHSKRITERIEN .................................................................................... 23 3.2 SATELLITENGESTÜTZTE LOKALISIERUNGSSYSTEME ........................................ 26 3.2.1 GPS ......................................................................................................... 26 3.2.2 Differential GPS ...................................................................................... 31 3.2.3 GLONASS................................................................................................ 32 3.2.4 3.3 GALILEO ................................................................................................ 32 ZELLFUNKNETZGESTÜTZTE LOKALISIERUNGSSYSTEME ................................... 33 3.3.1 Cell ID ..................................................................................................... 33 3.3.2 Enhanced Observed Time Difference (E-OTD) ...................................... 34 3.3.3 Wireless Assisted GPS (A-GPS) .............................................................. 35 3.4 4 INDOOR LOKALISIERUNGSSYSTEME ................................................................. 36 3.4.1 Active Badge System ............................................................................... 36 3.4.2 Active Bat System .................................................................................... 37 3.4.3 Cricket ..................................................................................................... 39 3.4.4 RADAR .................................................................................................... 40 3.4.5 Smart Floor ............................................................................................. 42 MODELLIERUNG DES POSITIONSDIENSTES............................................ 45 4.1 HAUPTKOMPONENTEN ..................................................................................... 45 4.2 POSITIONIERUNGSMODELL ............................................................................... 49 4.2.1 Geometrisches Modell ............................................................................. 49 4.2.2 Symbolisches Modell ............................................................................... 50 4.2.3 Logisches Gebiet ..................................................................................... 51 4.2.4 Lokalisierbares Objekt ............................................................................ 53 4.2.5 Inklusion eines lokalisierbaren Objektes in einem logischen Gebiet...... 54 4.3 KOMPONENTENBESCHREIBUNG ........................................................................ 56 4.3.1 Location-Sensing-Device ........................................................................ 57 4.3.2 Position-Service-Engine.......................................................................... 60 5 4.3.3 Position-Service-Engine und LSDevice der Infrastruktur ...................... 64 4.3.4 Position-Web-Service .............................................................................. 64 REALISIERUNG .................................................................................................. 69 5.1 VORGABEN....................................................................................................... 69 5.2 TECHNISCHE GRUNDLAGEN ............................................................................. 69 5.2.1 Holux GM-200 Smart GPS-Empfänger .................................................. 69 5.2.2 Serielle Schnittstelle ................................................................................ 70 5.2.3 Java Web-Service Development Pack ..................................................... 70 5.3 PROTOTYPISCHE IMPLEMENTIERUNG ............................................................... 71 5.3.1 Die Hilfsklassen ...................................................................................... 72 5.3.2 Die Position Engine ................................................................................ 74 5.3.3 Der Position-Web-Service....................................................................... 78 5.3.4 Client-Applikation ................................................................................... 82 6 ZUSAMMENFASSUNG UND AUSBLICK ....................................................... 85 7 ANHANG A ........................................................................................................... 87 7.1 DIE SCHNITTSTELLE ZUR HARDWARE .............................................................. 87 7.2 DIE SCHNITTSTELLE DES WEB-SERVICES ......................................................... 88 8 ANHANG B ........................................................................................................... 90 9 LITERATURVERZEICHNIS ............................................................................. 92 1 Einleitung 1.1 Motivation Die Hauptaufgaben von ortsabhängigen Systemen sind die Erfassung des Aufenthaltsortes einer Person und die Ermittlung der physikalischen Ressourcen und der Software Dienste in ihrer Nähe, um maßgeschneiderte und nutzerabhängige Dienste bereitstellen zu können. Ortsbewusste Applikationen sollen zum Beispiel Fragen beantworten, wie: Wo befindet sich Peter? Welcher Drucker ist in seiner Nähe? Auf welchen Weg erreicht Peter den Drucker? Hat die ortsbewusste Applikation die Position ermittelt, kann sie zum Beispiel in einem Verzeichnisdienst nachschauen, wo sich der nächste Drucker befindet und wie Peter dorthin gelangt. Navigationssoftware für Autofahrer, (aber auch für Wanderer, Radfahrer oder InlineSkater) ist bereits ziemlich verbreitet, aber viele Anwendungsgebiete, in denen Positionsinformationen benötigt werden, sind noch unterentwickelt. Zum Beispiel kann durch zentimetergenaue Bodenbearbeitung mithilfe von Geodaten, Satellitenbildern und GPS (Global Positioning System) - das so genannte „Precision Farming“- die landwirtschaftliche Produktivität erhöht werden. Aber wie erfolgt die Positionsbestimmung? In den letzten Jahren sind eine Vielzahl von Lokalisierungssystemen (engl. location sensing systems) entwickelt worden, die in der Lage sind, die Position von mobilen Objekten zu bestimmen. Sie wurden für die unterschiedlichsten Anwendungen konzipiert und variieren daher stark in der Art der Positionsbestimmung und der Darstellung der Positionsdaten. Einige funktionieren nur außerhalb von Gebäuden, wie GPS, andere nur innerhalb von Gebäuden mithilfe einer Kombination aus einer Lokalisierungsinfrastruktur und tragbaren Rechengeräten. Für ortsbewusste Applikationen ist nun ein Positionsdienst wünschenswert, der standardisierte 1 Positionsinformationen anbieten kann und mehrere Lokalisierungstechnologien gleichzeitig einsetzt, um damit innerhalb und außerhalb von Gebäuden operieren zu können. Außerdem sollte ein solcher Positionsdienst - transparent für die Applikation die Steuerung und den Übergang von einer Technik zur nächsten übernehmen. Dieser Positionsdienst sollte auf Basis von Web-Services realisiert werden, da diese Zugriff auf - von Diensten bereitgestellten - Operationen mittels einer Kommunikation zwischen heterogenen Plattformen ermöglichen. Die ortsbewusste Applikation wird auf einem tragbaren Rechengerät ausgeführt und kann den Positionsdienst über Internet zum Beispiel mit Wireless-LAN- oder Handy-Verbindungen ansprechen. Abbildung 1.1: Positionsdienst Abbildung 1.1 zeigt ein System, das einen Positionsdienst benutzt. Die ortsbewusste Applikation erhält von diesem die eigene Position und kann weitere Informationen von einem Verzeichnisdienst beziehen. Es wäre auch denkbar, dass die mobilen Geräte sich bei einem Trackingdienst registrieren, diesem ihre Position übermitteln und Positionen von anderen Teilnehmern abfragen können. Für dieses System bildet der Positionsdienst die Grundlage. Ziel dieser Diplomarbeit ist es einen solchen Positionsdienst zu modellieren und zu entwickeln. 2 1.2 Aufgabenstellung der Diplomarbeit In dieser Arbeit wird ein Positionsdienst entworfen, der ortsbewussten Applikationen über eine API (engl. application programming interface) zur Verfügung gestellt wird. Eine einfache Schnittstelle abstrahiert von den Details der einzelnen benutzten Lokalisierungssysteme und vereinheitlicht deren Funktionalität. Zu diesem Zweck werden zunächst (in einem Vergleich) anhand von geeigneten Kriterien Gemeinsamkeiten und Unterschiede von Lokalisierungssystemen aufgezeigt. Die Kriterien werden so ausgewählt, dass aus ihnen die API des Positionsdienstes abgeleitet werden kann. Die Realisierung des Positionsdienstes erfolgt auf Basis von WebServices in Java. Dieser Positionsdienst wird mit einer realen Anbindung eines GPSEmpfängers von Holux (GM-200) in einer Testumgebung an der TU Kaiserslautern ausgeführt. 1.3 Anforderungen an den Positionsdienst Der zu entwickelnde Positionsdienst soll folgende Anforderungen erfüllen: Bereitstellen von symbolischen und geometrischen Positionsinformationen Positionen können unterschiedlich dargestellt werden. Die meisten Lokalisierungssysteme verwenden geometrische Positionen, d. h. Koordinaten in einem Koordinatensystem. Für viele Anwendungsfälle sind aber menschenlesbare abstrakte, sogenannte symbolische, Positionsangaben von Vorteil. Daher müssen Funktionen zur Verfügung gestellt werden, die für Konvertierungen zwischen geometrischen und symbolischen Angaben benutzt werden können. Realisierung des Positionsdienstes auf Basis eines Web-Services, den jede ortsbewusste Applikation über eine entsprechende API nutzen kann Der Zugriff auf den Positionsdienst soll standardisiert sein, um eine hohe Flexibilität zu erreichen. Um einen standardisierten Zugriff auf den Positionsdienst zu ermöglichen wird dieser als Web-Service realisiert. Dadurch ist es möglich, die eigene Position über eine API abzufragen und die gewünschte Darstellungsform der Position auszuwählen. 3 Einbinden von mehreren Lokalisierungssysteme als Module In der aktuellen Forschung wurden einige interessante Lokalisierungssysteme entwickelt, die für unterschiedliche Anwendungsgebiete eingesetzt werden. Diese sollen als Module in den Positionsdienst integriert werden können, sodass ein gleichzeitiges Benutzen verschiedener Techniken ermöglicht wird. Der Positionsdienst muss dabei den Übergang von einer Technik zur nächsten koordinieren. 1.4 Aufbau dieser Arbeit Die vorliegende Arbeit ist in folgende Kapitel gegliedert. In Kapitel 2 wird Grundlagenwissen zum Thema Lokalisierung vorgestellt. Dazu werden zunächst Modelle zur Darstellung von Positionen beschrieben und danach grundlegende Lokalisierungstechniken erklärt. In Kapitel 3 werden Kriterien aufgestellt, die für den Vergleich der realen Lokalisierungssysteme dienen. Aus diesen Kriterien wird dann in Kapitel 4 der Positionsdienst entworfen. Hierzu wird ein Positionierungsmodell entwickelt, das festlegt, wie Positionen dargestellt werden. In Kapitel 5 werden wichtige Realisierungsaspekte der Umsetzung des Modells in Java beschrieben. Es schließen sich eine Zusammenfassung und ein Ausblick an. 4 2 Grundlagen der Lokalisierung Es gibt viele Möglichkeiten für die Darstellung von Positionen. Für ein System, das die Benutzung von mehreren Lokalisierungstechnologien realisiert, ist es wichtig, die verschiedenen Formen zu kennen und ein einheitliches Format anzubieten. Daher werden in diesem Kapitel Modelle für die Positionierung aufgezeigt. Ferner werden einige Technologien zur Positionsbestimmung beschrieben. Dieses Grundlagenwissen ist notwendig, um existierende Lokalisierungssysteme zu verstehen. 2.1 Positionierungsmodelle Modelle für die Positionierung bilden die Grundlage jeder Positionsbestimmung. Sie legen das Format für die Positionsangabe fest. Ein Lokalisierungssystem kann zwei Klassen von Informationsdaten bereitstellen: geometrische und symbolische. In geometrischen Modellen werden Positionen als Punkte in einem n-dimensionalen-Koordinatensystem dargestellt. Im Gegensatz dazu werden bei den symbolischen Modellen die Positionen in von Menschen lesbaren Bezeichnern, wie beispielsweise Gebäudenummern, angegeben. 2.1.1 Geometrische Positionierungsmodelle Geometrische Positionierungsmodelle verwenden Koordinatensysteme. Ein Koordinatensystem wird durch seine Darstellungsformen (u. a. kartesisch, polar, Höhe-Breite-Koordinaten) und seinen Ursprung definiert. Innerhalb von Gebäuden wird zum Beispiel oft der Empfänger als Ursprung angegeben und dann ein kartesisches Koordinatensystem benutzt. Außerhalb von Gebäuden basieren die Referenz-Koordinatensysteme auf möglichst exakten Beschreibungen der Größe und Gestalt der Erde. Die Bestimmung der Figur der Erde ist eine der Hauptaufgaben der Geodäsie, d. h. der Geowissenschaft, die sich mit der Vermessung der Erdoberfläche und ihrer Objekte sowie dem Erdschwerefeld beschäftigt. Da die Oberfläche der Erde von sehr komplexer Form ist, werden zu deren Abstraktion und Vereinfachung geodätische Bezugssysteme eingeführt. Dazu gehören die mathematischen Lagebeschreibung Bezugsflächen sowie die Kugel und physikalische Rotationsellipsoid Bezugsfläche für Geoid die als 5 Höhenbezugssystem. Das Geoid ist jene Niveaufläche (Äquipotentialfläche) des Erdschwerefeldes, die in mittlerer Höhe des Meeresspiegels verläuft. Die geodätischen Bezugsflächen besitzen infolge ihrer gekrümmten Oberfläche für Berechnungen wie Distanzen und Flächen mathematisch ungünstige Eigenschaften. Aus diesem Grunde werden Kartenprojektionen eingeführt, die ein ebenes Abbild der Erdoberfläche liefern. Es sind eine Vielzahl unterschiedlicher Koordinatensysteme in Gebrauch, die auf verschiedenen geodätischen Daten, Bezugssystemen und Projektionsmethoden basieren. Einige davon werden im Folgenden kurz vorgestellt. 2.1.1.1 Erdfeste geozentrische Koordinatensysteme Ein erdfestes geozentrisches Koordinatensystem (engl. earth-centered, earth-fixed) muss in wohldefinierter Weise fest mit dem Erdkörper verbunden sein. Man nennt ein solches terrestrisches Bezugssystem „Vereinbartes erdfestes System“ (engl. conventional terrestrial system, CTS). Der Ursprung des erdfesten Koordinatensystems liegt im Erdmittelpunkt des jeweiligen Referenzellipsoiden. Die z-Achse steht normal zur Äquatorebene und zeigt zum Nordpol, die x-Achse liegt in der Äquatorebene und weist auf den Nullmeridian durch Greenwich und die y-Achse vervollständigt das rechtshändige, orthogonale Achsenkreuz (s.Abbildung 2.1). Abbildung 2.1: Erdfestes geozentrisches Koordinatensystem 6 2.1.1.2 Geographische Koordinatensysteme Das geographische Koordinatensystem aus Längengrad (engl. longitude), Breitengrad (engl. latitude) und Höhe (engl. height) ist das bekannteste und am häufigsten verwendete System sowohl zur zweidimensionalen als auch zur dreidimensionalen Positionsangabe. Bei diesen Koordinatensystemen handelt es sich um ebene Bezugssysteme, mit dessen Hilfe Bereiche der als Ellipsoid oder Kugel angenommen Erde in einer Ebene betrachtet werden können. Für die Abbildung der Erdoberfläche auf eine Ebene gibt es verschiedene Projektionsverfahren aus dem Bereich der Kartographie. All diese Verfahren nehmen Bezug auf geodätische Referenzsysteme wie das World Geodetic System 1984 (WGS84), das zum Beispiel beim Global Positioning System (GPS; vgl. Kapitel 3.2.1) benutzt wird, oder das Europa Datum von 1950 (ED50). Hierbei liegen die Unterschiede zwischen den Bezugssystemen in der Verwendung verschiedener Referenzkörper und -parameter. Die Referenzkörper werden, je nachdem ob die ganze Erde (WGS84) oder nur Teilgebiete wie etwa Europa (ED50) abgebildet werden sollen, entsprechend an den Erdkörper angepasst. Abbildung 2.2: Geographisches Koordinatensystem [DANA95] Die Referenzebenen zur Definition von Länge und Breite sind die Äquatorebene und die Hauptmeridianebene, die senkrecht zur Äquatorebene steht und den Null- bzw. Hauptmeridian (engl. prime meridian), der durch Greenwich verläuft, enthält. Die geodätische Breite eines Punktes ist definiert als der Winkel zwischen der Äquatorebene und dem Lot an dem Referenzellipsoiden in dem betrachteten Punkt. Die geodätische Länge wird bestimmt durch den Winkel zwischen der Hauptmeridianebene, und der 7 senkrecht zur Äquatorebene stehenden Ebene, die den Punkt enthält (s. Abbildung 2.2). Die Angabe einer geodätischen Länge oder Breite erfolgt in der Einheit Grad (°), Minuten (’) und Sekunden ("). Die Distanz in Meter von der Oberfläche des Referenzellipsoiden zu einem Punkt in orthogonaler Richtung zum Ellipsoiden, gibt die geodätische Höhe eines Punktes an. 2.1.1.3 Die Konforme Koordinatensysteme konformen Koordinatensysteme basieren auf den geographischen Koordinatensystemen. Jedoch wird hier ein anderes Projektionsverfahren verwendet. Die Oberfläche des Referenzellipsoiden wird in Streifen, die sogenannten Meridianstreifen, eingeteilt. Bei der Universal Transverse Mercator (UTM) Projektion wird die Erdoberfläche zum Beispiel entlang des Äquators in sechzig 6° breite Streifen, die etwa von 80° nördlicher bis 80° südlicher Breite reichen, aufgeteilt. Abbildung 2.3: Konforme Koordinatensysteme Die konformen Koordinaten eines Punktes werden durch einen Rechts-/Ostwert (E) und einen Hoch-/Nordwert (N) angegeben (s. Abbildung 2.3) Der Rechtswert ist der Abstand vom Bezugsmeridian des Abbildungsstreifens bis zur Position des Objektes. Der Hochwert wird bestimmt durch den Abstand (bzw. die Bogenlänge) des gesuchten Punktes vom Äquator, gemessen entlang des Bezugsmeridians. 8 Abbildung 2.4: Universal Transverse Mercator Zonen [DANA95] Bei UTM und anderen konformen Koordinatensystemen werden die Meridianstreifen mit Bezeichnern versehen und zusätzlich in Zonen unterteilt (s. Abbildung 2.4). Innerhalb dieser Zonen wird die Position eines Objektes wiederum durch einen vom linken Zellenrand gemessenen Rechtswert und einen vom unteren Zellenrand gemessenen Hochwert angegeben. Eine vollständige Positionsangabe besteht demnach aus der Angabe der entsprechenden Zone, einem Rechts- und einem Hochwert. 2.1.2 Symbolische Positionierungsmodelle Bei den symbolischen Positionierungsmodellen werden Standorte und Objekte mit abstrakten Bezeichnern versehen, die der Angabe des Aufenthaltsortes dienen. Es bietet sich an, Standorte mit Mengen und Objekte mit Elementen dieser Mengen zu identifizieren. Eine Positionsangabe könnte folgendermaßen aussehen: „Pathfinder“ befindet sich auf dem „Mars“, d. h. Pathfinder Mars. Es sind mehrere symbolische Positionierungsmodelle vorstellbar, die nachfolgend erläutert werden. 2.1.2.1 Zellenbasiertes Positionierungsmodell In diesem Modell wird ein Standort von dem Lokalisierungssystem in einzelne, von Positionssensoren überwachte, Gebiete aufgeteilt, denen eindeutige symbolische Bezeichner zugeordnet werden. Diese Gebiete werden Zellen genannt, deren 9 komplizierte reale Gestalt durch möglichst einfache geometrische Figuren modelliert wird. Abbildung 2.5: Zellenbasiertes Positionierungsmodell In Abbildung 2.5 sieht man ein Beispiel von Zellen zweier Lokalisierungssysteme, die sich überschneiden. Das erste Lokalisierungssystem ist das Global System for Mobile Communications (GSM) (s. Kapitel 3.3) und das zweite ist das Active Bat System (s. Kapitel 3.4.2). Sind gleichzeitig mehrere Lokalisierungssysteme vorhanden, die sich in der Genauigkeit unterscheiden, kann es passieren, dass sich die Zellen überlappen und Objekte sich gleichzeitig in mehreren Zellen befinden. Es könnte ein Objekt in der GSM 2- und gleichzeitig in der Active Bat 3-Zelle lokalisiert werden. Die Überschneidungen von Zellen werden bei diesem Modell nicht berücksichtigt, d. h. sie können nicht festgestellt werden. 2.1.2.2 Zonenbasiertes Positionierungsmodell Teilt man den Standort in die nicht–überlappenden Gebiete ein, die bei dem zellenbasierten Modell entstanden sind, so ergibt sich das zonenbasierte Modell [Leon98]. 10 Abbildung 2.6: Zonenbasiertes Positionierungsmodell Jedes nicht–überlappende Gebiet, die sogenannte Zone, ist Teil einer oder mehrerer Zellen. Da sich die Zonen nicht überschneiden können, kann sich ein lokalisiertes Objekt nur in genau einer Zone befinden, auch wenn es in mehreren Zellen verschiedener Lokalisierungstechnologien geortet wird. Dadurch erhöht sich die Genauigkeit der Positionsangabe gegenüber dem zellenbasierten Modell. Ein Objekt, das sich in Zone E befindet, wird beim zellenbasierten Modell von den Lokalisierungssystemen in den Zellen GSM 2, Active Bat 1 und Active Bat 2 erfasst, was ein viel weiteres Lokalisierungsfeld einschließt (s. Abbildung 2.6). 2.1.2.3 Domänenbasiertes Positionierungsmodell Ein Nachteil des zellen- als auch des zonenbasierten Modells ist, dass keine Beziehungen zwischen den Zellen bzw. Zonen spezifiziert werden können. Bei dem domänenbasierten Positionierungsmodell werden die abstrakten Gebiete durch eine hierarchische Ordnung in eine Relation gesetzt. Eine Domäne entspricht dabei einer Betrachtungsebene, die Gebiete mit gleichen Eigenschaften zusammenfasst, wie zum Beispiel alle Gebäude. Die Relation könnte hier entsprechend der geometrischen Positionen und der Gebietsgrößen definiert werden, wie zum Beispiel Raum 344 „ist Teil von“ Gebäude 32. Es sind aber auch andere Ordnungen denkbar, wie zum Beispiel Raum 348 „gehört zum“ Fachbereich Informatik (s. Abbildung 2.7). Ist ein lokalisierbares Objekt Mitglied einer bestimmten Domäne, so befindet es sich auch in allen „Vater“-Domänen. 11 Abbildung 2.7: Domänenbasiertes Positionierungsmodell Domänen können sich, genauso wie Zellen, überschneiden. Allerdings ist es mit dem domänenbasierten Positionierungsmodell möglich, eine Relation zwischen den Domänen und den Zonen anzugeben (s. Abbildung 2.7). In diesem Beispiel ist das abstrakte Gebiet mit dem Namen „Raum 346“ in die Zonen „B“ und „D“ eingeteilt. Eine Kombination aus einem zonenbasierten und einem domänenbasierten Positionierungsmodell ist für symbolische Positionsangaben am besten geeignet. 2.1.3 Bezeichnungen Um den passenden ortsabhängigen Dienst anbieten zu können, müssen manche Applikationen fähig sein, lokalisierte Objekte zu identifizieren oder zu klassifizieren. Insbesondere wenn die Positionsbestimmung Infrastruktur-seitig erfolgt, wird ein automatischer Identifikationsmechanismus benötigt, da die Infrastruktur alle Objekte gleichzeitig erfasst und sie daher unterscheiden muss (s. Kapitel 3.1). Eine allgemeine Technik, die eindeutige Identifizierungen ermöglicht, ist der globale Namensdienst, der die Vergabe von global eindeutigen Bezeichnern (engl. globally unique identifiers, GUID) zentral steuert. Das zu lokalisierende Objekt sendet seine GUID an das Lokalisierungssystem und dieses kann dann positions- und objektabhängige Dienste bereitstellen. Dem Besucher eines Museums könnte zum Beispiel das nächstliegende Ausstellungsobjekt in seiner Muttersprache beschrieben werden. Bei lokalen Namensdiensten findet die Namensvergabe beim Nutzer statt. Versuche diese Art von Namensdienst zu realisieren, wurden unter anderem bei der ortsbewussten Anwendung comMotion, die am MIT Media Laboratory entwickelt wurde, untersucht 12 [NaSc00]. Das Ziel dieser Anwendung ist es bestimmte Orte, die der Nutzer häufig aufsucht, mit ToDo-Listen zu versehen, so könnte die Einkaufsliste eines Nutzers mit seinem Lebensmittelgeschäft verbunden werden. Diese Anwendung benutzt für die Lokalisierung das Global Positioning System (s. Kapitel 3.2.1). Das comMotion-System ist so konzipiert, dass es das Ortsverhalten des Anwenders erlernt. Sobald der Benutzer zum dritten Mal am selben Ort vom System registriert wird, erhält er die Aufforderung, diesen Ort mit einer persönlichen virtuellen Bezeichnung zu versehen. Die satellitenbasierten GPS-Koordinaten werden somit in anwenderverständliche, symbolische Ortsbezeichnungen wie zum Beispiel „Schule“ oder „Arbeitsplatz“ übersetzt, die jedoch nur für den jeweiligen Benutzer verständlich und unterscheidbar sind. Bei den meisten Lokalisierungssystemen müssen symbolische Bezeichnungen von Objekten in der realen Welt (wie z. B. Raumnummern, Dienstbezeichnungen etc.) manuell festgelegt und dem System bekannt gemacht werden. Dies bedeutet erstens einen großen Aufwand, da diese Bezeichnungsdefinitionen gepflegt werden müssen und zweitens eine Einschränkung der Skalierbarkeit. Daher wird nach Möglichkeiten geforscht, einen Namensdienst zu realisieren, der selbstständig wichtige Orte erkennt und diese auch bezeichnen kann [Hito03]. 2.1.4 Kombinationen von Positionierungsmodellen Symbolische Positionierungsmodelle eignen sich hervorragend um Positionsangaben zu strukturieren, während ihr größter Nachteil die Ungenauigkeit der Positionsangaben ist. Geometrischen Modellen hingegen mangelt es an Strukturierbarkeit und Abstraktion, dafür bieten sie jedoch ausreichend genaue Positionsinformationen. So kann zwar bestimmt werden, ob sich zwei Objekte innerhalb eines Gebäudes ungefähr einen Meter von einander entfernt aufhalten, aber nicht, ob sich eine Mauer zwischen ihnen befindet. Geometrische Positionsangaben können meistens sehr einfach durch geeignete mathematische Berechnungen ineinander umgewandelt werden, aber bei den symbolischen Positionierungsmodellen ist ein Vergleich zwischen den Daten oft sehr schwierig. Werden in einem System mehrere Lokalisierungstechniken gleichzeitig genutzt, kann im Allgemeinen nicht Positionierungsmodell davon ausgegangen verwenden. Um die werden, dass Vorteile der alle das gleiche geometrischen und 13 symbolischen Modelle vollständig zu nutzen, sollte ein solches System ein kombiniertes Modell verwenden, bei dem mit einem Bezeichner wie zum Beispiel „Raum11“ auch eine geographische Position assoziiert werden kann. Daher ist es nötig, dass man Positionsdaten verschiedener Modelle ineinander umwandeln kann. Um dies zu erreichen werden bei der Abbildung von geometrischen in symbolische Positionen, den geometrischen Positionen Gebiete zugeteilt, die einen symbolischen Namen besitzen. Dadurch kann einer geometrischen Position ein symbolischer Positionsbezeichner zugeordnet werden. Wenn sich eine geometrische Position zum Beispiel innerhalb eines Zimmers befindet, erhält sie als symbolische Position die Raumnummer. Um symbolische in geometrische Positionen abzubilden, könnte man zum Beispiel Raumnummern den Mittelpunkt eines Raumes zuordnen. 2.2 Lokalisierungstechniken In dem folgenden Abschnitten werden verschiedene Techniken zur Positionsbestimmung aufgezeigt. Triangulation, Näherungsmessung und Ortsanalyse sind drei Basistechniken für die Ortung. Lokalisierungsssysteme können jede dieser Techniken einzeln oder in Kombination anwenden [HiBo01]. 2.2.1 Triangulation Bei der Triangulation werden die geometrischen Eigenschaften von Dreiecken für die Ermittlung einer Position ausgenutzt. Es gibt zwei verschiedene Möglichkeiten, Positionen durch Triangulation zu bestimmen: Lateration berechnet die Position mittels Abständen und Angulation mithilfe von Winkeln. 2.2.1.1 Lateration Bei der Lateration wird die zweidimensionale Position eines Objektes durch Abstandsmessung zu drei Referenzpunkten ermittelt, deren Ortsvektoren linear unabhängig sind, d. h. von denen keine zwei Punkte auf einer Geraden liegen (s. Abbildung 2.8). Im dreidimensionalen Raum werden vier Bezugspunkte benötigt. 14 Abbildung 2.8: Distanzbestimmung durch Lateration im zweidimensionalen Raum [HiBo01] Die Anzahl der Referenzpunkte kann gegebenenfalls durch zusätzliches Wissen über die entsprechende Infrastruktur reduziert werden. So kann zum Beispiel beim Active Bat System (s. Kapitel 3.4.2) die dreidimensionale Position mit drei Referenzpunkten ermittelt werden, da es Deckensensoren gibt, die sich immer höher befinden als das zu lokalisierende Objekt und daher eine Position über den Sensoren ausgeschlossen werden kann. Es gibt verschiedene Techniken um den Abstand zu messen. Die drei Verbreitesten sind die direkte Messung, die Laufzeitmessung und die Dämpfung. Direkte Messung In der Roboterforschung wird die Position von autonomen mobilen Robotern oft durch physikalische Aktionen oder Bewegungen ermittelt. So kann der Roboter zum Beispiel messen, wie weit er fährt oder wie weit sich der Roboterarm bewegt hat. Laufzeitmessung (engl. time of flight) Die am häufigsten angewandte Technik für die Abstandsmessung geht folgendermaßen vor: es wird die Zeit gemessen, die ein Signal braucht, um vom Punkt P zu einem Objekt X zu gelangen. Dieses Signal kann eine emittierte Licht-, Funk- oder 15 Schallwelle sein, deren spezifische Geschwindigkeit bekannt sein muss. So errechnet sich die Distanz als Produkt der Laufzeit und der Geschwindigkeit: Distanz Signallauf zeit Signalgesc hwindigkeit Die Signallaufzeit wird mit der Uhrzeit des Senders im Punkt P und des Empfängers berechnet, indem die Zeitspanne gemessen wird, die zwischen dem Zeitpunkt des Erzeugens und des Empfangs des Messsignals liegt. Dabei wird vorausgesetzt, dass die Uhren des Senders und des Empfängers exakt synchron laufen. Das Objekt X kann dabei auch selbest in Bewegung sein, wie zum Beispiel ein Flugzeug, das mit einer bekannten Geschwindigkeit fliegt. Bei dem Einweg-Verfahren reicht es aus, das Signal nur einmal von P nach X zu senden. Je nach Beschaffenheit der Objekte und des Senders am Punkt P, kann es allerdings auch notwendig sein, die Zeit vom Punkt P zum Objekt X und wieder zurück zu messen, die sogenannte Round-Trip-Time. Um mit Laufzeitmessung korrekte Ergebnisse zu erhalten, müssen einige Fehlerquellen ausgeschlossen werden: Uhrendrift Da die Zeit mit Uhren gemessen wird, müssen die Uhren synchronisiert sein. Deshalb ist Uhrendrift eine mögliche Fehlerquelle, die zu falschen Positionswerten führt. Die Satelliten, die zum Beispiel beim Global Positioning System (GPS) benutzt werden, haben jeweils eine Atomuhr installiert, die von Bodenstationen überwacht und im Falle von Uhrendrift korrigiert wird (s. Kapitel 3.2.1). Multipath-Fehler Das größte Problem der Entfernungsberechnung mit Laufzeitmessung ist, dass das gesendete Signal und reflektierte Signale nicht zu unterscheiden sind. Diese indirekten Signale haben einen längeren Weg zurückgelegt und der gemessene Abstand ist daher falsch. Gegenmaßnahmen beinhalten den Vergleich von Messungen mehrerer Empfänger, um Signalverfälschungen aufzudecken. 16 Atmosphärische Störungen Bei der satellitengestützten Lokalisierung verringert sich die Signalgeschwindigkeit während das Signal die Atmosphäre durchdringt und dies kann zu Ungenauigkeiten bei der Laufzeitmessung führen. Dämpfung Die Intensität eines emittierten Signals vermindert sich mit zunehmendem Abstand zu seiner Quelle. Diese Verminderung der Signalstärke bezeichnet man als Dämpfung (engl. attenuation). Kennt man die physikalischen Eigenschaften des Trägers und die anfängliche Signalstärke, kann die Distanz mithilfe der Signalstärke beim Empfang berechnet werden. Innerhalb von Gebäuden, in Räumen mit vielen Hindernissen, ist diese Technik aber nicht so genau wie die Entfernungsberechnung durch Laufzeitmessung [HiBo01]. 2.2.1.2 Angulation Diese Technik funktioniert im Prinzip analog zur Lateration, jedoch werden hier zur Positionsbestimmung keine Abstände, sondern Winkel benutzt. So errechnet sich die zweidimensionale Position bei der Angulation aus den Winkeln eines Objektes X zu zwei festen Referenzpunkten, bezüglich Null Grad nördlich. Dabei muss der Abstand zwischen den Referenzpunkten bekannt sein (s. Abbildung 2.9). Im dreidimensionalen Raum wird zusätzlich eine Scheitelkreis–Messung (engl. azimuth) benötigt [HiBo01]. 17 00 Winkel 2 Winkel 1 bekannte Länge X Abbildung 2.9: Angulation 2.2.2 Analyse des Ortes Die Positionierungstechnik „Analyse des Ortes“ (engl. scene analysis) versucht die Position anhand markanter Merkmale der direkten Umgebung zu ermitteln. Üblicherweise werden diese Merkmale vereinfacht, damit sie leichter verglichen werden können. So kann zum Beispiel die Umrisslinie einer Landschaft, die von einer Kamera eines autonomen mobilen Roboters aufgenommen wird, für die Positionsermittlung benutzt werden (s. Abbildung 2.10). Abbildung 2.10: Erkannte Horizontallinie [BeGr95] Die statische Analyse des Ortes vergleicht aufgenommene Schnappschüsse mit vorgegebenem Wissen über einen bestimmten Standort. 18 Bei einer differentiellen Analyse des Ortes wird versucht, die Position mittels erkennbaren Veränderungen in aufeinanderfolgenden Schnappschüssen der Ortsaufnahmen zu bestimmen. Unterschiede in den Ortsaufnahmen bedeuten, dass sich ein Objekt bewegt hat. Wenn die Positionen bestimmter Elemente der Umgebung bekannt sind, kann das Objekt berechnen, wo es sich befindet. Der Vorteil dieser Ortungstechnik liegt darin begründet, dass lediglich passive Beobachtungen und Messungen nötig sind, um die Position eines Objektes zu ermitteln. Es ist keine weitere Infrastruktur wie zum Beispiel ein Sensorennetzwerk oder Satelliten notwendig. Allerdings erhöht der Algorithmus zur Analyse zwangsläufig die Anforderungen an die Rechenleistung der mobilen Objekte. Ein weiterer Nachteil ist, dass die Umgebungskarten bei Veränderungen der örtlichen Gegebenheiten aktualisiert werden müssen, d. h. konkret, dass in einem Zimmer zum Beispiel keine Möbel verstellt werden dürfen, um bei Verwendung der alten Karten korrekte Positionsangaben zu erhalten. 2.2.3 Näherungsmessung Bei der Ortungstechnik Näherungsmessung (engl. proximity measures) wird festgestellt, ob sich ein Objekt in der „Nähe“ eines bekannten Standortes befindet. Die Anwesenheit des Objektes wird durch Sensoren mit beschränkter Reichweite erkannt. Es gibt viele verschiedene derartige Sensoren. Drei allgemeine Typen von Sensoren sind folgende: 2.2.3.1 Physischer Kontakt Am einfachsten ist es, die Anwesenheit durch Berührungs- oder Drucksensoren festzustellen, deren Position bekannt ist. 2.2.3.2 Überwachung von Access Points zu drahtlosen zellularen Netzwerken Eine weitere Möglichkeit ist, zu überwachen, ob sich ein Objekt in Reichweite eines Access Points zu einem drahtlosen zellularen Netzwerk (Wireless LAN) befindet, sodass die Position grob angegeben werden kann. 19 2.2.3.3 Überwachung automatischer ID–Systeme Automatische Identifizierungssysteme sind zum Beispiel Barcode-Scanner, Geldautomaten, etc. Da der Standort dieser Systeme bekannt ist, kann bei Benutzung eines dieser Systeme durch ein bestimmtes Objekt festgestellt werden, wo sich dieses Objekt befindet. 2.3 Sensor-Fusion Sensor-Fusion bezeichnet die Zusammenführung von Messungen verschiedener Sensoren. Ziel ist es dabei, durch die Kombination verschiedener Sensoren neue Informationen und durch die Nutzung mehrerer gleicher Sensoren verbesserte Sensorinformationen abzuleiten. In vielen Anwendungsgebieten, wie zum Beispiel der Robotik, wird nach Sensor-Fusion-Algorithmen geforscht. Jeder Sensor hat spezifische Stärken und Schwächen, die sich aus der gewählten Technologie und den Design-Parametern ergeben. Dies kann bei Störeinflüssen, wie Rauschen in Bauteilen, Temperaturschwankungen etc., zu schlechteren Messergebnissen oder zum Ausfall des Sensors führen. Zum Beispiel ist eine Kamera im Dunkeln bei Nacht unbrauchbar. Um die Robustheit des Sensorensystems und die Qualität der Sensorenmessungen zu verbessern reicht es im Allgemeinen nicht aus, nur die Anzahl der verwendeten Sensoren zu erhöhen, sondern es kommt auch auf die verwendeten Verknüpfungsmethoden an. Durch die Integration mehrerer Sensoren soll erreicht werden, umfangreichere und genauere Informationen in kürzerer Zeit und mit geringeren Kosten zu erhalten. Dies hat mehrere Vorteile. Indem man eine Gruppe gleichartiger Sensoren verwendet erreicht man durch Redundanz eine Reduzierung der Unsicherheit in den Messungen und damit eine exaktere Erfassung der Umwelt. Fallen einzelne Sensoren aus, können die gewünschten Informationen von den übrigen Sensoren gemessen werden, was eine Erhöhung der Zuverlässigkeit des Gesamtsystems zur Folge hat. Bei Anwendung von Redundanz muss allerdings das Problem von zweideutigen Messungen gelöst werden. Gehen zwei Uhren zum Beispiel unterschiedlich, muss festgestellt werden, welche Uhr falsch geht. Einen weiteren Vorteil bietet die Integration von Sensoren, wenn diese komplementäre Informationen liefern können. In diesem Fall erkennen die Sensoren unterschiedliche Merkmale und können sich gegenseitig ergänzen. Zusätzlich erhöht 20 sich auch die Arbeitsgeschwindigkeit des Sensorensystems, da gleichartige Sensoren parallel arbeiten und das Ergebnis des schnellsten Sensors übernommen wird. Es gibt eine Vielzahl von Algorithmen für die Sensor-Fusion. Verfahren wie stochastische Approximation, gewichtetes Mittel, Bayes’scher Schätzer oder KalmanFilter werden in der Literatur näher betrachtet [Durr02]. 21 3 Lokalisierungssysteme In diesem Kapitel wird ein Überblick über bestehende Lokalisierungssysteme (engl. location sensing systems) vermittelt. Diese Systeme verfolgen verschiedene Ansätze und haben unterschiedliche Eigenschaften. Um die Systeme vergleichen zu können, werden daher zunächst Kriterien aufgestellt, die im Hinblick auf die Erstellung einer möglichst allgemeinen Programmierschnittstelle ausgewählt wurden und keine Bewertung der Lokalisierungssysteme zum Ziel haben. 3.1 Vergleichskriterien Technologie Die Vielzahl der Lokalisierungssysteme sind aus den Versuchen entstanden, mit neuen Technologien und in verschiedenen Anwendungsgebieten, den Aufenthaltsort mobiler Geräte zu bestimmen. Man kann Lokalisierungssysteme danach unterscheiden, welche Technologie verwendet wird. Größenbereich: Indoor / Outdoor Fast alle Lokalisierungssysteme können entweder innerhalb von Gebäuden (engl. indoor) oder außerhalb im Freien (engl. outdoor) eingesetzt werden. Dies hat technische Gründe, zum Beispiel liegt es bei satellitengestützten Lokalisierungssystemen daran, dass innerhalb von Gebäuden die Signale der Satelliten nicht empfangen werden können. Die meisten Indoor-Lokalisierungssysteme benötigen eine installierte Infrastruktur bestehend aus einem Sensorennetzwerk. Außerdem werden ganz andere Technologien benutzt als außerhalb von Gebäuden. Daher kann die Lage eines Objektes in Gebäuden ohne diese Infrastruktur häufig gar nicht oder nur sehr ungenau bestimmt werden. Das Kriterium Größenbereich klassifiziert das System demnach als Indooroder Outdoor-Lokalisierungssystem. Umfang Der Anwendungsumfang kann durch die räumliche Ausdehnung, die ein Infrastrukturelement abdecken kann, abgeschätzt werden. So ist der Empfang der 23 GPS-Satelliten weltweit möglich, aber bei anderen System wie zum Beispiel Smart Floor auf einen Raum begrenzt. Ferner kann der Umfang auch durch die mögliche Anzahl von Nutzern pro Infrastrukturelement und Zeitintervall spezifiziert werden. Dabei hat die Betrachtung der Zeit einen wichtigen Einfluss auf die Bestimmung des Umfangs. Kann ein Lokalisierungssystem zum Beispiel den Anfragen der Nutzer nicht schnell genug nachkommen, so hat dies entweder zur Folge, dass sich die Antwortzeiten erhöhen, oder dass Positionen weniger oft aktualisiert werden und sich damit die Genauigkeit der Angaben verringert. Positionierungsmodell: geometrisch / symbolisch Positionen können auf zwei grundlegende Weisen angegeben werden: bei den geometrischen Modellen in einem Koordinatensystem und bei dem symbolischen Modellen mithilfe von abstrakten Bezeichnern (s. Kapitel 2.1). Position: relative / absolute Abbildung Eine Position kann entweder absolut oder relativ zu anderen bekannten Positionen angegeben werden. Lokalisierungssysteme, die absolute Positionen berechnen, benutzen ein gemeinsames Koordinatensystem für alle lokalisierten Objekte, sodass eine Position für jeden Empfänger genau die gleiche Stelle beschreibt. Im Gegensatz dazu sind bei relativen Positionsangaben immer Positionen relativ zu einem bekannten Bezugspunkt gemeint. Eine relative Angabe ist zum Beispiel die Aussage „Der Drucker befindet sich im Nebenzimmer“ und die absolute Angabe dazu „Der Drucker befindet sich im Raum 10“. Ist die absolute Position dieses Bezugspunktes bekannt, so kann die relative Lage in die absolute Position umgerechnet werden und umgekehrt. Orientierung Manche Lokalisierungssysteme sind in der Lage, neben Positionsangaben auch Angaben über die Orientierung bzw. Ausrichtung eines Objektes zu machen. Dies kann nützlich sein um festzustellen, auf welchen Gegenstand der Nutzer gerade zeigt oder schaut. So wäre es möglich, dass ein Redner bei einem Vortrag nur auf die Wand zu zeigen braucht, auf die sein Diagramm projiziert werden soll. 24 Lokalisierungstechnik In Kapitel 2.2 wurden bereits einige Lokalisierungstechniken vorgestellt, anhand deren eine weitere Unterscheidung der Lokalisierungssysteme möglich ist. Aktive Komponente einer Positionierung: zu lokalisierendes Objekt / Infrastruktur Bei einigen Systemen findet die Positionsberechnung bei dem lokalisierten (mobilen) Objekt selbst statt. Dadurch erfährt nur das Objekt die Position, was eine höhere Datensicherheit gewährleistet. Beim Global Positioning System (GPS) zum Beispiel verfügen die Satelliten nicht über Informationen, die die Identität oder den Standort der Empfänger betreffen (s. Kapitel 3.2.1). In anderen Lokalisierungssystemen findet die Positionsbestimmung zentral statt. Die Infrastruktur muss daher kontinuierlich von allen zu lokalisierenden Objekten Signale empfangen, mit denen die Position ermittelt werden kann. Da die Berechnungen bei der Infrastruktur liegen, können Technologien der lokalisierten Objekte kleiner und billiger ausfallen, da sie weniger Rechenleistung und Speicherbedarf benötigen. Allerdings unterliegen Sicherheits- und Datenschutzfragen ausschließlich dem System. Genauigkeit und Zuverlässigkeit Ein Lokalisierungssystem sollte exakte und wiederholbare Messungen durchführen können. Ein System kann zum Beispiel eine Positionierung mit einer Genauigkeit der Angaben innerhalb eines Gebietes von zehn Zentimetern und mit einer Zuverlässigkeit von 99 % aller Messungen durchführen, d. h. Abweichungen von mehr als zehn Zentimetern finden nur in einem Prozent der Messungen statt. Erkennung von Objekten Oft sind Dienste nicht nur orts-, sondern auch nutzerabhängig. Jeder Nutzer ist dann durch seine Globally Unique Identifier (GUID) (s. auch Kapitel 2.1.3) eindeutig identifizierbar. Bei manchen Systemen erfolgt die Positionierung Infrastruktur-seitig, ohne dass der Nutzer ein Gerät bei sich haben muss (zum Beispiel bei Smart Floor, s. Kapitel 3.4.5). Um dann festzustellen, wo sich eine bestimmte Person befindet, muss diese eindeutig erkannt werden. 25 3.2 Satellitengestützte Lokalisierungssysteme Eine Kategorie von Lokalisierungssystemen benutzt Satelliten zur Positionsbestimmung. Ist die Position mehrerer Satelliten und der Abstand zu ihnen zu einem bestimmten Zeitpunkt bekannt, lässt sich die Position äußerst präzise bestimmen. Einer der weiteren Vorteile der satellitengestützten Lokalisierungssysteme ist die breite Verfügbarkeit. Zum einen ist ein einfaches Empfängergerät heute preiswert zu erwerben und benötigt nur wenig Platz, daher ist es von jedermann fast überall einsetzbar. Zum anderen ist die Positionsbestimmung mithilfe von Satelliten nicht von Bedingungen, wie der Tageszeit oder der eigenen Position, abhängig. In diesem Abschnitt werden die Systeme GPS und dessen Weiterentwicklungen, GLONASS und das noch in der Entwicklung befindliche GALILEO, vorgestellt. 3.2.1 GPS In diesem Kapitel wird das Global Positioning System (GPS) beschrieben. Diese Technologie wird hier ausführlicher beschrieben, da für diese Diplomarbeit ein GPS-Empfänger zu Verfügung stand (s. Kapitel 5.2.1). Technologie Satelliten Größenbereich nur Outdoor 21 weltweite Satelliten und 3 Ersatzsatelliten Umfang 5 Bodenstationen Positionierungsmodell Geometrisch mit WGS84 als Bezugssystem Position absolute Abbildung Orientierung nein Lokalisierungstechnik Lateration mit Distanzberechnung durch Laufzeitmessung von Radiowellen aktive Komponente einer Positionierung zu lokalisierendes Objekt 26 Genauigkeit und Zuverlässigkeit 1-5 Meter bei 95-99 Prozent Erkennung von Objekten nein Tabelle 1: GPS Das Global Positioning System ist das am Häufigsten genutzte Positionierungs- und Navigationssystem der Welt. Es wurde vom US-Verteidigungsministerium für das Militär in Auftrag gegeben, hat ungefähr zwölf Milliarden US-Dollar gekostet und kann seit 1988 weltweit genutzt werden. Der offizielle Name ist NAVSTAR (Abkürzung für Navigation Satellite Timing and Ranging) [Schu96]. Das System besteht aus drei Teilen: dem Weltallsegment (engl. space segment), bestehend aus den stationären Satelliten, dem Kontrollsegment (engl. control segment), d. h. den Bodenstationen und dem Nutzersegment (engl. user segment). Die 24 Satelliten (21 aktive und 3 Ersatzsatelliten) bilden das Weltallsegment. Sie umkreisen die Erde zweimal am Tag in einer Höhe von ungefähr 20200 Kilometern, wobei sich jeweils vier Satelliten auf einer Orbitalbahn aufhalten. Durch diese Satellitenkonstellation wird erreicht, dass jeder GPS-Empfänger auf der Erdoberfläche die Signale von mindestens vier Satelliten gleichzeitig empfangen kann. Die Radiosignale können Wolken, Glas und Kunststoff durchdringen, aber keine soliden Hindernisse wie zum Beispiel Häuser oder Berge. Das Kontrollsegment setzt sich aus fünf weltweiten Bodenstationen zusammen, die die Flugbahn und Uhrzeit der Satelliten überwachen und gegebenenfalls Abweichungen korrigieren. Das Nutzersegment umfasst alle Nutzer mit ihren verschiedenen GPS-Empfängerausführungen. Die GPS-Empfänger benutzen die von den Satelliten empfangenen Signale zur Berechnung der Position, der Geschwindigkeit und der exakten Zeit. Die größten Anwendungsbereiche sind die Navigation von Schiffen, Flugzeugen, Bodenfahrzeugen und Personen mit Handgeräten. Die Position eines Satelliten setzt sich aus zwei Informationen zusammen: den Almanach-Daten und den Ephemeriden-Daten. Die ersteren geben die approximierten Positionen der empfangenen Satelliten an und werden im GPS-Empfänger gespeichert, sodass dieser nun die Umlaufbahnen und die vermuteten Positionen der Satelliten kennt. 27 Diese Daten werden periodisch aktualisiert, während sich die Satelliten fortbewegen. Die tatsächliche Flugbahn eines Satelliten kann sich leicht von der vermuteten unterscheiden. Daher überwachen die Bodenstationen Umlaufbahn, Höhe, Geschwindigkeit und Position der Satelliten. Dies sind die sogenannten EphemeridenDaten. Bei Abweichungen werden die korrigierten Informationen zu dem Satelliten geschickt und so auch von den GPS-Empfängern entgegengenommen. Der Aufenthaltsort eines GPS-Empfängers wird durch Lateration (s. Kapitel 2.2.1) mit einer Distanzberechnung durch Laufzeitmessung von Radiowellen bestimmt. Da sich die Satelliten im Weltall befinden, kann die mögliche Position des Empfängers im Weltall ausgeschlossen werden. Daher kann die Lateration mit drei Satelliten durchgeführt werden. Hierfür muss der GPS-Empfänger seinen Abstand zu den Satelliten ermitteln. Die Entfernungsbestimmung erfolgt nach dem Einweg-Verfahren. Die Geschwindigkeit eines Radiosignals ist gleich der Lichtgeschwindigkeit und beträgt im luftleeren Raum ungefähr 340.000 km/s. Allerdings muss jegliche Verzögerung aufgrund der Erdatmosphäre abgezogen werden. Bei der Bestimmung der Signallaufzeit wird vorausgesetzt, dass die Uhr des Satelliten und die des Empfängers exakt synchron und mit hoher Geschwindigkeit laufen. So kann zum Beispiel ein Zeitfehler von 0,1 s schon zu einem Positionsfehler von 300 Metern führen. gestrichelte Kreise: gemessener Abstand durchgezogene Kreise: tatsächlicher Abstand Abbildung 3.1: Zeitfehlerkorrektur: 28 Die Satelliten werden daher mit Atomuhren bestückt, deren Einsatz in den Empfängern allerdings zu teuer wäre. Der sich ergebende Uhrendrift in den GPS-Empfängern und die daraus resultierenden Entfernungsfehler werden mithilfe von Zeitkorrekturen vermieden. Diese Distanzmessung Zeitkorrekturen zu einem werden vierten aus der Satelliten Signallaufzeit bzw. der bestimmt. In der Abbildung 3.1 wird diese Korrektur für den zweidimensionalen Fall gezeigt, wo ebenfalls ein Schnittpunkt ausgeschlossen werden kann. Jeder Satellit strahlt auf zwei Frequenzen aus. Diese Frequenzen sind für alle Satelliten des GPS gleich. Zwei Träger werden verwendet, wobei diese jeweils unterschiedliche Informationen (Codes) beinhalten. Abbildung 3.2: Verschiebung zur Laufzeitbestimmung [Schu96] Diese Codes dienen der eindeutigen Identifizierung der Satelliten und der Laufzeitmessung der Signale. Um die im Empfänger erzeugte Kopie des Codes mit dem ankommenden Signal zu synchronisieren, ist eine Phasenverschiebung () notwendig, die gleichzeitig ein Maß für die Signallaufzeit (t) vom entsprechenden Satelliten zum Empfänger ist (s. Abbildung 3.2). Dazu zählt man im einfachsten Fall die Verschiebungen, die für eine Korrelation benötigt werden. Beim Design von GPS wurde versucht die maximale Genauigkeit zu erreichen. Trotzdem kann es zu Fehlern kommen, die Abweichungen von fünfzig Meter verursachen können. Folgende Faktoren können die Genauigkeit der Positionsbestimmung beeinträchtigen: 29 Abbildung 3.3: Mögliche Fehlerquellen [Gar00] Atmosphärische Störungen Die Signalgeschwindigkeit verringert sich während das Signal die Atmosphäre durchdringt und weicht daher von der Geschwindigkeit im All ab. Multipath-Fehler Die Signale können auf Gebäude oder Berge treffen und von deren Oberflächen reflektiert werden, sodass die Signallaufzeit länger ist und daher die Position falsch berechnet wird. Empfang von zu wenigen Satelliten Je mehr Satelliten ein GPS-Empfänger empfangen kann, desto genauer wird die Positionsbestimmung. Die Signale können von Häusern, Bergen etc. gedämpft oder blockiert werden. Daher kann der Aufenthaltsort innerhalb von Gebäuden oder unter Wasser nicht ermittelt werden. Ephemeriden-Fehler / Uhrendrift / Messfehler Ephemeriden-Fehler und Uhrendrift sind mögliche Fehlerquellen (s. weiter oben), die von den Bodenstationen überwacht werden. Außerdem können Messfehler aufgrund von Signalstörungen die Genauigkeit der Positionsbestimmung beeinträchtigen. Beabsichtigte Verringerung der GPS-Genauigkeit Um potenziellen Gegnern der USA nicht die gleiche Positionsgenauigkeit zu gewähren, aktivierte das Militär eine künstliche Abschwächung der Signalstärke, die sogenannte Selective Availability (SA), wodurch sich die Positionsgenauigkeit der zivilen 30 GPS-Geräte auf 50-200 Meter reduzierte. Nach Ende des kalten Krieges wurden solche Maßnahmen unnötig und daher wurde SA am 2. Mai 2000 deaktiviert. 3.2.2 Differential GPS Bei der Seefahrt können Kursabweichungen von 50-200 Metern dazu führen, dass ein Schiff nicht sicher in den Hafen kommt. Die oben angesprochene Selective Availability führte dazu, dass Differential GPS (DGPS) entwickelt und realisiert wurde. Bei dieser Technik werden zusätzliche Bodenstationen errichtet, die mit Referenzempfängern ausgestattet sind, deren exakte Position bekannt ist, und die daher Fehler in den Satellitensignalen bestimmen können. So werden aus der durch den Satelliten angegebenen Korrektureninformationen Position und erstellt. der Diese bekannten Position Informationen differenzielle werden an die DGPS-Empfänger häufig mittels Funk gesendet und von diesen zur Korrektur der empfangenen GPS-Satellitensignale verwendet. So kann mithilfe dieses Verfahrens die Genauigkeit im Idealfall auf unter fünf Meter verbessert werden. Abbildung 3.4: Differential GPS [Schu96] In Deutschland wird das „Real Time Differential GPS“ als kommerzieller Dienst von der Deutschen Telekom AG betrieben. Dieser Dienst basiert auf einem Gemeinschaftsvorhaben des Instituts für Angewandte Geodäsie, Außenstelle Potsdam, und der Deutschen Telekom AG [Schu96]. 31 3.2.3 GLONASS GLONASS (Global Navigation Satellite System) ist ein weiteres satellitengestütztes Navigationssystem, das in der ehemaligen UdSSR während des kalten Krieges für das Militär entwickelt wurde und von den heutigen GUS-Staaten (Gemeinschaft Unabhängiger Staaten) weiter betrieben wird. Bisher gibt es keine zivilen Anwendungen. Das System ist dem GPS sehr ähnlich. Es werden ebenfalls 21 aktive und drei Ersatzsatelliten verwendet, die in drei Ebenen auf Umlaufbahnen in einer Höhe von 19100 km die Erde umkreisen. Allerdings gibt es kleine Unterschiede zwischen den beiden Systemen. Die Systeme benutzen unterschiedliche Referenzellipsoide. GPS operiert mit dem WGS 84 (World Geodetic System 1984), während GLONASS im PZ-90 (Parametry Zemli 1990) arbeitet. Bei GPS benutzen alle Satelliten die gleichen Trägerfrequenzen, wohingegen jeder Satellit bei GLONASS eine spezifische Frequenz benutzt. Bei den Satelliten-Codes verhält es sich genau umgekehrt, d. h. GPS hat für jeden Satelliten einen spezifischen Code und bei GLONASS sind die Codes für jeden Satelliten gleich [Roßb00]. 3.2.4 GALILEO GALILEO ist Europas geplantes satellitengestütztes Navigationssystem für zivile Zwecke, das Unabhängigkeit vom US-amerikanischen GPS garantieren soll. Der erste Satellit soll vor Ende des Jahres 2005 in die Umlaufbahn gebracht werden, sodass GALILEO bis 2008 in Betrieb genommen werden kann. Es bietet eine höhere Genauigkeit und Zuverlässigkeit und kann mit GPS zusammenarbeiten. Dabei werden 27 aktive und 3 Ersatzsatelliten benutzt werden, die in 24000 km Höhe ihre Umlaufbahn haben. Zwei Galileo-Kontrollzentren (GCC) werden in Europa die Flugbahn der Satelliten überwachen. Zusätzlich wird es weltweit zwanzig GalileoSensorstationen (GSS) geben, die ihre Messungen an die GCC weiterleiten. Die GCC nutzen die Daten der Sensorstationen, um die Integritätsinformationen zu berechnen und das Zeitsignal aller Satelliten mit dem der Bodenstationsuhren abzugleichen. GALILEO soll zuverlässiger sein als GPS und verfügt daher über die Fähigkeit, eine „Integritätsmeldung" versenden zu können, die den Nutzer unmittelbar über auftretende Fehler informiert. Außerdem wird GALILEO anders als GPS ohne Schwierigkeiten in Städten und in Gebieten nördlicher geographischer Breite empfangen werden können. 32 Als weitere Funktion wird Galileo einen globalen Such- und Rettungsdienst (SAR) bereitstellen, der auf dem Cospas-Sarsat-System beruht. Hierfür wird jeder Satellit mit einem Transponder ausgestattet, der die Notrufsignale der Nutzergeräte an das Rettungskoordinierungszentrum weiterleitet, welches wiederum die Rettungsaktion auslöst. Gleichzeitig sendet das System ein Signal an den Nutzer mit der Information, dass Hilfe unterwegs ist [GALI04]. 3.3 Zellfunknetzgestützte Lokalisierungssysteme Für die Telefongesellschaften ist es möglich, den Aufenthaltsort eines Mobiltelefons festzustellen, da diese eine Verbindung zu den Sendestationen aufbauen müssen. Es gibt verschiedene Mobilfunknetze. Die wichtigsten sind das „Global System for Mobile Communications“ (GSM), das in Europa eingesetzt wird, das auf GSM basierende System „GSM Packet Radio System“ (GPRS) und das „Universal Mobile Telecommunications Systems“ (UMTS), welches eine deutlich erhöhte Datenübertragungsrate aufweist. Mit Unterstützung dieser Mobilfunknetze können verschiedene Lokalisierungstechniken realisiert werden, die im Folgenden beschrieben werden [Snap03]. 3.3.1 Cell ID Technologie Mobiltelefon Größenbereich Outdoor und Indoor Umfang weltweit vernetztes Telefonsystem; mit verschiedenen Systemen realisierbar wie GSM, GPRS, UMTS Positionierungsmodell symbolisch durch die Angabe der Zelle Position absolut Orientierung nein Lokalisierungstechnik Näherungsmessung: das Mobiltelefon sendet einen Registrierungswunsch an den Service Provider, der daher weiß in welcher Zelle sich der Benutzer befindet aktive Komponente einer Positionierung Infrastruktur Genauigkeit 500m-20km GSM, 100m-5km UMTS 33 Erkennung von Objekten ja, jedes Mobiltelefon besitzt eine eindeutige ID Tabelle 2: Cell-ID Die Lokalisierungstechnik Cell-ID funktioniert in GSM-, GPRS- und UMTS-Netzen. Das Funknetz identifiziert die Basisstation (engl. Base Transceiver Station, BTS), mit der das Mobiltelefon eine Verbindung aufgebaut hat und die Position des Telefons. Das Einzugsgebiet dieser Basisstation ist die sogenannte Zelle (s. Kapitel 2.1.2), die eine eindeutige ID besitzt. Die Position des mobilen Gerätes wird dann durch die ID der Zelle ausgedrückt. Eine typische GSM-Zelle hat einen Durchmesser zwischen zwei und zwanzig Kilometern. Die Zellen sind normalerweise grob kreisrund, können aber als Sechsecke leichter modelliert werden, sodass sich ein Wabennetz von adjazenten Zellen ergibt. In Städten sind die Zellen sehr klein, was eine Positionsangabe im Umkreis von ungefähr 300 Metern ermöglicht. In weniger bewohnten Gebieten haben die Zellen einen Radius bis zu 35 Kilometern. Verlässt ein mobiles Gerät eine Zelle, stellt die entsprechende Basisstation fest, dass sich das Signal des Gerätes verringert und fordert alle Basisstationen in der Umgebung auf die Mitteilung zu senden, wie viel Leistung sie von ihm erhalten. Dann übergibt die erste Basisstation die Inhaberschaft an die Zelle, die das stärkste Signal empfängt, d. h. diejenige, in deren unmittelbarer Nähe sich das mobile Gerät jetzt befindet. Anschließend wird das Gerät über seine neue Basisstation informiert. Dieser Vorgang wird als Übergabe (engl. handoff) bezeichnet. Da die Form der Zellen bedingt durch Signalstärke-Schwankungen nicht einheitlich ist, ist diese Technik der Positionsbestimmung oft zu ungenau. Ein Vorteil besteht allerdings darin, dass keine Modifikation an den Mobiltelefonen oder dem Funknetz benötigt wird. 3.3.2 Enhanced Observed Time Difference (E-OTD) E-OTD operiert nur auf GSM- und GPRS-Netzen. Diese Technik benutzt Lateration mit Distanzberechnung durch Laufzeitmessung von Funkwellen zu mehreren Basisstationen. Da hier die Zeitmessung von entscheidender Bedeutung ist, werden bei GSM und GPRS zusätzlich Stationen benötigt, deren exakte Position bekannt ist. Diese sogenannten Location Measurement Units (LMU) müssen so verteilt sein, dass jede Basisstation in Reichweite mindestens einer LMU liegt. Da die exakte Position der LMU bekannt ist, können Messfehler festgestellt werden. Die gesuchte Position wird ermittelt, indem die Messungen der mobilen Geräte mit den Messungen der LMU 34 verglichen werden und die Position entsprechend korrigiert wird. Die Genauigkeit kann gegenüber dem Cell-ID-Verfahren auf 100 bis 500 Meter Umkreis erhöht werden, wenn mindestens drei Basisstationen empfangen werden. In Städten erhält man ein genaueres Ergebnis als in weniger bewohnten Gegenden, da es dort mehr Basisstationen gibt. E-OTD ist damit genauer als das Cell-ID-Verfahren, allerdings auf Kosten erhöhten Nachrichtenverkehrs und massiver Erweiterungen der Netzinfrastruktur. Das Observed Time Difference of Arrival (OTDOA) ist eine Variante der E-OTD Technik für UMTS [Snap03]. 3.3.3 Wireless Assisted GPS (A-GPS) Wireless Assisted GPS operiert in GSM-, GPRS- und UMTS-Netzen. Da GPS den Nachteil hat, dass innerhalb von Gebäuden oder in dicht bebauten Gebieten fast kein Empfang der Satellitensignale möglich ist, kann das Mobilfunknetz hilfreiche Informationen zur Verbesserung der Qualität der Positionsangaben beisteuern, indem beispielsweise die Frequenzen und Positionen derzeit sichtbarer Satelliten zur Verfügung gestellt werden. Abbildung 3.5: A-GPS Das System erhöht auch die Reaktionszeit der GPS-Empfänger, die normalerweise bis zu drei Minuten brauchen, um erste Ergebnisse nach dem Einschalten zu liefern. Die Suchzeit, die die 24 Satelliten für die Lokalisierung des Nutzers bei der normalen GPSOrtung benötigen, fällt beim A-GPS-Modell weg, da bekannt ist, in welcher Funkzelle 35 sich der Empfänger aufhält. Mit A-GPS ist auch eine Indoor-Positionsbestimmung möglich [Snap03]. 3.4 Indoor Lokalisierungssysteme Die bisher vorgestellten Lokalisierungssysteme funktionieren innerhalb von Gebäuden nur unzureichend mit Ausnahme der A-GPS-Technik. Eine Indoor- Positionsbestimmung macht in den meisten Fällen eine Hardware-Infrastruktur, wie zum Beispiel ein Sensorennetzwerk, notwendig, damit mobile Objekte geortet werden können. 3.4.1 Active Badge System Technologie Infrarot Größenbereich nur Indoor Umfang eine Basis pro Zimmer, alle 10 Sekunden ein Badge pro Basis Positionierungsmodell symbolisch Position absolut Orientierung nein Lokalisierungstechnik zellulare Näherungsmessung aktive Komponente einer Positionierung Infrastruktur Genauigkeit auf Zimmergröße beschränkt Erkennung von Objekten ja, jedes Badge hat eine GUID Einschränkungen Sonnenlicht kann den Empfang des Infrarotlichtes stören Tabelle 3: Active Badge System Das Active Badge System gilt als das erste archetypische Indoor-Lokalisierungssystem. Es wurde 1989 vom ehemaligen Olivetti Research Laboratory (ORL), der heutigen AT&T Cambridge, entwickelt [WaHo92]. Ursprünglich wurde das System als ortsbasierte Anruf-Zustellung eingesetzt. Das System zeigte eine Liste aller Mitarbeiter des ORLs, deren Aufenthaltsorte innerhalb des Gebäudes und die Nummer des nächstgelegenen Telefonapparates an. Die 36 Positionsbestimmung erfolgte mittels zellularer Näherungsmessung. Dazu trug jeder Mitarbeiter Infrarotsender, die sogenannten Badges (deutsch: Abzeichen), die alle zehn Sekunden ein Infrarotsignal aussendeten, das von einem im Gebäude installierten Sensorennetzwerk ausgewertet wurden. Die Positionen wurden hier absolut und symbolisch angegeben, wobei eine Zelle einem Zimmer entsprach. Die Sensoren des Sensorennetzwerks werden periodisch per Polling abgefragt, von dem sogenannten Network-Controller mit einem Zeitstempel versehen und dann von Lokalisierungsservern ausgewertet. Die empfangenen Daten enthalten nur die Information, welche ID von welchem Sensor in welchem Subnetz empfangen wird, woraufhin der Lokalisierungsserver dann die Abbildung der ID auf den Mitarbeiternamen und die des Sensors auf die Raumnummer übernimmt. Die Infrarottechnik hat den Nachteil, dass Umgebungslicht oder direktes Sonnenlicht den Empfang stören können, und dass nur eine geringe Reichweite und damit eine eingeschränkte Zellengröße ermöglicht werden kann, sodass große Räume in mehrere Zellen aufgeteilt werden müssen. 3.4.2 Active Bat System Technologie Ultraschall Größenbereich nur Indoor Umfang eine Basis für 10 Quadratmeter, 25 Berechnungen pro Zimmer pro Sekunde Positionierungsmodell geometrisch Position absolut Orientierung ja Lokalisierungstechnik Lateration mit Distanzberechnung durch Laufzeitmessung von Ultraschallwellen aktive Komponente einer Positionierung Infrastruktur Genauigkeit und Zuverlässigkeit 9 cm bei 95 Prozent ja, jeder Bat hat eine GUID Erkennung von Objekten 37 verhältnismäßig große Infrastruktur mit dem exakt zu positionierenden Sensornetz an der Decke Einschränkungen Tabelle 4: Active Bat System Im Rahmen eines neueren Projektes entwickelte AT&T das Active Bat Lokalisierungssystem, das Positionen durch Lateration mit Distanzberechnung mittels Laufzeitmessung von Ultraschallwellen berechnet. Dieses System arbeitet wesentlich präziser als das ältere Active Badge System und erreicht eine Genauigkeit von 9 cm bei einer Zuverlässigkeit von 95 Prozent. Abbildung 3.6: Vorgehensweise bei Active Bats: ein Bat wird über eine kabellose Verbindung vom Controller getriggert (1) und sendet daraufhin einen Ultraschall-Impuls (2) an die in der Decke platzierten Receiver. Diese errechnen die Distanz durch Laufzeitmessung zum Bat und schicken das Ergebnis an den Controller (3) [AdCu01]. Benutzer und Objekte werden mit Active Bats versehen, die eine GUID zur Identifizierung erhalten. Auf eine Controller-Anfrage, die über eine Funkverbindung an einen Bat geschickt wird, reagiert dieses, indem es ein Ultraschallsignal an das an der Zimmerdecke angebrachte Sensorennetzwerk aussendet. Nach dem Senden der Controller-Anfrage an das Bat, wird auch ein Resetsignal an die Deckensensoren geschickt. Die Sensoren messen die Zeitdifferenz zwischen dem Empfang des Resetsignals und dem Eintreffen des Ultraschallsignals. Anhand dieser Zeitdifferenz kann dann der jeweilige Abstand der Sensoren zum Bat berechnet und die Lateration durchgeführt werden. Möglicherweise auftretende Multipath-Fehler werden durch sogenanntes „statistisches Entfernen“ [HiBO] herausgefiltert. 38 Die Positionen werden absolut und geometrisch angegeben. Es ist möglich die Orientierung eines Objektes anzugeben, wenn es mit mehreren Bats an bekannten Stellen versehen wird. An einem Tisch könnte an zwei Seiten jeweils ein Bat angebracht werden, sodass man die Ausrichtung erkennt. Diese Technik benötigt eine verhältnismäßig umfangreiche Infrastruktur mit dem exakt zu positionierenden Sensorennetzwerk an der Decke. Geringe Erweiterbarkeit, schlechte Handhabung und hohe Kosten sind wesentliche Nachteile des Active Bat Lokalisierungssystems [ADCU01]. 3.4.3 Cricket Technologie Infrastruktur sendet Funksignale zur Synchronisation und Ultraschall-Signale mit Rauminformationen über sog. „beacons“ Größenbereich nur Indoor Umfang ein „beacon“ pro 1,7 Quadratmeter Positionierungsmodell symbolisch und geometrisch Position relativ, für jede Gebäudeetage ein lokales Referenz-Koordinatensystem Orientierung ja, mit dem Cricket-Kompass Lokalisierungstechnik 1. Lateration mit Distanzberechnung durch Laufzeitmessung von Ultraschallwellen 2. Näherungsmessung aktive Komponente einer Positionierung zu lokalisierendes Objekt Genauigkeit und Zuverlässigkeit 120x120 cm Gebiete bei ca. 100 Prozent Erkennung von Objekten ja Einschränkungen keine zentrale Verwaltung Tabelle 5: Cricket Das Cricket Indoor-Lokalisierungssystem wurde am Massachusetts Institute of Technology (MIT) als Teil des 1999 gestarteten „Oxygen“-Projektes entwickelt. Das System wurde in der Version Cricket v1 lange Zeit am MIT und in anderen Forschungsgruppen getestet [NiPr00]. Die Verbesserungen wurden in die neue Version Cricket v2 eingearbeitet, die 2004 auf den Markt kommt [BaRo03]. 39 Bei Cricket wird, wie beim Active Bat System (s. Kapitel 3.4.2), eine Kombination aus Radio- und Ultraschalltechnologie verwendet und die Position durch Lateration mit Laufzeitmessung ermittelt. Allerdings realisieren beide Systeme unterschiedliche Architekturen. Beim Active Bat System befinden sich die passiven Empfänger in der Zimmerdecke und die mobilen Objekte sind mit aktiven Sendern ausgestattet. Cricket verwirklicht ein gegenteiliges Konzept. Dies hat mehrere Vorteile: da die Berechnung beim Objekt stattfindet, weiß nur dieses Objekt seine Position und kann schlecht von anderen abgehört oder verfolgt werden. Das System kann leicht auf neue Benutzer skaliert werden, da keine zusätzlichen Signale geschickt werden müssen und keine Signalkollisionen auftreten können. Die Deckensender (sogenannte Beacons) schicken in regelmäßigen Abständen ein Funksignal und ein Ultraschallsignal. Die mobilen Geräte empfangen beide Signale und können so anhand der Zeitdifferenz ihren Abstand zum Beacon errechnen. Das Cricket System benutzt ein Positionierungsmodell, das geometrische und symbolische Informationen gleichzeitig angeben kann. Jeder Beacon kennt seine symbolische Position (z.B. die Zimmernummer) und es wird keine Abbildung von Koordinaten in symbolische Bezeichner benötigt. Gleichzeitig kennt jeder Beacon seine Koordinaten bezüglich eines lokalen Referenz-Koordinatensystem, zum Beispiel für eine Etage eines Gebäudes. Die Empfänger (sogenannte listeners) können mit einem Cricket-Kompass ausgerüstet werden, der die Möglichkeit bietet, die Orientierung festzustellen. Dazu wird der Kompass mit mehreren Ultraschalldetektoren ausgerüstet, sodass eine Orientierung des mobilen Gerätes bezüglich eines Beacons errechnet werden kann, da dasselbe Ultraschallsignal des Beacons zu verschiedenen Zeitpunkten empfangen wird. Die verschiedenen Beacons werden nicht zentral gesteuert, was das Cricket-System auch im Fall eines Defekts in einem Beacon robust macht. Dies hat allerdings den Nachteil, dass keine zentrale Administration möglich ist und der symbolische Bezeichner bei jedem Beacon einzeln eingestellt werden muss. 3.4.4 RADAR Technologie IEEE 802.11 Wireless-LAN-Netzwerktechnologie Größenbereich nur Indoor 40 Umfang 3 Basisstationen pro Etage Positionierungsmodell geometrisch Position absolut Orientierung nein Lokalisierungstechnik 1. Implementierung: Analyse-des-Ortes 2. Implementierung: Triangulation aktive Komponente einer Positionierung Infrastruktur Genauigkeit und Zuverlässigkeit 3 bis 4.3 Meter bei 50 Prozent Erkennung von Objekten ja Einschränkungen Lokalisierung nur auf einer Gebäudeetage möglich; Umsetzung auf mehrere Etagen ist ein nicht-triviales Problem Tabelle 6: RADAR Das von Microsoft Reasearch entwickelte RADAR ist ein Indoor-Lokalisierungssystem, das die IEEE 802.11 Wireless-LAN Netzwerktechnologie zur Positionsbestimmung verwendet [BaPa00]. RADAR ist vollständig als Software-Erweiterung realisiert und benötigt keine weitere Hardware-Infrastruktur. Die Basisstationen (auch Access Points genannt) müssen so im Gebäude angebracht werden, dass sich ihre Empfangsbereiche überlappen. Dies erhöht auch die Wireless-LAN-Performanz und daher wird diese Konfiguration in der Regel schon gegeben sein. Die mobilen Objekte benutzen einen Laptop mit Wireless-LAN-Zugang. RADAR misst an den Basisstationen die Signalstärke, um daraus die 2-D-Position zu schließen. Zu diesem Zweck muss das Gebäude vorher vermessen werden und die gewonnenen Daten in einer sogenannten Radio-Map-Datenbank gesammelt werden. Dies ist eine Datenbank, die geometrische Positionen und zugehörige Signalstärken der verschiedenen Basisstationen enthält. Die Genauigkeit der Positionsdaten hängt sehr von den Angaben in der Radio-MapDatenbank ab. Für die Erstellung der Radio-Map wurden zwei Implementierungen getestet. Eine verwirklicht die Analyse-des-Ortes-Technik und die andere einen mathematischen Algorithmus, der Triangulation verwendet. Um den Aufenthaltsort eines mobilen Objektes zu bestimmen, misst dieses die Signalstärke zu den Basisstationen in seiner Nähe und dann sucht das System in der Datenbank nach der wahrscheinlichsten Position des Objektes. 41 Die RADAR-Version, die die Analyse des Ortes benutzt, ist genauer als die zweite Version, beide arbeiten mit einer Zuverlässigkeit von 50 Prozent. Ein Nachteil dieses Systems besteht darin, dass es bisher nicht in Gebäuden mit mehreren Etagen funktioniert. 3.4.5 Smart Floor Technologie Näherungsmessung durch physischen Kontakt durch Drucksensoren in Bodenplatten Größenbereich nur Indoor Umfang ein vollständiges Sensornetzwerk pro Zimmer Positionierungsmodell geometrisch Position absolut Orientierung nein Lokalisierungstechnik Näherungsmessung durch physischen Kontakt aktive Komponente einer Positionierung Infrastruktur Genauigkeit und Zuverlässigkeit auf Größe der Bodenplatten (50 cm x 50 cm) bei 100 Prozent Erkennung von Objekten ja Einschränkungen bisher nur auf kleine Anzahl Personen beschränkt Tabelle 7: Smart Floor Das Projekt Smart Floor vom Georgia Institute of Technology verwendet Drucksensoren in Bodenplatten, um Personen anhand ihrer Schrittmuster zu identifizieren und zu verfolgen. An jeder Ecke einer Bodenplatte wird ein Drucksensor installiert, sodass jeweils vier Bodenplatten auf einem Drucksensor liegen. Die Sensoren messen nun die Kraft mit der ein Benutzer auftritt, wenn er über den mit den Bodenplatten bestückten Gang geht. Ein Algorithmus versucht mithilfe eines Hidden-Markov-Modells [RoGr00] eine Geh-Signatur anzulegen und mit bekannten Signaturen aus einer Datenbank zu vergleichen, um eine Identifizierung möglich zu machen. Bei einer Testgruppe von ca. zwanzig Personen konnte bei einer Testkonfiguration eine Erkennungsrate von 90 % erreicht werden. 42 Der Vorteil dieser Technik ist, dass Personen erkannt werden können, ohne dass sie irgendwelche technischen Vorrichtungen bei sich tragen müssen. Allerdings müssen alle Räume mit den Bodenplatten bestückt werden, was hohe Kosten und schlechte Skalierbarkeit zur Folge hat. 43 4 Modellierung des Positionsdienstes In diesem Kapitel wird der Entwurf des Positionsdienstes beschrieben, der von ortbewussten Applikationen über eine API (engl. application programming interface) benutzt werden kann, die die Details der Positionsbestimmung für die Applikation transparent macht und nützliche „Middleware“-Funktionalität bereitstellt. Die Architektur dieses Positionsdienstes wird dabei aus Überlegungen heraus entwickelt, die sich aus dem Vergleich der zu benutzenden Lokalisierungstechniken ergeben. 4.1 Hauptkomponenten Im Folgenden werden die beim Vergleich festgestellten Unterschiede zwischen den oben beschriebenen Lokalisierungssystemen daraufhin untersucht, welche Auswirkungen sie auf eine mögliche Realisierung eines Positionsdienstes haben. Wie in Kapitel 1 deutlich wurde, verwenden die Lokalisierungssysteme unterschiedliche Darstellungen von Positionen. Positionen können geometrisch oder symbolisch angegeben werden und beide können absolut oder relativ sein. Der zu entwickelnde Positionsdienst muss daher Positionen in einem für die ortsbewusste Applikation verständlichem Standardformat anbieten können. Dazu muss zunächst ein Positionierungsmodell entwickelt werden. Zusätzlich muss der Positionsdienst Konvertierungsfunktionen zwischen den verschiedenen Arten von Positionsangaben anbieten. Neben den verschiedenen Positionsinformationen Zuverlässigkeit der (s. Kapitel 1). Darstellungsformen Lokalisierungssysteme Diese Tatsache unterscheiden in muss der sich die Genauigkeit und beim Erstellen des Positionierungsmodell berücksichtigt werden, indem Positionen nicht durch Punkte, sondern durch Aufenthaltsbereiche bezüglich einer bestimmten Genauigkeit bestimmt werden. Aus den unterschiedlich genauen Positionsangaben, kann eine Position berechnet werden, deren Genauigkeit größer oder gleich der Genauigkeit der anderen Angaben ist. Dies nennt man Sensor-Fusion (s. Kapitel 2.3). Liefert zum Beispiel ein System genaue x- und y-Koordinaten und ein weiteres System genaue Höhenangaben, so kann die Gesamtmessung der verschiedenen Sensoren verbessert werden. Der 45 Positionsdienst sollte diesen Vorteil nutzen und verbesserte Positionsangaben berechnen können. Durch gleichzeitiges Benutzen verschiedener Lokalisierungssysteme können noch weitere Einschränkungen einzelner Systeme verringert oder aufgelöst werden. Werden zum Beispiel ein Indoor- und ein Outdoor-System gleichzeitig benutzt, so kann der Positionsdienst Positionsangaben außerhalb und innerhalb von Gebäuden, in denen die Indoor-Technik installiert ist, liefern. Auch der Anwendungsumfang kann erhöht werden: so ist zum Beispiel die SmartFloor-Technik auf einen Raum beschränkt, aber in der Kombination mit GPS ist theoretisch eine weltweite Positionsermittlung möglich. Die Berechnung der Position kann entweder im mobilen Endgerät oder in der durch die Lokalisierungssysteme bereitgestellten Infrastruktur stattfinden. Dies ist ein Hauptunterschied zwischen den vorgestellten Systemen, der dazu führt, dass der Positionsdienst durch eine Client-Server-Architektur realisiert wird. Die ClientKomponente „Position-Service-Engine“ wird auf dem Endgerät installiert und enthält die Schnittstelle zu den ortsbewussten Applikationen, die den Positionsdienst nutzen sollen. Sie kommuniziert über Netzwerk mit der Serverkomponente, dem „Position-Web-Service“ (PWS). Für Lokalisierungssysteme, die eine Positionsberechnung auf Seite des Objektes realisieren, wird auf dem mobilen Endgerät eine Hardware installiert, die über Hardwaretreiber angesprochen werden kann. Bei anderen Lokalisierungssystemen findet die Berechnung bei einem Server der Infrastruktur statt, der auch die Steuerung der Hardware übernimmt. Da es möglich sein soll, verschiedene Lokalisierungssysteme als Module im Positionsdienst einzubinden und diese gleichzeitig benutzen zu können, muss es eine Komponente beim Positionsdienst geben, die eine Schnittstelle besitzt, die den Zugriff auf diese Hardwaretreiber gestattet. Diese Komponente wird mit „Location-Sensing-Device“ (LSDevice) bezeichnet. Für jedes Lokalisierungssystem wird dem Positionsdienst eine Instanz dieser Komponente, entweder auf der Clientoder auf der Serverseite, hinzugefügt. Über diese Komponente wird der Zugriff des Positionsdienstes auf die Hardware entkoppelt, was eine Erweiterbarkeit durch zukünftige neue Technologien ermöglicht. Ferner muss es den Applikationen ermöglicht werden, die Infrastruktur-Server durch eine Netzwerkkommunikation anzusprechen und Positionen bei der Infrastruktur 46 abzufragen. Dabei gibt es eine Vielzahl von verschiedenen Servern. Es ist vorstellbar, dass in einer Etage eines Gebäudes ein Server zuständig ist und in einer anderen Etage ein anderer Server, obwohl beide die gleiche Lokalisierungstechnik verwenden. Die Infrastruktur-Server können sich auch dadurch unterscheiden, dass sie eigene ReferenzKoordinatensysteme oder verschiedene Positionsmodelle verwenden. Die Serverkomponente „Position-Web-Service“ hat infolgedessen die Aufgabe, die entsprechenden zuständigen Server zu ermitteln und auch Konvertierungen zwischen verschiedenen Darstellungsformen von Positionen durchzuführen. Die Lokalisierungssysteme, bei denen die Infrastruktur die aktive Komponente der Positionierung ist, erfordern eine Identifizierung von mobilen Objekten. Daher muss jedem mobilen Objekt eine GUID (s. auch Kapitel 2.1.3) zugewiesen werden, damit die eindeutige Erkennung möglich ist. Diese GUID muss dann bei Anfragen an die Infrastruktur übergeben werden. Abbildung 4.1: Architektur des Positionsdienstes 47 Beim Vergleich der Systeme wurde festgestellt, dass einige von ihnen auch Aussagen über die Orientierung des mobilen Gerätes treffen können, was eine interessante und nützliche Information ist. Daher wird die Orientierung bei der Konzeption des Positionsdienstes ebenfalls berücksichtigt. Durch den Vergleich der unterschiedlichen Lokalisierungssysteme, die von dem Positionsdienst gleichzeitig zur Positionierung benutzt werden sollen, konnten folgende Komponenten identifiziert werden, aus denen der Positionsdienst bestehen muss (s. Abbildung 4.1): Location-Sensing-Device: Diese Komponente beinhaltet die Schnittstelle zu den Hardwaretreibern der verschiedenen Lokalisierungstechniken. Position-Service-Engine: Diese Komponente verwirklicht die Schnittstelle, die ortsbewussten Applikationen den Zugriff auf den Positionsdienst ermöglicht. Sie steuert die Positionsberechnung und die Kommunikation mit dem Position- Web-Service oder den Infrastrukturkomponenten und macht diese Vorgänge für die Applikation transparent. Position-Web-Service: Diese Komponente nimmt Anfragen zur Konvertierung von geometrischen und symbolischen Positionen entgegen. Dazu werden hier die Konfigurationsdaten der geographischen Gebiete verwaltet, in denen auch die zuständigen Infrastruktur-Server eingetragen sind. Wird eine Positionierung durch die Infrastruktur nötig, so löst der Position-Web-Service die Berechnung der Position bei der Komponente Infrastruktur-Position-Service-Engine aus und stellt die Ergebnisse bereit. Infrastructure-Position-Service-Engine: Diese Komponente entspricht Positionsberechnungen der Position-Service-Engine ist, der Position-Service-Engine Infrastruktur dass keine durch. Der und führt Unterschied Netzwerkkommunikation mit die zur dem Position-Web-Service stattfindet. 48 4.2 Positionierungsmodell Im letzten Abschnitt wurde dargelegt, dass zunächst ein Positionierungsmodell entwickelt werden muss, bevor es möglich ist, einen leistungsfähigen Positionsdienst zu entwerfen. Dieses Positionierungsmodell definiert das Format der Positionen, die vom Positionsdienst verwendet und der ortsbewussten Applikation zugänglich gemacht werden. In diesem Abschnitt wird nun ein kombiniertes Modell vorgestellt, das symbolische und geometrische Positionen verarbeiten kann. Dabei muss in einem ersten Schritt die Genauigkeit und die Zuverlässigkeit von geometrischen Positionsinformationen berücksichtigt werden. Für die symbolischen Angaben wird in einem zweiten Schritt ein domänen- und zonenbasiertes Modell definiert (s. Kapitel 2.1.2). Positionen können entweder „lokalisierbaren Objekten“ oder „logischen Gebieten“ zugewiesen werden. Daher werden diese in dem Positionierungsmodell definiert und Bedingungen für die Inklusion eines Objektes in einem Gebiet angegeben. 4.2.1 Geometrisches Modell Eine absolute geometrische Position besteht aus der Angabe der Koordinaten in einem globalen geographischen Koordinatensystem. In diesem Modell wird das bei GPS eingesetzte, weit verbreitete „World Geodetic System 1984“ (WGS84) für die Angabe von Koordinaten verwendet (s. Kapitel 2.1.1). Die Koordinaten nach dem WGS84Format können leicht in andere Koordinatensysteme konvertiert werden. Die vom Positionsdienst benutzten Koordinaten sind dreidimensional, d. h. sie beinhalten zusätzlich zur Breiten- und Längenangabe eine Höheninformation. Die Höheninformation wird allerdings in diesem Modell nur dafür benutzt, festzustellen, ob sich eine Koordinatenangabe auf das richtige Stockwerk bezieht. Dies dient einerseits einer einfacheren Darstellung und ist andererseits für die meisten Fälle bereits ausreichend. Bei den bisherigen Einsatzszenarien für ortsbezogene Anwendungen, wie einem Stadtführer, müssen selten übereinander liegende mobile Objekte, sehr wohl aber Gebäude mit mehreren Etagen berücksichtigt werden. Eine Erweiterung auf den dreidimensionalen Fall ist ohne große Änderungen der im Weiteren beschriebenen Mechanismen möglich. 49 Manche Lokalisierungstechniken können nur relative geometrische Positionen angeben, d. h. sie benutzen ein lokales Koordinatensystem, das zum Beispiel auf einen Bezugspunkt in einem Gebäude ausgerichtet ist. Ein lokales Koordinatensystem kann sogar notwendig werden, wenn das Gebiet mobil ist (z. B. ein Koordinatensystem, das Positionen auf einem Schiff angibt). Diese Koordinaten könnten auch in Breite, Länge und Höhe angegeben werden, genauso wie die absoluten Positionen. Allerdings sind Angaben in einem kartesischen Koordinatensystem innerhalb von Gebäuden bedeutungsvoller, da es zum Beispiel leicht ist, festzustellen, dass sich zwei Objekte mit den Koordinaten (1m, 1m) und (1m, 2m) einen Meter auseinander befinden, aber die Angaben in Breite und Länge wären für die wenigsten Nutzer zu verstehen. 4.2.2 Symbolisches Modell Für symbolische Positionsangaben wird ein kombiniertes domänen- und zonenbasiertes Modell benutzt (s. Kapitel 2.1.2). Die Standorte werden in sich nicht überschneidende Zonen eingeteilt, die sogenannten logischen Gebiete, die jeweils einen eindeutigen Bezeichner, den sogenannten Gebietsnamen, erhalten. Eine Domäne entspricht dabei einer Betrachtungsebene, die Gebiete mit gleichen Eigenschaften zusammenfasst. Zum Beispiel gehören alle Gebäude eines Geländes zur Domäne „DOMAIN_BUILDING“. Dabei werden auch die geographischen Gegebenheiten berücksichtigt, zum Beispiel besteht ein Gebäude aus mehreren Etagen etc., sodass die nächst größere Domäne die Gebiete der kleineren Domäne enthält. Eine Menge von Domänen wird durch diese „enthält“-Beziehung sortiert. Es wird dadurch eine hierarchische Ordnung entsprechend der geographischen Gegebenheiten erreicht. Befindet sich zum Beispiel ein Raum R in einem bestimmten Gebäude G, so gilt: G „enthält“ R oder RG. Es wird folgende Hierarchie von Domänen vorgeschlagen: DOMAIN_CONTINENT DOMAIN_STATE DOMAIN_TERRITORY DOMAIN_BUILDING DOMAIN_FLOOR DOMAIN_ROOM 50 Es wären aber noch weitere Domänen denkbar, wie zum Beispiel DOMAIN_COMPANY etc.. Ein Gebietsname wird durch eine Zeichenkette dargestellt, die keine Leerzeichen enthält, wie zum Beispiel „Building32“ oder „Room344“. Ein symbolischer Positionsbezeichner ist durch eine Menge von Gebietsnamen definiert, die entsprechend ihrer Domänenzugehörigkeit absteigend sortiert sind. Dabei wird der Positionsbezeichner als Zeichenkette dargestellt, bei der die Gebietsnamen durch einen Punkt getrennt angegeben werden. Eine absolute symbolische Positionsinformation besteht dann aus dieser Zeichenkette und der Angabe der Domäne, wie das folgende Beispiel veranschaulicht: absolut: TU_Kaiserslautern.Building32.Room344, DOMAIN_ROOM Eine relative Positionsinformation aus dem Gebietsnamen wird wie folgt dargestellt: relativ: 4.2.3 Room344 Logisches Gebiet Mit logischen Gebieten (engl. logical area, kurz LA) werden geographische Regionen bezeichnet, wie zum Beispiel Gebäude, Etagen und Räume. Logische Gebiete können mit Mengen identifiziert werden, da sie untereinander eine Teilmengenbeziehung haben und da sie Objekte enthalten können. Ist zum Beispiel R ein Zimmer und G ein Gebäude, dann gilt: RG. Ein logisches Gebiet kann aus mehreren Zonen bestehen, die durch die Angabe von konvexen Polygonen definiert werden (s. Abbildung 4.2). Die Konvexität der Polygone schafft günstige mathematische Eigenschaften, die zum Beispiel die Berechnung vereinfachen, ob sich ein Punkt innerhalb oder außerhalb des Polygons befindet. Um die Ausmaße der logischen Gebiete nicht auf konvexe Formen einzuschränken, können sie aus mehreren Polygonen bestehen, sodass konkave Gebiete aus kleineren konvexen Polygonen zusammengesetzt werden können. Ein Polygon P wird durch seine Eckpunkte definiert: P=A0,...,An, wobei die Eckpunkte Ai entgegen dem Uhrzeigersinn angegeben werden. Zusätzlich wird das logische Gebiet von einem Rechteck (s. blauen Rand in der Abbildung 4.2) eingerahmt. Dieses kann genutzt werden, um schnell auszuschließen, 51 dass sich ein Objekt innerhalb des logischen Gebietes befindet, indem nicht dessen genaue Form betrachtet wird, sondern nur das Rechteck. Abbildung 4.2: Logisches Gebiet Mit diesem Modell ist es auch möglich, mobile Gebiete in Betracht zu ziehen. Ein Beispiel für ein mobiles Gebiet könnte ein Schiff sein, das in Bewegung ist. Die Eigenschaften eines logischen Gebietes werden durch seinen Deskriptor beschrieben, der wie folgt aufgebaut ist: Logical Area Descriptor: GUID: jedem Gebiet wird eine GUID zugeteilt, anhand derer eine eindeutige Identifizierung möglich ist Name: dies ist der Gebietsname (s. Kapitel 4.2.2) Description: eine nähere Beschreibung Mobility: STATIC oder MOBILE: Die meisten logischen Gebiete werden statisch sein, wie zum Beispiel Gebäude. Es ist aber auch möglich, ein Schiff oder ein Flugzeug als mobiles logisches Gebiet zu betrachten. Scale: INDOOR oder OUTDOOR: dieser Wert gibt an, ob sich das Gebiet innerhalb oder außerhalb von Gebäuden befindet. 52 Domain: hier wird angegeben zu welcher Domäne das logische Gebiet gehört; wird zum Beispiel ein Zimmer beschrieben, wäre die Domäne: DOMAIN_ROOM (s. Kapitel 4.2.2) Die symbolische Position eines logischen Gebietes wird durch den symbolischen Bezeichner ausgedrückt, zum Beispiel: „TU_Kaiserslautern.Building32.Room11“, die geometrische Position durch einen geographischen Punkt, der sicher innerhalb des Gebietes liegt, zum Beispiel der Mittelpunkt des Gebietes. 4.2.4 Lokalisierbares Objekt Lokalisierbare Objekte (engl. locatable object, kurz LO) können Endgeräte, wie zum Beispiel Laptops, Handys oder Drucker sein. Sie befinden sich innerhalb von logischen Gebieten und werden daher mit Elementen von Mengen identifiziert. So sind Angaben über den Aufenthalt eines lokalisierbaren Objektes innerhalb eines logischen Gebietes durch folgende Aussage möglich: Sei o ein lokalisierbares Objekt. Das Objekt o befindet sich im logischen Gebiet G, d. h. oG. Abbildung 4.3: Aufenthaltskreis eines lokalisierbaren Objektes Die geometrische Position eines lokalisierbaren Objektes setzt sich zusammen aus der, von der Lokalisierungstechnik ermittelten, geographischen Position sowie einer Angabe über die Genauigkeit dieser Information. Daraus ergibt sich als Aufenthaltsbereich des lokalisierbaren Objektes ein Kreis, der sogenannte Aufenthaltskreis (s. Abbildung 4.3). Die reale Position des lokalisierbaren Objektes liegt somit irgendwo innerhalb des Kreises. Die symbolische Position eines lokalisierbaren Objektes entspricht dem symbolischen Bezeichner des logischen Gebietes, der dieses Objekt enthält. Zur Verdeutlichung: befindet sich ein lokalisierbares Objekt o in einem Gebiet G, ist die symbolische Position von o der Bezeichner von G: „TU_Kaiserslautern.Building32.Room344“. 53 Zusätzlich kann die Orientierung des lokalisierbaren Objektes angegeben werden. Es kann dabei zwischen der geometrischen und der symbolischen Orientierung unterschieden werden. Die geometrische Orientierung wird durch einen Winkel in Grad ausgedrückt. Dabei entspricht der magnetische Norden Null Grad, der Osten 90 Grad etc.. Aus der geometrischen Position und der geometrischen Orientierung kann ermittelt werden, in Richtung welches logischen Gebietes das Objekt zeigt. Der symbolische Bezeichner dieses Gebietes ist die symbolische Orientierung. Lokalisierbare Objekte können mobil sein wie zum Beispiel Laptops, Handys, etc. Es gibt jedoch auch statische Objekte, deren Position von Interesse ist, wie zum Beispiel Drucker oder Scanner. Die Objekte können danach kategorisiert werden, ob sie Dienstnutzer (Kategorie USER) oder Dienstanbieter (Kategorie RESSOURCE) sind. Folgende Eigenschaften beschreiben ein lokalisierbares Objekt: Locatable Object Descriptor: GUID: jedes Objekt benötigt eine GUID, um Lokalisierungssysteme mit Erkennung benutzen zu können Name: ein menschen-lesbarer Name Description: eine nähere Beschreibung Mobility: STATIC oder MOBILE: lokalisierbar sind mobile Endgeräte, wie Laptops aber auch fix installierte Geräte wie Drucker etc. Category: USER oder RESSOURCE: diese Eigenschaft drückt aus, ob es sich bei diesem LO um einen Nutzer oder einen Dienstanbieter handelt. 4.2.5 Inklusion eines lokalisierbaren Objektes in einem logischen Gebiet Die Position eines lokalisierbaren Objektes kann aufgrund von Ungenauigkeiten in den Sensormessungen der verschiedenen Lokalisierungstechniken nicht als ein Punkt in einem Koordinatensystem spezifiziert werden, sondern wird als Aufenthaltsbereich in Form eines Kreises angegeben (s. Abbildung 4.3). Daher müssen Bedingungen festgelegt werden, die bestimmen, wann sich ein Objekt innerhalb eines logischen 54 Gebietes befindet. Zu diesem Zweck wird die sogenannte Überlappung eingeführt. Schneidet sich der Aufenthaltskreis mit dem Polygon des logischen Gebietes, wird ermittelt, wie viel Prozent die Schnittfläche von der Gesamtfläche des Aufenthaltskreises ausmacht. Diese Prozentzahl ist die Überlappung und für jedes logische Gebiet wird festgelegt, wie groß diese Überlappung mindestens sein muss, damit angenommen werden kann, dass sich ein lokalisierbares Objekt innerhalb des logischen Gebietes befindet. Zusätzlich zur Überlappung wird verlangt, dass eine für jedes logische Gebiet festgelegte Mindestgenauigkeit erreicht wird, weil sonst keine Aussagen über die Inklusion möglich sind. Daher sehen die Bedingungen für den Aufenthalt eines lokalisierbaren Objektes o in einem logischen Gebiet G folgendermaßen aus: 1. Genauigkeit von o von G verlangte Genauigkeit 2. Überlappung von o von G verlangte Überlappung Sind diese Bedingungen erfüllt, gilt oG. Abbildung 4.4: Inklusion eines Objektes in einem logischen Gebiet In der Abbildung 4.4 gilt für das eingezeichnete Gebiet die Forderung einer MindestÜberlappung von 40%. Objekt 1 hat eine Überlappung von 41% und liegt damit genauso wie Objekt 4 innerhalb des Gebietes. Allerdings erreicht Objekt 2 diese Mindest-Überlappung nicht und liegt deshalb außerhalb. Die Positionsbestimmung von Objekt 3 ist zu ungenau und wird daher nicht in Betracht gezogen. Der kürzeste Weg zwischen zwei Punkten entlang der idealisierten Erdoberfläche ist bei weiteren Entfernungen, d. h. mehr als einem Kilometer, (wie zum Beispiel zwischen zwei Städten,) keine Gerade, sondern ein Bogen. Der Abstand ist daher die Länge des Bogens auf dem Referenzkörper, der als Modell der Erde gewählt wurde. Die 55 Referenzkörper können Kugeln, Ellipsoide oder Geoide sein (s. Kapitel 2.1.1). Die Verwendung von Geoiden als Referenzkörpern führt zu sehr komplexen mathematischen Modellen, weshalb in den meisten Fällen Kugeln oder Ellipsoide für Kurs- oder Abstandsberechnungen bevorzugt werden. Bei den Berechnungen zur Inklusion eines lokalisierbaren Objektes in einem logischen Gebiet befinden sich zwei Punkte im Vergleich zum Erdumfang sehr nah beieinander, und aus diesem Grund reicht es für die Abstandsberechnungen in der Nähe eines fixen Punktes aus, die Erde als „flach“ zu betrachten [EdWi03]. So werden weitere Punkte in einem kartesischen Koordinatensystem mit dem fixen Punkt als Ursprung, der y-Achse in Richtung Norden und der x-Achse in Richtung Osten betrachtet. Ist der Ursprung als geographischer Punkt (lat0, lon0) gegeben, und ein weiterer Punkt als (lat, lon), so kann der letztere als Punkt in dem Koordinatensystem, das die Erde als flach modelliert, angegeben werden: x polare _ Erdkrümmung cos(lat 0) (lon lon 0) y äquatoriale _ Erdkrümmung (lat lat 0) In dem Koordinatensystem können Abstandsberechnungen mit der euklidischen Norm durchgeführt werden. Diese Approximationen versagen allerdings in der Nähe der Pole und bei großen Abständen. Dann liegt der Fehler bei: ( Abstand )2 Erdkrümmung Um zu berechnen, ob sich ein Objekt in einem logischen Gebiet befindet, wird der Mittelpunkt des Aufenthaltskreises des Objektes als Ursprung genommen und die zu überprüfenden Eckpunkte des Polygons in das lokale Koordinatensystem, dass die Erde als flach modelliert, umgerechnet. Dann ist es möglich eine Schnittfläche zu bestimmen und die Überlappung zu berechnen. 4.3 Komponentenbeschreibung In diesem Abschnitt werden nun die Komponenten des Positionsdienstes und deren Interaktion miteinander beschrieben. Dabei werden zwei Schnittstellen vorgestellt, deren Entwicklung zum Ziel dieser Arbeit gehört. Die erste Schnittstelle ermöglicht den standardisierten Zugriff auf die Hardware. Die zweite Schnittstelle ist jene, über die der 56 Positionsdienst genutzt werden kann. Ihre wichtigsten Funktionen und deren Funktionsweisen werden erklärt. 4.3.1 Location-Sensing-Device Die Location-Sensing-Devices (kurz LSDevice) realisieren den Zugriff auf die installierten Lokalisierungssysteme und bieten dazu eine standardisierte Schnittstelle an, die auf die vom Hersteller mitgelieferten Hardware-Treiber der jeweiligen Technik zugreift. Die von der Hardware bereitgestellten Positionsdaten werden dabei in das vom Positionierungsmodell festgelegte Format konvertiert. Soll zum Beispiel ein GPSReceiver benutzt werden, muss es ein Location-Sensing-Device geben, das den Zugriff auf die GPS-Technik ermöglicht. Jede dieser Komponenten kann ganz unterschiedlich realisiert sein. Wie die Komponenten operieren und gestaltet sind, hängt von der benutzten Hardware ab. Alle Location-Sensing-Devices müssen aber die gleiche Schnittstelle realisieren und können dann zur Position-Service-Engine hinzugefügt werden. Die Position-Service-Engine bezieht alle installierten Location-Sensing-Devices in die Positionsbestimmung mit ein und greift über die Schnittstelle auf sie zu. Dazu muss sie abfragen können, welche Art von Informationen das Location-Sensing-Device bereitstellen kann. Die Art der Informationen werden in dem sogenannte LSDevice Descriptor gespeichert. Dieser kann alle möglichen Eigenschaften beschreiben, die ein Lokalisierungssystem besitzen kann (s. Tabelle 8). Hierzu zählen die verschiedenen möglichen Positions- und Orientierungsangaben, die ein LSDevice berechnen kann. Ob das LSDevice in der Infrastruktur oder bei der PSEngine installiert wurde, kann über die Eigenschaft „aktive Komponente der Berechnung“ in Erfahrung gebracht werden. Wichtig ist auch, ob es sich um eine Indoor- oder eine Outdoor-Technik handelt und in welcher Domäne das System operieren kann. Positionsangaben absolute geometrische relative geometrische absolute symbolische relative symbolische Orientierung geometrisch symbolisch 57 Aktive Komponente bei der Berechnung Infrastruktur Objekt Domäne (s. Kapitel 4.2.2) Größenbereich Indoor Outdoor Tabelle 8: Art der Informationen, die ein Location Sensing Device bereitstellen kann Die Komponente LSDevice arbeitet nach dem „Pull-Prinzip“, d. h. die Informationen sollen auf Anfrage berechnet werden. Manche Hardwaretreiber fragen die Hardware in einem Prozess (bzw. einem Thread) periodisch ab. Andere sind Ereignis-gesteuert, d. h. sie erhalten immer dann ein Signal, wenn wieder Informationen zur Verfügung stehen. Die Realisierung der einzelnen LSDevices kann daher intern sehr unterschiedlich ausfallen. Um das „Pull-Prinzip“ zu erreichen, wird bei Ereignis-gesteuerten Lokalisierungstechniken der letzte von der Hardware berechnete Wert zurückgegeben. Abbildung 4.5: Architektur der Komponente Location-Sensing-Device Es besteht für die ortsbewusste Applikation die Möglichkeit, über einen Direktzugang bzw. einen Tunnel Zugriff auf spezielle Funktionalität der Hardware zu erhalten (s. Abbildung 4.5). Da es sein könnte, dass eine Lokalisierungstechnologie neue 58 Funktionalität zu der vom Positionsdienst benutzten bereitstellen kann, wäre die Applikation in der Lage, die Funktionen des Positionsdienstes und die zusätzlichen zu benutzen. Auf diese Weise wird verhindert, dass der Positionsdienst die Funktionalität einschränkt. Ein Beispiel von denkbaren Zusatzinformationen wäre die Geschwindigkeit des mobilen Objektes, die beim Positionsdienst nicht relevant ist, aber vielleicht der Applikation nützt. 4.3.1.1 Schnittstellenbeschreibung In Kapitel 1 wurde gezeigt, dass jedes Lokalisierungssystem unter Umständen völlig verschiedene Hardware nutzt. Daher muss jede Hardware vor der Benutzung konfiguriert werden. Über die Funktion configure() werden die notwendigen Parameter übergeben und die Konfiguration durchgeführt. Ein GPS-Receiver wird zum Beispiel über eine serielle Schnittstelle angesprochen, deren Port und Baudrate bekannt sein müssen. Arbeitet eine Lokalisierungstechnik mit Erkennung, benötigt diese eine Beschreibung des lokalisierbaren Objektes, die zum Beispiel auch die GUID enthält (s. Kapitel 4.2.4). Diese Beschreibung wird ebenfalls über die Funktion configure() übergeben. Nach der Konfiguration muss die Hardware mithilfe der Funktion initialize() in den Betriebszustand versetzt werden. configure ermöglicht die Konfiguration des LSDevices initialize initialisiert das Gerät activate deactivate aktiviert oder deaktiviert ein Gerät um Ressourcen zu sparen isActive gibt an, ob ein Gerät aktiviert ist getDescriptor gibt den LSDevice Descriptor zurück isLocationSensingAvailable stellt fest, ob die Hardware eine Positionierung durchführen kann getGeometricPosition ermittelt die geometrische Position getSymbolicPosition ermittelt die symbolische Position getGeometricOrientation ermittelt die geometrische Orientierung getSymbolicOrientation ermittelt die geometrische Orientierung Tabelle 9: Schnittstelle zur Hardware 59 Folgendes Szenario ist vorstellbar: Auf einem Laptop sind verschieden Indoor- oder Outdoor-LSDevices installiert und dieser befindet sich innerhalb eines Gebäudes. Um festzustellen, wo sich der Laptop befindet, initiiert die PSEngine eine Positionberechnung aller installierter LSDevices. Obwohl Outdoor-Systeme nicht innerhalb von Gebäuden operieren können, werden diese dennoch benutzt. Dies belastet die Energie- und Rechnerressourcen. Um die Ressourcen zu schonen, gibt es daher die Möglichkeit, die Lokalisierungshardware über die Funktionen activate() / deactivate() aus- bzw. einzuschalten. Über die Funktion getDescriptor kann der LSDevice Descriptor abgefragt werden (s. Kapitel 4.3.1). Dieser beschreibt das LSDevice und kann genutzt werden um festzustellen, dass es nicht innerhalb von Gebäuden funktioniert und daher deaktiviert werden sollte. Die PSEngine fragt über die Funktion isActive() den Zustand eines LSDevices ab und kann so entscheiden, ob es in die Berechnung mit einbezogen werden soll. Es wäre aber auch möglich, dass eine IndoorTechnik im Moment der Abfrage keine Positionierung durchführen kann, da die Sensoren das Objekt nicht erfassen können (z. B. können Systeme, die Infrarotwellen zur Ortung benutzen durch starke Sonnenstrahlung gestört werden). Dies kann über die Funktion isLocationSensingAvailable() herausgefunden werden. Sie liefert ein positives Ergebnis, wenn die Hardware in der Lage ist, die Position zu berechnen. Bei GPS würde zum Beispiel innerhalb von Gebäuden eine negative Rückmeldung kommen. Nachdem ermittelt wurde, dass ein LSDevice zur Positionsbestimmung benutzt werden kann, können die gewünschten Positions- oder Orientierungsinformationen über mehrere Funktionen abgerufen werden (s. Tabelle 9). Zum Beispiel gibt die Funktion getGeometricPosition() die geometrische Position zurück. 4.3.2 Position-Service-Engine Die Komponente Position-Service-Engine (kurz PSEngine) stellt für die ortsbewussten Applikationen die Schnittstelle zum Positionsdienst bereit und ist der Teil der Software, der auf dem mobilen Gerät ausgeführt wird. Sie steuert die Positionsberechnungen und bietet den ortbewussten Applikationen standardisierte, symbolische und geometrische Positionsinformationen, sowie Angaben über die Orientierung an. 60 4.3.2.1 Schnittstellenbeschreibung Wenn die Position-Service-Engine gestartet wird, benötigt sie mehrere Informationen. Eine ist die Beschreibung des lokalisierbaren Objektes, d. h. der Locatable Object Descriptor, der der Position-Service-Engine über die Funktion setLocatableObjectDescriptor() zur Verfügung gestellt wird (s. Tabelle 10). Wird dieses Objekt zum Beispiel von dem Sensorennetzwerk einer Indoor-Lokalisierungstechnik erfasst, so wird dieses anhand der GUID erkannt und so eine Positionierung ermöglicht. Um die gewünschte Information bei der Infrastruktur abzufragen, muss die Position-Service-Engine den zuständigen Position-Web-Service ermitteln. Zu diesem Zweck muss zunächst der oberste PWS in der Hierarchie bekannt sein. Dieser wird über die Funktion setGlobalPositionWebService() gesetzt. Ausgehend von dem globalen PWS kann die Position-Service-Engine nun den zuständigen PWS ermitteln (wie dies geschieht, ist in Kapitel 4.3.4 beschrieben). installDevice uninstallDevice installiert bzw. deinstalliert ein LSDevice setLocatableObjectDescriptor übergibt der Position-Service-Engine eine Beschreibung des Endgerätes auf dem sie ausgeführt wird. Diese Informationen werden unter anderem von den LSDevices benötigt, die eine Positionierung mit Erkennung durchführen setGlobalPositionWebService da der Position-Web-Service hierarchisch aufgebaut ist, braucht die Position-Service-Engine Informationen über den obersten PWS getSymbolicPosition ermittelt die symbolische Position. Es werden alle installierten LSDevices mit einbezogen getGeometricPosition ermittelt die geometrische Position. Es werden alle installierten LSDevices mit einbezogen getGeometricOrientation ermittelt die geometrische Orientierung. Es werden alle installierten LSDevices mit einbezogen getSymbolicOrientation ermittelt die symbolische Orientierung. Es werden alle installierten LSDevices mit einbezogen Tabelle 10: Die API vom Positionsdienst Nachdem die Position-Service-Engine diese Informationen besitzt, können ihr die LSDevices, die vorher konfiguriert und initialisiert wurden, über die Funktion 61 installDevice() hinzugefügt werden. Diese Funktion erlaubt zusammen mit der Funktion uninstallDevice() ein dynamisches Einbinden verschiedener Lokalisierungssysteme während der Laufzeit. Nun ist eine Positionsbestimmung möglich und kann über zwei Funktionen abgerufen werden. Die Funktion getSymbolicPosition() berechnet die symbolische Position. Dabei kann die gesuchte Domäne angegeben werden. Wenn zum Beispiel nur nach dem Gebäude gesucht wird und nicht versucht wird das Zimmer zu ermitteln, kann die Suche vorher abgebrochen werden. Die Funktion getGeometricPosition() liefert die geometrische Position in WGS84. Dabei kann eine gewünschte Genauigkeit angegeben werden, sodass versucht wird diese zu erreichen. Hat zum Beispiel eine Lokalisierungstechnik die geometrische Position mit einer ausreichenden Genauigkeit berechnet, wird nicht mehr versucht die Genauigkeit mithilfe anderer installierter Techniken zu erhöhen. Bei beiden Funktionen ist es möglich, Benutzereingaben oder -vorwissen mit in die Positionierung einzubeziehen, wodurch sich die Berechnung steuern und vereinfachen lässt. Zu diesem Wissen zählt zum Beispiel der Größenbereich (s. Kapitel 3.1). Ist bekannt, dass sich das Objekt in einem Gebäude befindet, müssen keine OutdoorTechnologien in die Berechnung mit einbezogen werden. Aber auch Wissen über die aktive Komponente der Berechnung oder die Domäne kann nützlich sein. Ist die geometrische Position bekannt, muss diese nur in die symbolische umgerechnet werden. Außerdem kann der zuständige Position-Web-Service angegeben werden, sodass dieser nicht mehr gesucht werden muss. 4.3.2.2 Komponentenbeschreibung Die Position-Service-Engine kann ihrerseits in verschiedene Komponenten aufgeteilt werden. Die Struktur der Position-Service-Engine ist in Abbildung 4.6 dargestellt. Dabei ist sowohl der Datenfluss (grüne Pfeile) als auch der Kontrollfluss (blaue Pfeile) eingezeichnet. Bei den einzelnen Komponenten wird zwischen „Data Repositories“ (eckige Kästen) und „Computational Units“ (abgerundete Kästen) unterschieden. „Data Repositories“ (deutsch „Datenbehälter“) sind passive abstrakte Datentypen und „Computational Units“ (deutsch „rechnende Einheiten“) sind Komponenten, die aktiv Berechnungen durchführen. Diese Informationen machen die Interaktion der Komponenten deutlich. 62 Der Ablauf einer Anfrage zur Positionsbestimmung durch die ortsbewusste Applikation wird im Folgenden am Beispiel der geometrischen Positionen erklärt. Abbildung 4.6: Architektur der Komponente: Position-Service-Engine Die Komponente Control steuert den Kontrollfluss der Position-Service-Engine. Sie bietet dem ortsbewussten Programm die Funktionen der oben beschriebenen Schnittstelle an. Angenommen, die ortsbewusste Applikation möchte die geometrische Position des Laptops bestimmen, auf dem sie installiert ist. Dann wird bei einer Positionsbestimmung zuerst versucht die Position von den lokal installierten Lokalisierungssysteme berechnen zu lassen. Dies ist die Aufgabe der Komponente LSDevice Coordinator. Sie verwaltet dazu eine Liste der installierten Lokalisierungssysteme und versucht festzustellen, welches dieser Systeme die gesuchte Information liefern kann, in diesem Beispiel die geometrische Position mit einer gewünschten Genauigkeit. Dazu werden alle aktiven und benutzbaren LSDevices abgefragt. Konnte die Information mit den gewünschten Parametern, d. h. in diesem Beispiel mit der ausreichenden Genauigkeit ermittelt werden, so kann die Komponente Control das Ergebnis schon jetzt zurückgeben. Wurde die gewünschte Genauigkeit von keiner Lokalisierungstechnik erreicht, versucht die Komponente Sensorfusion aus allen ermittelten Positionen, die zwischenzeitlich in einer Liste gespeichert werden, eine Positionsangabe zu berechnen, die mindestens die gewünschte Genauigkeit erreicht. Dabei werden auch Zweideutigkeiten in den Positionsinformationen mithilfe der 63 Zuverlässigkeit der LSDevices aufgelöst. In dem Fall, dass zwei Lokalisierungstechniken Positionen angeben, die weit auseinander liegen, hat die Aussage der Technik mehr Gewicht, die eine höhere Zuverlässigkeit bietet. Sind keine der LSDevices in der Lage, die gewünschte Position zu berechnen, wenn zum Beispiel ein GPS-Empfänger keinen Satelliten empfängt, und die anderen Geräte nur symbolische Informationen liefern, werden die Lokalisierungssysteme befragt, die auf den Servern der Infrastruktur installiert sind. Dazu muss eine Netzwerkverbindung zu dem Position-Web-Service hergestellt werden. Für die Netzwerkkommunikation ist die Komponente PWS Communicator verantwortlich. Sie ermittelt den zuständigen Position-Web-Service und fragt nach der gewünschten Information. Es ist aber möglich, dass dieser das Objekt auch nicht lokalisieren kann. Als letzte Möglichkeit bleibt in diesem Fall nur, die von den lokalen LSDevices oder durch den Position-Web-Service ermittelte symbolische Position in eine geometrische Position umzurechnen. Diese Konvertierungsfunktionen bietet auch der Position-Web-Service an, der dazu wieder vom PWS Communicator aufgerufen wird. Die zurückgegebene geometrische Position wird dann an die Applikation weitergeleitet. 4.3.3 Position-Service-Engine und LSDevice der Infrastruktur Die beiden Komponenten Position-Service-Engine und LSDevice werden bei den Infrastruktur-seitigen Lokalisierungssystemen ebenfalls benötigt. In der Infrastruktur entfällt allerdings bei der Position-Service-Engine der PWS Communicator, der im Fall der Objekt-seitigen Berechnung für die Netzwerkkommunikation mit dem Position-Web-Service zuständig ist. Wird der Position-Web-Service zum Beispiel aufgefordert, die Infrastruktur nach einer Position zu befragen, ruft dieser die entsprechenden Funktionen der Infrastructure-Position-Service-Engine auf und schickt die Ergebnisse als Antwort zurück. Die Infrastructure-Position-Service-Engine verwendet dabei die gleiche Sensorfusion-Einheit wie die Position-Service-Engine. 4.3.4 Die Position-Web-Service Komponente Position-Web-Service (PWS) ist dafür zuständig, Positionsinformationen innerhalb eines bestimmten geographischen Gebietes, seines Zuständigkeitsgebietes (engl. service area), zu verwalten. Außerdem ermöglicht sie den 64 Zugriff auf die Positionsinformationen der mobilen Objekte, die durch externe Positionierungssensoren in der Infrastruktur bestimmt werden und bietet Konvertierungsfunktionen zwischen symbolischen und geometrischen Positionsdaten an. Abbildung 4.7: Zuständigkeitsgebiete der PWS nach Domänen Durch die große Datenmenge und die Vielzahl der Zugriffe von Seiten der Clientkomponenten bietet sich eine Realisierung mithilfe einer verteilten Architektur an, die eine größere Skalierbarkeit und Performanz erreichen kann. Ein mobiles Objekt kommuniziert dabei mit dem PWS über eine drahtloses Kommunikationsmedium, wie zum Beispiel GSM oder GPRS (s. Kapitel 3.3) oder ein Wireless-LAN. Eine hierarchische Anordnung der PWS erlaubt eine hohe Skalierbarkeit. Der Positionsdienst ist damit nicht nur auf einzelne Gebäude beschränkt, sondern es ist eine Anwendbarkeit „im Großen“ möglich, denkbar wäre sogar ein weltweiter Einsatz. Dabei ergibt sich die hierarchische Anordnung aus dem Entwurf des symbolischen Positionierungsmodell und der hierarchisch definierten Domänenstruktur. Ein PWS kann in seinem Zuständigkeitsgebiet eine Domäne verwalten, wie zum Beispiel die Domäne „Gebäude32“. Er teilt dieses logische Gebiet in kleinere, sich nicht überlappende Untergebiete ein, die einer anderen Domäne entsprechen und von weiteren PWS verwaltet werden (s. Abbildung 4.7). 65 Ein PWS hat die Aufgabe festzustellen, ob sich ein lokalisierbares Objekt in seinem Zuständigkeitsgebiet aufhält. Diese Information kann in Form einer geometrischen oder einer symbolischen Positionsangabe erfolgen, wobei die betrachtete Domäne die des Zuständigkeitsgebiet ist. Folgendes Beispiel zeigt, wie der zuständige PWS gefunden wird: der für die „Etage3“ von „Gebäude32“ zuständige PWS, verwaltet die Zimmer dieser Etage (s. Abbildung 4.8). Die symbolische Position dieser Etage sieht wie folgt aus: „TU_Kaiserslautern.Building32.Floor3“, DOMAIN_FLOOR Abbildung 4.8: Beispiel eines Zuständigkeitsgebietes Die einzelnen Teilgebiete dieses Zuständigkeitsgebietes, wie zum Beispiel „Raum344“ gehören zur Domäne DOMAIN_ROOM. Der Position-Web-Service bietet die Funktion getSymbolicOrientation() zur Berechnung der symbolischen Orientierung eines anfragenden lokalisierbaren Objektes an. Diese Funktion erwartet als Eingabe die geometrische Position und Orientierung, die durch eine Lokalisierungstechnik festgestellt wird. Da die geometrische Orientierung ein Winkel ist (s. Kapitel 4.2.4), kann so mithilfe der geometrischen Position ein Richtungsvektor berechnet werden. Schneidet man die Halbgerade durch diesen 66 Richtungsvektor mit den Polygonen der logischen Gebiete, kann man bestimmen, welches logische Gebiet in der gedachten Verlängerung des Richtungsvektors das nächste ist. Die symbolische Position dieses Gebietes ist die symbolische Orientierung des anfragenden lokalisierbaren Objektes. In der Abbildung 4.8 ist ein lokalisierbares Objekt eingezeichnet, das sich im Flur eines Gebäudes befindet und in die Richtung des Raumes 348 zeigt. Um den PWS zu finden, der für dieses Zuständigkeitsgebiet verantwortlich ist, fragt ein Client zunächst den in der Hierarchie obersten PWS. Dieser gibt Auskunft darüber, welcher PWS für das gesuchte Teilgebiet zuständig ist, in dem sich das Objekt befindet. Als nächstes fragt der Client diesen PWS nach der symbolischen Position. So werden nach und nach die jeweiligen PWS ermittelt, bis derjenige gefunden ist, der das Zuständigkeitsgebiet mit der gesuchten Domäne verwaltet. Ist der gesuchte PWS gefunden, kann beispielsweise eine Konvertierung einer geometrischen in eine symbolische Position erfolgen. Soll nun das Zimmer ermittelt werden, muss derjenige PWS befragt werden, der für „Floor3” zuständig ist. Um auch logische Gebiete unterstützen zu können, die mobil sind, muss weitere Funktionalität bereitgestellt werden, damit ein Zuständigkeitsgebiet dynamisch angepasst werden kann. Ist zum Beispiel ein PWS für das logische Gebiet zuständig, das einem Meer entspricht, so verwaltet der PWS alle Schiffe als Untergebiete. Verlässt ein Schiff dieses Meer, muss es bei diesem PWS abgemeldet und bei dem PWS, der für das nächste logische Gebiet zuständig ist, angemeldet werden. Da die einzelnen PWS über eine Netzwerkkommunikation erreichbar sein sollen, werden sie als Web-Services realisiert. Andere Techniken wie DCOM, CORBA oder RMI setzen meist aufwändigere Protokolle zur Rechnerkommunikation ein. WebServices nutzen weitgehend bestehende Infrastruktur und eingeführte Protokolle: sie können auf Webservern ausgeführt werden und kommunizieren unbehindert von Firewalls über HTTP; bei Bedarf lassen sich gebräuchliche Verschlüsselungsmechanismen wie SSL anwenden. Ähnlich wie Webseiten arbeiten diese Mechanismen prinzipiell plattformübergreifend. Das bedeutet, dass ein auf einem Linux-Rechner unter Apache laufender Web-Service auch von Clients auf einem Windows-Rechner, einem Macintosh oder einem entsprechend ausgestatteten JavaHandy benutzt werden kann und die Client-Software keine Kenntnisse über die Serverplattform oder die verwendete Programmiersprache benötigt. Neben “Remote 67 Procedure Calls“, also Aufrufen entfernter Methoden und Funktionen, verarbeiten WebServices Dokumenten-basierte Nachrichten. Zusätzlich haben Web-Services die Vorteile, dass ein Anbieter sie in einem verteilten, globalen Verzeichnis gemäß einer Spezifikation namens UDDI (Universal Description, Discovery and Integration) von dem anbietenden Web-Service-Provider registrieren lassen kann, und dass Clients diese Dienste dort finden können [Bell02]. An dieser Stelle wird nicht detaillierter auf Web-Services eingegangen, in der Literatur finden sich detailliertere Beschreibungen [ChJe02]. 68 5 Realisierung Im Folgenden wird die Realisierung des im vorherigen Kapitel beschriebenen Positionsdienstes betrachtet. Begonnen wird mit den Vorgaben dieser Arbeit für die Realisierung des Systems. Dafür müssen einige weitere, auf technischen Grundlagen basierende Entwurfsentscheidungen getroffen werden, die zunächst beschrieben werden. Anschließend wird auf die eigentliche Implementierung des Prototypen eingegangen. 5.1 Vorgaben Der Positionsdienst wird in Java realisiert. Eine Beispiel-Applikation demonstriert, wie der Positionsdienst benutzt werden kann. Dazu wird der Client des Positionsdienstes auf einem Laptop installiert und ein GPS-Empfänger eingebunden, der zur Positionsbestimmung benutzt wird. Der Laptop ist in der Lage, über eine Wireless-LAN-Verbindung mit dem Web-Service zu kommunizieren. Der Position-Web-Service soll auf einem Server bereitgestellt und mit Daten über einen Bereich der Technischen Universität Kaiserslautern konfiguriert werden. Mit diesen Daten kann gezeigt werden, wie eine Umrechnung von geometrischen in symbolische Positionsangaben erfolgt. 5.2 Technische Grundlagen In diesem Abschnitt werden technische Gesichtspunkte vorgestellt, die wesentlich für die Realisierung des Positionsdienstes und die Beispiel-Anwendung sind. Diese umfassen die Beschreibung der verwendeten Entwicklungspakete für die Realisierung von Web-Services in Java und die Anbindung eines GPS-Empfängers über eine serielle Schnittstelle zur Demonstration des Positionsdienstes. 5.2.1 Holux GM-200 Smart GPS-Empfänger Der differentielle GPS-Empfänger Holux GM-200 des Unternehmens Holux Technology Inc. kann bis zu zwölf Satelliten gleichzeitig empfangen und erreicht mithilfe von in Echtzeit erhaltenen Korrekturdaten, d. h. mit Differential-GPS, eine Positionsgenauigkeit von unter fünf Metern. 69 Für die Positionsbestimmung können verschiedene geographische Koordinatensysteme verwendet werden. Ein Koordinatensystem kann dabei aus einer vordefinierten Liste oder durch die Angabe der entsprechenden geodätischen Daten durch den Benutzer festgelegt werden. Zusätzlich zur Positionsbestimmung ist die Messung der eigenen Geschwindigkeit und der Empfang genauer Zeitsignale möglich. Die Version GM-200 besitzt einen USB-Anschluss, aber die Kommunikation mit dem Empfänger erfolgt über eine simulierte serielle Schnittstelle gemäß dem Standart RS-232, wobei eine Reihe von unterschiedlichen Übertragungsraten unterstützt wird. Das unterstützte Schnittstellenprotokoll basiert auf der, vom National Marine Electronics Association definierten, NMEA 0183 ASCII Schnittstellenspezifikation [SiRF02]. 5.2.2 Serielle Schnittstelle Die Kommunikation mit dem Holux GM-200 Smart GPS-Empfänger erfolgt über eine simulierte serielle Schnittstelle. Dies erfordert also eine Zugriffsmöglichkeit auf die serielle Schnittstelle zur Realisierung der Anbindung des GPS-Empfängers in Java. Ein direkter Zugriff auf die Gerätetreiber hätte den Nachteil, dass die Plattformunabhängigkeit verloren ginge. Eine bessere Lösung besteht deshalb in der Verwendung der „Java Communication API“ von Sun Microsystems Inc.. Die Programmierschnittstelle „Java Communication API“ (auch unter dem Namen javax.comm bekannt) erlaubt die Entwicklung plattformunabhängiger Kommunikationsanwendungen und bietet den Zugriff auf serielle (RS 232) und auf parallele (IEEE 1284) Schnittstellen. Sie steht in zwei Implementierungen zur Verfügung, eine für die Plattform Solaris und eine für Win32. Um den Vorteil der Plattformunabhängigkeit nicht einzubüßen, wird der für die Anbindung des Holux GM-200 Smart GPS-Empfängers erforderliche Zugriff auf die serielle Schnittstelle über die Programmierschnittstelle des „Java Communication APIs“ realisiert. 5.2.3 Java Web-Service Development Pack Das Java Web-Service Development Pack (JWSDP) von Sun Microsystems Inc. bietet die Möglichkeit für Java-basierte Entwicklung und den Einsatz von Web-Services und 70 XML-Anwendungen. Das JWSDP stellt eine Sammlung von APIs und Tools bereit, die für die Entwicklung von Web-Services benötigt werden. In einem typischen Web-Service-Szenario schickt eine Applikation eine Anfrage an einen Web-Service, der über eine bestimmte URL zu erreichen ist, und benutzt dafür das SOAP-Protokoll (Simple Object Access Protocol). Die SOAP-Spezifikation definiert ein Framework für den Austausch von XML-Dokumenten. Der Web-Service empfängt die Anfrage, führt die Berechnung aus und schickt die Ergebnisse zurück. Die Java API für XML-basiertes RPC (engl. remote procedure call), das sogenannte JAX-RPC, ist die Programmierschnittstelle für die Entwicklung und Benutzung von Web-Services. Ein auf RPC basierender Web-Service ist eine Sammlung von Funktionen, die ein Remote-Client über Rechnernetzwerke aufrufen kann. Ein typisches Beispiel hierfür ist ein Lagerbestandsdienst, der eine SOAP-Anfrage nach einem Preis eines Produktes, das sich im Lager befindet, beantworten kann. Die Schnittstelle des Web-Services, die Ein- und Ausgabeparameter und die zu verwendenden Protokolle werden in der „Web-Services Description Language“ (WSDL) beschrieben. Der WSDL-Standard definiert eine einheitliche Sprache zur Beschreibung von WebServices und basiert auf auf XML, sodass die Notation des WSDL-Standards in XML ist [ChJe02]. Für die Realisierung des PWS wurde das Java Web-Service Development Pack in der Version 1.3 verwendet. 5.3 Prototypische Implementierung In diesem Abschnitt soll gezeigt werden, wie die im Entwurf beschriebenen Komponenten in Java realisiert werden. Die Client-Komponente Position-Service-Engine findet sich dabei in dem Java-Package de.icsy.da.fleuren.ps wieder. Dieses enthält die Klassen, die zur Realisierung des Clients benötigt werden und die autonom erzeugten Client-Stubs, die der Kommunikation mit einem WebService dienen. Das Package de.icsy.da.fleuren.pws beinhaltet die Server-Komponente Position-Web-Service. Hier befinden sich die Klassen, die die Verwaltung der Server-Daten übernehmen und die Funktionalität des Zuständigkeitsgebietes realisieren. Zusätzlich enthält das Package de.icsy.da.fleuren.shared Klassen, die an verschiedenen Stellen von der Client- und der Server-Komponente benutzt werden. Dazu zählen 71 Klassen, die die verschiedenen Darstellungen von Positionsangaben kapseln und eine Bibliothek, die nützliche mathematische Funktionen zur Verfügung stellt. 5.3.1 Die Hilfsklassen In dem Java-Package shared befinden sich die Hilfsklassen. Die Klasse GeoMath ist eine Mathematik-Bibliothek, deren Funktionsumfang alle Methoden beinhaltet, die die im Positionsdienst benötigten Berechnungen durchführen können. Dazu zählen Abstands- und Flächenberechnungen, um die Überlappung ausrechnen zu können und Funktionen, die die Projektion der Koordinaten nach WGS84 auf die als flach modellierte Erde durchführen. Ferner wird in diesem Package die Klasse Sensorfusion definiert, die benutzt wird, um die Messungen verschiedener Sensoren für die Berechnung einer genaueren Positionsangabe zu verwenden. In der derzeitigen Implementierung ist eine einfache Methode vorhanden, um Messungen verschiedener Sensoren zu verbessern. Die Komponente Sensorfusion wird sowohl in der Position-Service-Engine als auch in dem Position-Web-Service verwendet und kann leicht durch andere Versionen ersetzt werden, die neue Sensor-Fusion-Algorithmen einsetzen. Abbildung 5.1: Sensorfusion 72 In der derzeitigen Implementierung wird bei zwei unterschiedlichen geometrischen Positionsangaben die Lage der beiden Aufenthaltskreise zueinander festgestellt. Schneiden sich die beiden Kreise, so befindet sich die tatsächliche Position innerhalb der Schnittmenge, daher wird als genauere Position ein Kreis um diese Schnittfläche berechnet (s. Abbildung 5.1 a)). Schneiden sich die Kreise nicht, so wird anhand der Zuverlässigkeit der Lokalisierungssysteme entschieden, welche Positionsangabe korrekt ist. In der Abbildung 5.1 b) ist die Angabe der zweiten Lokalisierungstechnik zum Beispiel zuverlässiger, da eine Angabe zu 99 % korrekt ist. UNKNOWN nicht unterstützte Eigenschaften erhalten diese Konstante CATEGORY_USER CATEGORY_RESSOURCE legt die Kategorie eines lokalisierbaren Objektes fest MOBILITY_MOBILE MOBILITY_STATIC beschreibt die Mobilität SCALE_INDOOR SCALE_OUTDOOR charakterisiert die Lokalisierungssysteme nach dem Größenbereich DOMAIN_CONTINENT DOMAIN_COUNTRY DOMAIN_STATE DOMAIN_TERRITORY DOMAIN_BUILDING DOMAIN_FLOOR DOMAIN_ROOM legt eine Hierarchie der Domänen fest POSITIONTYPE_GEOMETRIC_ABSOLUTE POSITIONTYPE_GEOMETRIC_RELATIVE POSITIONTYPE_SYMBOLIC_ABSOLUTE POSITIONTYPE_SYMBOLIC_RELATIVE beschreibt die Art der Positionsinformationen ORIENTATIONTYPE_GEOMETRIC ORIENTATIONTYPE_SYMBOLIC beschreibt die Art der Orientierungsinformationen COMPUTATION_OBJECT COMPUTATION_INFRASTRUCTURE beschreibt, ob die Berechnung bei der Infrastruktur oder beim lokalisierbaren Objekt liegt Tabelle 11: Konstanten des Positionsdienstes Zu weiteren Hilfsklassen gehören die im Subpackage descriptor befindlichen Deskriptoren. Diese beschreiben, wie im Entwurf definiert, die logischen Gebiete (LogicalAreaDescriptor), die lokalisierbaren Objekte (LocatableObjectDescriptor), alle Daten über einen Position-Web-Service (PWSDescriptor) und die Fähigkeiten einer Lokalisierungstechnik (LSDeviceDescriptor), d. h. eines LSDevices. Die Beschreibungen erfolgen über Konstanten, die in der Klasse Constants definiert werden 73 (s. Tabelle 11). Zum Beispiel kann in einem LSDeviceDescriptor über die Konstante SCALE_OUTDOOR beschrieben werden, dass es sich um ein Outdoor- Lokalisierungssystem handelt. In dem Subpackage position werden Klassen definiert, die Positions- oder Orientierungsinformationen speichern können. Dazu zählen die Klassen SymbolicPosition und GeometricPosition, die an vielen Stellen im Positionsdienst benutzt werden. Eine symbolische Position besteht, wie im Entwurf angegeben, aus einer Zeichenkette und einer Konstanten, die die Domäne festlegt. Die geometrische Position besteht aus einer geographischen Positionsangabe durch ein GeographicPointObjekt und der Genauigkeitsangabe in Metern. Bei den beiden Positionsklassen SymbolicPosition und GeometricPosition besteht die Möglichkeit, über die Methode isValid() festzustellen, ob die Positionsangabe gültig ist. Diese Angabe wird dazu genutzt, in einer Funktion eine ungültige Positionsangabe zurückzugeben, wenn zum Beispiel keine Position ausgerechnet werden kann. Eine andere Möglichkeit wäre die Rückgabe von NULL-Referenzen, was aber leicht zu NULL-Pointer-Exceptions führen kann, die die Robustheit der Software verringern. 5.3.2 Die Die Position Engine Klasse PSEngine im Package de.icsy.da.fleuren.ps enthält die Programmierschnittstelle der Position-Service-Engine. engine= new PSEngine( locatableObjectDescriptor, pwsDescriptor ); gps = new GPSDevice ( gpsDescriptor ); gps.configure( gpsProperties ); gps.initialize(); gps.activate(); engine.installDevice( gps ); Abbildung 5.2: Konfiguration der PSEngine Um eine ortbewusste Applikation zu entwickeln, muss diese ein Objekt der Klasse PSEngine instanziieren und benötigt dafür eine Beschreibung des lokalisierbaren Objektes durch einen LocatableObjectDescriptor, der bei Infrastruktur-seitiger Berechnung zur Identifikation gebraucht wird. Außerdem ist für den Zugriff auf den Position-Web-Service eine Beschreibung des globalen PWS durch einen PWSDescriptor, erforderlich. Diese Deskriptoren werden beim Aufruf des Konstruktors übergeben. 74 Danach muss die ortsbewusste Applikation für alle installierten Lokalisierungssysteme ein Objekt generieren, das die Schnittstelle LSDevice implementiert. Über dieses kann die Lokalisierungstechnik benutzt werden. Dazu muss sie konfiguriert, initialisiert und im Anschluss der PSEngine hinzugefügt werden (s. Abbildung 5.2). Nun können die Funktionen zur Positions- und Orientierungsermittlung, die im Entwurf spezifiziert wurden, genutzt werden. 5.3.2.1 Die Schnittstelle LSDevice Die Schnittstelle LSDevice definiert alle Funktionen, die im Modell spezifiziert wurden (s. Kapitel 4.3.1.1) und die die Klasse PSEngine benutzen, um auf die Hardware einer Lokalisierungstechnik zugreifen zu können. Für jede Lokalisierungstechnologie, die vom Positionsdienst verwendet werden soll, muss eine Klasse geschrieben werden, die diese Schnittstelle implementiert. Die Funktionsweisen der Klassen können dabei intern völlig unterschiedlich konzipiert sein, und sie müssen einen Zugriff auf die Hardware-Treiber über eine Hardware-Abstraction-Layer realisieren. Auch die Parameter mit denen dieses Lokalisierungssystem konfiguriert wird, können verschieden sein. Daher erwartet die Methode configure() als Eingabeparameter ein Objekt der Klasse java.util.Properties, mit dem eine von der jeweiligen Implementierung der LSDevice-Schnittstelle abhängige Parameterübergabe möglich ist, da spezifiziert werden kann, welche Parameter ein Properity-Objekt enthält. Kann ein Lokalisierungssystem eine der möglichen Positionsinformationen nicht liefern, zum Beispiel wenn keine Angaben der symbolischen Position möglich sind, so muss die Funktion getSymbolicPosition() derart implementiert sein, dass sie eine symbolische Position zurückliefert, die ungültig (engl. invalid) ist. Die Funktion getDescriptor() muss einen LSDeviceDescriptor zurückgeben, der vollständige Informationen enthält. Unvollständige Deskriptoren können zu Fehlern führen. Sind zum Beispiel die GUIDs in den Diskriptoren nicht ihrer Definition folgend alle eindeutig unterscheidbar, können auch die Lokalisierungssysteme nicht unterschieden werden. Die Klassen GPSSimulator und GPS implementieren die Schnittstelle LSDevice. Die erste bietet die Möglichkeit ein Lokalisierungssystem zu simulieren. Dazu können der Start- und der Endpunkt eines Weges und eine Schrittweite angegeben werden, sodass der GPSSimulator gibt bei Aufruf der Methode getGeometricPosition() Punkte auf 75 diesem Weg angibt. Die zweite realisiert den Zugriff auf den Holux GPS-Empfänger GM-200. Dazu wird über die serielle Schnittstelle mithilfe des NMEA-Protokoll der Empfänger nach der aktuellen Position abgefragt. 5.3.2.2 Die Klasse PSEngine Die PSEngine Klasse realisiert die Komponente Control im Modell der Position-Service-Engine (s. Kapitel 4.3.2) und stellt die Schnittstelle zur ortsbewussten Applikation bereit. Sie enthält eine Liste der installierten Lokalisierungssysteme, d. h. der Klassen, die die Schnittstelle LSDevice implementieren. Auf diese Liste greift ein LSDeviceCoordinator-Objekt zu, das die im Modell gleich benannte Komponente realisiert, die die lokal installierten Lokalisierungssysteme zur Positionsbestimmung verwaltet. Ein weiteres Attribut der Klasse PSEngine ist der PWSCommunicator, der die Kommunikation mit dem Position-Web-Service übernimmt. Wird die Funktion getGeometricPosition() der PSEngine aufgerufen (s. Abbildung 5.3), wird zunächst durch den LSDeviceCoordinator eine von verschiedenen lokalen Geräten berechnete Liste mit Positionsangaben erstellt. Diese Funktion erwartet als Parameter ein Objekt der Klasse UserKnowledge. Dieses Objekt kann Wissen speichern, welches die Berechnungen vereinfachen kann. Dazu zählen sowohl die Domäne und der Größenbereich als auch eine symbolische oder geometrische Position. Hierzu kann der Benutzer auch angeben, welcher PWS angesprochen werden soll, sodass eine Suche nach dem zuständigen PWS nicht bei dem globalen PWS starten muss, sondern tiefer in der Hierarchie beginnen kann. Dies spart einerseits Zeit und verringert andererseits den Netzwerkverkehr. 76 Abbildung 5.3: Ablauf einer Abfrage nach der geometrischen Position Falls eine Positionsangabe nur relativ berechnet werden konnte, kann der Referenzpunkt, auf den sich die Angabe bezieht, durch die Klasse UserKnowledge übergeben werden, und so eine Umrechnung in absolute Positionen ermöglichen. Die Methode isDeviceUsable() der Klasse LSCoordinator überprüft, welche Lokalisierungssysteme zur Positionsbestimmung nutzbar sind. Dazu wird bei jedem LSDevice überprüft, ob das Gerät aktiviert ist, ob es die Art der gesuchten Information berechnen kann und ob eine Positionsbestimmung in dem Moment technisch möglich ist. Jede berechnete Position wird in einer Liste gespeichert. Die Liste der 77 Positionsangaben wird der Sensorfusion-Funktion getGeometricPosition() übergeben, die aus diesen Positionen eine möglichst genaue Positionsangabe errechnet. Ist diese Liste leer, d. h. es ist keine lokale Positionsbestimmung möglich, wird versucht, eine symbolische Position zu ermitteln und diese dann durch den Position-Web-Service konvertieren zu lassen. Die Aufgabe, den zuständigen PWS zu ermitteln und dessen Remote-Procedures aufzurufen, hat die Klasse PWSCommunicator. Wird hier eine symbolische Position ermittelt, die vom Position-Web-Service in eine geometrische Position umgerechnet werden soll, so wird dafür die Methode getGeometricPosition() des PWSCommunicator aufgerufen. Diese Methode erhält als Parameter die symbolische Position und das Objekt der Klasse UserKnowledge. Als erstes muss die Methode herausfinden, welcher PWS für diese symbolische Position zuständig ist. Dabei kann die Suche bei dem vom Benutzer beschriebenen, dem globalen oder dem zuletzt benutzten PWS beginnen. Mit diesem wird dann eine Netzwerkverbindung aufgebaut und mit der Remote-Procedure getPWS() abgefragt, ob der PWS für diese Position zuständig ist. Gibt der Position-Web-Service sich selbst als Referenz zurück, so ist er der gesuchte PWS. Ansonsten wird eine Verbindung zu dem PWS aufgebaut, dessen Beschreibung übergeben wurde. Ist der zuständige PWS gefunden kann die symbolische getGeometricPosition() konvertiert Position werden. mit Der der Remote-Procedure Ablauf der anderen Konvertierungsfunktionen und der Orientierungsabfragen erfolgt analog. 5.3.3 Der Position-Web-Service Um einen Web-Service mit JAX-RPC zu implementieren, müssen zwei Dateien erstellt werden. Die erste enthält eine Definition der Web-Service-Schnittstelle, die die Remote-Procedures beschreibt, und die zweite Datei enthält die Implementierung dieser Prozeduren. Diese beiden Dateien befinden sich in dem Package de.icsy.da.fleuren.pws.server; die Schnittstelle heißt PositionWebServiceIF und die Implementierung PositionWebServiceImpl. Die Schnittstelle muss von java.rmi.Remote abgeleitet werden und die Web-Service-Funktionen müssen die Exception RemoteException werfen können. Die Schnittstelle definiert die Funktion getPWS(), die als Eingabe einen symbolischen Bezeichner eines der Untergebiete des Zuständigkeitsgebietes erhält und dann den PWSDescriptor desjenigen PWS zurückgibt, der für dieses Untergebiet zuständig ist. 78 Dazu muss die symbolische Position bekannt sein. Ist dies nicht der Fall, und ein Client kennt nur die geometrische Position, muss diese vorher in die symbolische Position umgerechnet werden. Dazu werden beim Web-Service Konvertierungsfunktionen angeboten, die Umrechnungen von geometrischen in symbolische Positionsangaben und umgekehrt durchführen. Die Implementierungen dieser Funktionen sind alle nach dem gleichen Funktionsprinzip aufgebaut. Zunächst muss der Zustand des Web-Services geladen werden. Dazu wird das Zuständigkeitsgebiet geladen, welches durch die Klasse ServiceArea realisiert wird und die eigentliche Funktionalität des PWS enthält. Das Laden des Zuständigkeitsgebietes geschieht dabei mithilfe der Klasse ServiceAreaLoader, die eine Klassenmethode namens loadServiceArea() besitzt. Bei der derzeitigen Implementierung lädt diese Methode die Konfiguration aus einer manuell zu erstellenden Textdatei; der Aufbau dieser Datei kann in Anhang B eingesehen werden. Die Klasse ServiceAreaLoader könnte aber bei Bedarf auch durch eine Version ersetzt werden, die ihre Daten zum Beispiel aus einer Datenbank oder einem Verzeichnisdienst bezieht. Nach dem Laden der Instanz der ServiceArea-Klasse kann die entsprechende Konvertierungsfunktion oder die Funktion getPWS() aufgerufen werden. Im Anschluss daran kann der Zustand des Web-Service mit der Funktion saveServiceArea() der Klasse ServiceAreaLoader abgespeichert werden. In der derzeitigen Implementierung bleibt der Zustand des Zuständigkeitsgebiet immer gleich und es erfolgt keine Speicherung. Das liegt daran, dass bei der Implementierung keine mobilen logischen Gebiete in Betracht gezogen werden. In dem Fall, dass mobile logische Gebiete unterstützt werden sollen, würde es aber notwendig werden, die Konfiguration der mobilen Gebiete speichern zu können. Weitere Funktionen, die in PositionWebServiceIF definiert werden, dienen der Abfrage der Infrastruktur nach Positions- oder Orientierungsangaben. Auch hier muss bei der Implementierung zunächst der Zustand des Position-Web-Service wiederhergestellt werden. Daher wird eine Instanz der Klasse LSDeviceCoordinator mithilfe der LSDeviceLoaderKlasse geladen. Diese hat wie bei der Client-Version die Aufgabe, die Abfrage der installierten Lokalisierungssysteme zu koordinieren und verwaltet dazu eine Liste der Objekte, die die Schnittstelle LSDevice implementieren (s. Kapitel 5.3.2.1). Diese Objekte ermöglichen den Zugriff auf die Hardware-Treiber, der in der Infrastruktur 79 installierten Lokalisierungssysteme. Diese Objekte können in einem eigenen Prozess weiterlaufen, wenn sie z. B. Ereignis-gesteuerte Positionsberechnungen durchführen. 5.3.3.1 Die Klasse ServiceArea Die Komponente PWS verwaltet ein Zuständigkeitsgebiet. Dieses wird durch die Klasse ServiceArea realisiert. Ein Zuständigkeitsgebiet besteht aus einem logischen Gebiet, das in mehrere Untergebiete aufgeteilt ist. Ein logisches Gebiet wird durch ein Objekt der Klasse LogicalArea repräsentiert. Daher enthält die Klasse ServiceArea sowohl eine Liste von LogicalArea-Objekten, die den Untergebieten entsprechen als auch ein LogicalArea-Objekt, das eine Beschreibung des gesamten Zuständigkeitsgebietes beinhaltet. Zum Beispiel könnte das Zuständigkeitsgebiet eine Etage eines Gebäude sein. Dann ist ein logisches Gebiet die gesamte Etage mit der Domäne DOMAIN_FLOOR. Die einzelnen Zimmer auf der Etage (einschließlich des Flures) sind die anderen logischen Gebiete, und diese gehören zur Domäne DOMAIN_ROOM (s. Abbildung 4.8). Zusätzlich verwaltet die Klasse die PWSDescriptoren der PWS, die für die jeweiligen Untergebiete zuständig sind. Die Hauptfunktionen der Klasse ServiceArea sind die Konvertierungen zwischen geometrischen und symbolischen Positionsinformationen. Die Funktion getGeometricPosition() erwartet als Eingabe eine symbolische Position und überprüft dann alle Untergebiete daraufhin, ob sie diese Position verwalten. Verwaltet ein PWS zum Beispiel eine Gebäudeetage, dann würde nach einem bestimmten Zimmer gesucht. Dazu müssen alle LogicalArea-Objekte nach ihrer symbolischen Position befragt werden. Nach dem Auffinden dieses Zimmers wird die geometrische Position des Zimmers zurückgegeben. Die geometrische Position wird beim Instanziieren der ServiceArea-Klasse spezifiziert. Analog dazu kann die Funktion getSymbolicPosition() die Umrechnung von geometrischen Angaben in symbolische vornehmen. Zu diesem Zweck wird zuerst mittels der Funktion rightFloor() überprüft, ob sich das Objekt in der richtigen Etage befindet. Ist dies der Fall, wird von jedem LogicalArea-Objekt die Überlappung der angegebenen geometrischen Position mit dem Untergebiet berechnet. Da die Berechnung der Überlappung rechenintensiv ist, wird zunächst in einem schnellen Pre-Test mithilfe der Funktion mightContain() der Klasse LogicalArea überprüft, ob eine Überlappung möglich ist, sodass im positiven Fall die Überlappung schließlich ausgerechnet wird. Das ServiceArea überprüft dann, ob die für 80 das Zuständigkeitsgebiet verlangte Überlappung erreicht wird, d. h. ob die angegebene geometrische Position innerhalb dieses logischen Gebietes liegt. Die symbolische Position des so identifizierten logischen Gebietes ist die gesuchte. Die verlangte Überlappung sollte möglichst mehr als fünfzig Prozent betragen, sodass nur genau ein Untergebiet in Frage kommen kann. Andernfalls wäre es zum Beispiel möglich, dass sich ein Objekt genau zwischen zwei Zimmern befindet und bei beiden eine Überlappung von 50% ausgerechnet wird. In diesem Fall würde der Positionsdienst nur die symbolische Position der nächsthöheren Domäne, d. h. hier der Etage, zurückgeben. Eine weitere Funktion der Klasse ServiceArea namens getPWS() ermittelt den für eine bestimmte symbolische Position zuständigen PWS. Dazu muss nur das entsprechende logische Gebiet gesucht und der zuständige PWS zurückgegeben werden. 5.3.3.2 Die Klasse LogicalArea Die Klasse LogicalArea verwaltet alle Daten eines logischen Gebietes. Da ein logisches Gebiet aus mehreren konvexen Polygonen bestehen kann, enthält diese Klasse eine Liste der Polygone, dessen Punkte gegen den Uhrzeigersinn angegeben werden müssen. Die Punkte eines Polygons werden dabei in absoluten Koordinaten, d. h. nach dem WGS84 (s. Kapitel 2.1.1.2), angegeben. Die Hauptaufgabe dieser Klasse ist, die Überlappung eines mobilen Objektes mit dem verwalteten logischen Gebiet festzustellen. Dazu wird zunächst mit der Funktion rightFloor() überprüft, ob die Höhenangabe zwischen der Boden- und der Deckenhöhe des logischen Gebietes liegt. Dann kann durch den Aufruf der Funktion mightContain() überprüft werden, ob eine Überlappung ausgeschlossen werden kann. Dazu wird in dieser Funktion mithilfe des Rechtecks, das das logische Gebiet umgibt, und einem Rechteck, das den Aufenthaltskreis umgibt, festgestellt, welche Lage die beiden Rechtecke zueinander haben. Wenn die beiden Rechtecke keine Schnittfläche besitzen, kann auch keine Überlappung zwischen dem Polygon und dem Aufenthaltskreis vorliegen. Schneiden sich die beiden Rechtecke, so ist diese Tatsache nur ein Hinweis auf eine mögliche Überlappung, da es zum Beispiel auch sein kann, dass sich nur das Rechteck, das den Kreis umschließt, nicht aber der Kreis selbst, mit dem Polygon schneidet. 81 Daher muss nun mit der Funktion getOverlap() die tatsächliche Überlappung ausgerechnet werden. Dazu werden Überlappungen des Aufenthaltskreises mit allen Polygonen überprüft, die das logische Gebiet definieren, und diese werden zur Gesamtüberlappung addiert. Da die Punkte des Polygons in Koordinaten nach WGS84 vorliegen, werden diese als erstes auf die flache Erde projiziert, wobei der Mittelpunkt des Aufenthaltskreises, d. h. die Position des Objektes, der Ursprung des approximierten Koordinatensystems ist. Mit den so berechneten Punkten wird ein Objekt der Klasse Polygon instanziiert, das die Überlappungsberechnung durchführt. Dazu wird jede Kante des Polygons nacheinander mit dem Kreis geschnitten (s. Abbildung 5.4). Abbildung 5.4: Berechnung der Überlappung Haben Kreis und Kante einen Schnittpunkt oder liegt einer der Eckpunkte der Kante innerhalb des Kreises, so werden diese in eine Liste aufgenommen. Nachdem alle Kanten überprüft wurden, enthält diese Liste einerseits alle Schnittpunkte von Kreis und Polygon und andererseits die Eckpunkte, die innerhalb des Kreises liegen. Die Punkte aus dieser Liste bilden auch ein Polygon, dessen Fläche berechnet wird. Zu dieser Fläche müssen noch die Kreissegmente hinzuaddiert werden, die auch zur Schnittfläche gehören. Danach kann ausgerechnet werden wie viel Prozent die Schnittfläche vom gesamten Kreis ausmacht. 5.3.4 Client-Applikation In dieser Arbeit wird eine ortsbewusste Applikation implementiert, die den Positionsdienst mithilfe der Position-Service-Engine benutzt. Diese einfache Applikation dient der Demonstration der möglichen Funktionalität und deren Einsatz. Dabei wird auf einem Server-Computer der Position-Web-Service bereitgestellt, der mit Daten über eine Etage eines Gebäudes der Technischen Universität Kaiserslautern 82 konfiguriert ist. Die Applikation zeigt, wie geometrische Positionsangaben des realen oder simulierten GPS-Empfängers in symbolische umgerechnet werden können. Dabei wird der GPS-Empfänger so benutzt, dass mindestens angezeigt werden kann, in welchem Zimmer sich der Empfänger befindet. 83 6 Zusammenfassung und Ausblick Ein Positionsdienst bildet die Grundlage für die Nutzung ortsabhängiger Dienste. Dieser Positionsdienst sollte möglichst innerhalb und außerhalb von Gebäuden funktionieren und daher ein dynamisches Einbinden verschiedener Lokalisierungssysteme unterstützen. In der aktuellen Forschung werden viele Ansätze verfolgt und Technologien verwendet, um Positionen von Objekten zu ermitteln. Um mehrere Lokalisierungssysteme vergleichen zu können, wurde daher am Anfang dieser Arbeit ein Überblick über verschiedene Verfahrensweisen zur Positionsbestimmung gegeben. Dabei wurden die Lokalisierungstechniken Triangulation, Analyse des Ortes und Näherungsmessung beschrieben. Die heutigen Lokalisierungssysteme liefern verschiedene Formen von Positionsangaben. Um die Verwendung beliebiger Lokalisierungssysteme sicher zu stellen, wurden verschiedene Positionierungsmodelle betrachtet. Fazit dieser Betrachtung ist, dass ein Positionsdienst sowohl geometrische (z. B. geographische Koordinaten), als auch symbolische, d. h. auf von Personen lesbaren abstrakten Bezeichnern basierte, Positionsangaben unterstützen sollte. Um ein neues Modell für einen Positionsdienst zu entwerfen, wurde zunächst ein Vergleich von unterschiedlichen realen Lokalisierungssystemen durchgeführt, die repräsentativ für eine benutzte Technologie sind. Die Lokalisierungssysteme wurden in drei Hauptkategorien eingeteilt, die satellitengestützten, die zellfunkgestützten und die Indoor-Lokalisierungssysteme. Für den Vergleich wurden Kriterien aufgestellt, aus denen das Modell des Positionsdienstes entwickelt werden konnte. Durch den Vergleich konnten die Hauptkomponenten identifiziert werden, aus denen ein Positionsdienst bestehen muss, um alle Lokalisierungssysteme zu unterstützen. Manche Lokalisierungssysteme benutzen ein Empfangsgerät, das auf dem mobilen Objekt zur Positionsbestimmung verwendet wird, d. h. die Berechnung findet auf dem mobilen Rechengerät selbst statt. Andere Lokalisierungssysteme brauchen eine Infrastruktur, zum Beispiel in Form eines Sensorennetzwerkes, die Signale von den mobilen Objekten empfängt und so die Position berechnet. Diese Position kann dann über eine Netzwerkkomponente abgefragt werden. Aus diesem Grund wurde der Positionsdienst mithilfe einer Client-Server-Architektur konzipiert. Die 85 Server-Komponente wurde auf Basis von Web-Services entwickelt, da so ein standardisierter Zugriff auf die Funktionen der Server-Komponente ermöglicht wird. Im Anschluss an die Modellierung wurde der Positionsdienst in Java realisiert. Eine Beispiel-Anwendung demonstriert mit einem realen GPS-Empfänger, wie der Positionsdienst arbeitet. Die derzeitige Realisierung hat nur einen prototypische Charakter. Die Konfiguration der Zuständigkeitsgebiete der einzelnen Position-Web-Services erfolgt im Moment statisch, d. h. durch Einlesen einer manuell erstellten Textdatei. Hier wäre es wünschenswert, eine Möglichkeit zu entwickeln, diese Daten komfortabeler einzustellen. Es wäre auch eine Anbindung des Systems an ein sogenanntes Geographisches Informationssystem (GIS) denkbar. Diese Informationssysteme verwalten Daten über Orte der Erde und sind die elektronische Form von Landkarten. Eine zusätzliche Verbesserung wäre die Erweiterung der ortsbewussten BeispielAnwendung, sodass genaue Karten dargestellt werden können. Außerdem sollte neben dem benutzen GPS-Empfänger eine Indoor-Technologie installiert werden. Hier wären zum Beispiel Techniken interessant, die Wireless-LAN zur Positionsermittlung benutzten, wie RADAR (s. Kapitel 3.4.4), weil in den meisten Fällen die Access Points schon vorliegen und keine weitere Infrastruktur benötigt wird. 86 7 Anhang A Zwei Schnittstellen sollen hier näher betrachtet werden. Die erste ist die Schnittstelle, über die ein Zugriff auf die Hardware ermöglicht wird und die zweite ist die Schnittstelle zum Web-Service. 7.1 Die Schnittstelle zur Hardware Die Schnittstelle LSDevice: //-------------------------------------------------------------/** * Sets the device specific properties. <BR> * This could include setting the LocatableObjectDescriptor if * recognition is necessary or the reference position that is * needed for a convertion of relative to absolute positions. * * @param properties */ public void configure( Properties properties ); //-------------------------------------------------------------------/** * Initialize the hardware. */ public void initialize(); //-------------------------------------------------------------------/** * The descriptor defines which kind of position information the device * can deliver. * @see positionService.descriptor.LSDeviceDescriptor * * @return the descriptor */ public LSDeviceDescriptor getDescriptor(); //-------------------------------------------------------------------/** * If the Device can deliver it return geometric positions. Return invalid * geometric position if it cannot. * * @return a geometric position */ public GeometricPosition getGeometricPosition(); //-------------------------------------------------------------------/** * If the Device can deliver it return symbolic positions. Return invalid * symbolic position if it cannot. * * @return a symbolic position */ public SymbolicPosition getSymbolicPosition(); //------------------------------------------------------------------/** * If the Device can deliver it return the geometric orientation. * Return Constants.UNKNOWN if it cannot. * * @return orientation angle in degree 87 */ public double getGeometricOrientation(); //-------------------------------------------------------------------/** * If the Device can deliver it return symbolic orientation. Return * invalid symbolic position if it cannot. * * @return symbolic orientation */ public SymbolicPosition getSymbolicOrientation(); //-------------------------------------------------------------------/** * Test if the hardware can deliver positions. * * @return true if location sensing is available */ public boolean isLocationSensingAvailable(); //-------------------------------------------------------------------/** * Activate this device. */ public void activate(); //-------------------------------------------------------------------------/** * Return if the device is active. * * @return true if the device is active */ public boolean isActive(); 7.2 Die Schnittstelle des Web-Services Die Schnittstelle PositionWebServiceIF: //-------------------------------------------------------------------------/** * Asks the PWS which PWS is responsible for the symbolic position sp. * Returns this PWS if no other PWS is responsible. * * @param ws_sp * @return the PWS descriptor * @throws RemoteException */ public WS_PWSDescriptor getPWS( WS_SymbolicPosition ws_sp ) throws RemoteException; //-------------------------------------------------------------------------/** * Asks the infrastructure to determine the geometric position. * The infrastructure will need to identify the locatable object. * * @param lo * @return the geometric position * @throws RemoteException */ public WS_GeometricPosition getGeometricPosition(WS_LocatableObjectDescriptor lo ) throws RemoteException; //-------------------------------------------------------------------------/** * Asks the infrastructure to determine the symbolic position. * The infrastructure will need to identify the locatable object. 88 * * @param lo * @return the symbolic position * @throws RemoteException */ public WS_SymbolicPosition getSymbolicPosition(WS_LocatableObjectDescriptor lo ) throws RemoteException; //-------------------------------------------------------------------------/** * Convert the symbolic position to the geometric position. * * @param sp * @return the geometric position * @throws RemoteException */ public WS_GeometricPosition getGeometricPosition( WS_SymbolicPosition sp ) throws RemoteException; //-------------------------------------------------------------------------/** * Convert the geometric position to the symbolic position. * * @param gp * @return the symbolic position * @throws RemoteException */ public WS_SymbolicPosition getSymbolicPosition( WS_GeometricPosition gp )throws RemoteException; //-------------------------------------------------------------------------/** * Convert the orientation to symbolic orientation. * * @param gp the geographic position * @param orientation angle in degree * @return the symbolic orientation * @throws RemoteException public WS_SymbolicPosition getSymbolicOrientation( WS_GeometricPosition gp, double orientation )throws RemoteException; 89 8 Anhang B Hier wird das Beispiel einer Konfigurationsdatei gezeigt, die von der Klasse ServiceAreaLoader geladen wird und dazu dient, ein ServiceArea-Objekt zu konfigurieren. Die Daten dieser Datei definieren ein Zuständigkeitsgebiet, das aus einem logischen Untergebiet besteht. // A SERVICE AREA- File // This is an example for an service area file. //-------- number of logical areas (service area included) 2 //======== first logical area ================================================= //======== la descriptor ======== // guid 3203 // name Building 32 // description Building of the computer science department. // mobility (mobile=2, static=4) 4 // scale (indoor=2, outdoor=4) 2 // domain(see descriptor.Constants) 64 //======== end la descriptor ======== // symbolic position TU_KL.Building_32.floor_3 // the geographic position 53.89212; 8.68694; 12 // the demanded accuracy (in meter) 0.09 // the demanded overlap (in %) 55 // the demanded height accuracy 0.1 // the minimum floor (in meter/ -1 if not relevant) -1 // the maximum floor (in meter/ -1 if not relevant) -1 //======== the boundary ======== // number of polygons 2 // number of points in polygon0 4 49.4465282719616; 7.763050000000001; 0.0 49.4465282719616; 7.763239291114333; 0.0 49.44657678098693; 7.763239291114333; 0.0 49.44657678098693; 7.763050000000001; 0.0 // number of points in polygon1 (example: 54.89212; 7.68694; 12) 4 49.446508509025335; 7.763050000000001; 0.0 49.446508509025335; 7.763239291114333; 0.0 49.4465282719616; 7.763239291114333; 0.0 49.4465282719616; 7.763050000000001; 0.0 //======== PWS Descriptor ======== // GUID 1 // name Building 32, floor 3 PWS 90 // description Building 32, floor 3 PWS. Installed LSS: none; // URLString http://localhost:8080/PositionWebService-jaxrpc/PositionWebService?WSDL // NameSpace URI PositionWebService/PositionWebService // ServiceName PositionWebService // PortName PositionWebServiceIFPort //======== next logical area ================================================== //======== la descriptor ======== // guid 3203349 // name conference room // description conference room of the AG ICSY. // mobility (mobile=2, static=4) 4 // scale (indoor=2, outdoor=4) 2 // domain(see descriptor.Constants) 256 //======== end la descriptor ======== // symbolic position TU_KL.Building_32.floor_3.Room349 // the geographic position 53.89212; 8.68694; 12; // the demanded accuracy (in meter) 0.09 // the demanded overlap (in %) 55 // the demanded height accuracy 0.1 // the minimum floor (in meter/ -1 if not relevant) -1 // the maximum floor (in meter/ -1 if not relevant) -1 //======== the boundary ======== // number of polygons 1 // number of points in polygon 4 49.4465282719616; 7.763050000000001; 0.0 49.4465282719616; 7.763239291114333; 0.0 49.44657678098693; 7.763239291114333; 0.0 49.44657678098693; 7.763050000000001; 0.0 //======== PWS Descriptor ======== // GUID 1 // name Building 32, floor 3 PWS // description Building 32, floor 3 PWS. Installed LSS: none; // URLString http://localhost:8080/PositionWebService-jaxrpc/PositionWebService?WSDL // NameSpace URI PositionWebService/PositionWebService // ServiceName PositionWebService // PortName PositionWebServiceIFPort //======== next logical area ================================================== //======== end ========= ================================================== 91 9 Literaturverzeichnis [AdCu01] Addlesee, M.; Curwen, R.; Hodges, S.; Newman, J.; Steggles, P.; Ward, A. and Hopper, A.: Implementing a Sentinent Computing System IEEE Computer Magazine, pp. 50 - 56. August 2001. [BaPa00] P. Bahl and V. Padmanabhan: RADAR: An In-Building RF-Based User Location and Tracking System Proc. IEEE Infocom 2000, IEEE CS Press, Los Alamitos, Calif., 2000, pp. 775-784 [BaRo03] Hari Balakrishnan, Roshan Baliga, Dorothy Curtis, Michel Goraczko, Allen Miu, Nissanka B. Priyantha, Adam Smith, Ken Steele, Seth Teller, Kevin Wang: Lessons from Developing and Deploying the Cricket Indoor Location System MIT Computer Science and Artificial Intelligence Laboratory,(CSAIL)November 2003 [BeGr95] J. Ross Beveridge, Christopher Graves and Christopher E. Lesher: Local Search as a Tool for Horizon Line Matching Technical Report CS-96-109 des Computer Science Department der Colorado State University, December 16, 1995 [Bell02] Tom Bellwood, Senior Technical Staff Member: Understanding UDDI IBM , July 2002 http://www-106.ibm.com/developerworks/library/ws-featuddi/ [ChJe02] David Chappell, Tyler Jewell: Java Web-Services O'Reilly, March 2002 [DANA95] Peter H. Dana: Coordinate Systems Overview Department of Geography, University of Texas at Austin, 1995 http://www.colorado.edu/geography/gcraft/notes/coordsys/coordsys_f.html [Durr02] Hugh Durrant-Whyte: Introduction to Sensor Data Fusion, http://www.acfr.usyd.edu.au/teaching/graduate/Fusion/index.html, 2002 [EdWi03] Ed Williams: Aviation Formulary V1.41 http://williams.best.vwh.net/index.html, 2003 [GALI04] Mitteilung der Kommission der europäischen Gemeinschaften an das Europäische Parlament und den Rat: Stand der Durchführung des Forschungsprogramms GALILEO zu Beginn des Jahres 2004 92 http://europa.eu.int/comm/dgs/energy_transport/galileo/documents/doc/com _2004_0112_de.pdf [Garm00] Garmin Corporation: Beginner’s Guide to GPS , http://www.garmin.com/aboutGPS/manual.html 2000 [HiBo01] J. Hightower, G. Borriello: A Survey and Taxonomy of Location Systems for Ubiquitous Computing University of Washington, Technical Report UW-CSE 01-08-03, August 24, 2001 [Hito03] Jeffrey Hightower: From Position to Place In “Proceedings of The 2003 Workshop on Location-AwareComputing”, pages 10–12, October 2003. part of the 2003 Ubiquitous Computing Conference. [Leon98] Leonhardt, U.: Supporting Location Awareness in Open Distributed Systems PhD thesis, Department of Computing, Imperial College of Science, Technology and Medicine,University of London, 1998 [NaSc00] Natalia Marmasse, Chris Schmandt: Location-aware information delivery with comMotion HUC 2000 Proceedings, pp.157-171, Springer-Verlag [NiPr00] Nissanka B. Priyantha, Anit Chakraborty, Hari Balakrishnan: The Cricket Location-Support system Proc. 6th ACM MOBICOM, Boston, MA, August 2000. [RoGr00] Robert J. Orr and Gregory D.: The Smart Floor: A Mechanism for Natural User GVU Technical Report GIT-GVU-00-02 (full paper), January 2000 [Roßb00] Udo Roßbach: Positioning and Navigation Using the Russian Satellite System GLONASS, Universität der Bundeswehr München, 2000 [Schu96] Schumann, T. Dipl. Ing.: Global Positioning System - GPS Fachgebiet Elektronische Messtechnik des Instituts für Kommunikationsund Messtechnik, Technische Universität Ilmenau 1996 http://ikmcip1.e-technik.tu-ilmenau.de/~traut/gps_www/gps_main.htm [Schu03] Schuman, Toralf Dipl.Ing.: Global Positioning System – GPS http://www.toralf-schumann.de/html/gps_prz.html [SiRF02] SiRF Technology, Inc. NMEA Reference Manual 93 http://www.sirf.com 2002 [Snap03] Snaptrack Incorporated: Location Technologies for GSM, GPRS and UMTS Networks 2003 [WaHo92] Roy Want, Andy Hopper, Veronica Falcão and Jonathan Gibbons: The Active Badge Location System ACM Transactions on Information Systems, January 1992 94