114
Einbinden von Eingabegeräten zur Manipulation visualisierter 2D- und 3D- Daten, sowie die Integration von Funktionen zum Austausch der Daten, in das OfuturO- Projekt Von Lino Sanfilippo Zur Erlangung des akademischen Grades Diplom-Informatiker (FH) Fachhochschule Köln University of Applied Sciences Cologne Abteilung Gummersbach Erstprüfer: Prof. Dr. Horst Stenzel Zweitprüfer: Dr. Gernot Goebbels Oktober 2003

Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

Embed Size (px)

Citation preview

Page 1: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

Einbinden von Eingabegeräten zur Manipulation visualisierter 2D- und 3D- Daten, sowie die Integration

von Funktionen zum Austausch der Daten, in das OfuturO- Projekt

Von

Lino Sanfilippo

Zur Erlangung des akademischen Grades Diplom-Informatiker (FH)

Fachhochschule Köln University of Applied Sciences Cologne

Abteilung Gummersbach

Erstprüfer: Prof. Dr. Horst Stenzel Zweitprüfer: Dr. Gernot Goebbels

Oktober 2003

Page 2: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

2

Einführung Der praktische Teil dieser Diplomarbeit besteht in der Verwirklichung der

Eingabeverarbeitung innerhalb der OfuturO-Umgebung. OfuturO stellt eine

Realisierung des Office Of The Future-Konzeptes dar, bei der eine

herkömmliche Büroumgebung mit virtuellen Komponenten angereichert wird.

OfuturO ist somit ein Projekt aus dem Bereich der Mixed Reality.

Das Ziel von OfuturO besteht darin, eine tischbasierte, multimediale

Arbeitsumgebung zur Verfügung zu stellen, die als Plattform für verschiedene

Konferenzszenarien dienen kann. Erreicht wird dies, indem während einer

Konferenz virtuelle Komponenten in die Arbeitsumgebung integriert werden.

Diese Komponenten werden mittels eines Visualisierungsservers verwaltet und

können sowohl in zweidimensionaler, als auch in dreidimensionaler Form

dargestellt werden. Zur Darstellung beider Formen kommt ein Projektionssystem

zum Einsatz, das in den Arbeitstisch der OfuturO-Plattform integriert ist.

Um die Projektionsfläche herum sind die Teilnehmer der Konferenz angeordnet.

Die Teilnehmer schließen sich mit ihren Laptops, auf denen sie die in der

Konferenz zu behandelnden Daten mitbringen, an das OfuturO-Netzwerk an.

Über eine grafische Oberfläche haben sie die Möglichkeit, eigene Daten zu

visualisieren. Durch spezielle Eingabegeräte, können sie die dargestellten

Objekte manipulieren, indem sie diese in verschiedene Richtungen bewegen und,

soweit es sich um räumlich dargestellte Daten handelt, um ihre Raumachsen

drehen können. Die visualisierten Daten befinden sich dabei in einem als Shared

Workspace bezeichneten Arbeitsbereich auf dem Visualisierungsserver.

Da sowohl zwei- als auch dreidimensionale Daten über die Eingabegeräte

manipuliert werden sollen, kommen zwei verschiedene Arten von Eingabegeräte

zum Einsatz, die so genannte Spacemaus und ein herkömmliches Touchpad.

Jeder Teilnehmer hat dabei die Kontrolle über ein solches Gerätepaar. Eine

Spacemaus ist ein speziell zur Eingabeverarbeitung im Raum entwickeltes

Eingabegerät, während ein Touchpad zur Eingabeverarbeitung in der Ebene

Page 3: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

3

eingesetzt wird. Spacemaus und Touchpad werden in Kapitel 4 ausführlich

vorgestellt.

Neben der Möglichkeit die visualisierten Daten über die Eingabegeräte zu

steuern, können die Teilnehmer die Daten auch über Gesten, die auf dem

Touchpad ausgeführt werden, an anderen Konferenzteilnehmer verschicken.

Die Aufgabestellung, die in dieser Diplomarbeit gelöst werden soll, lässt sich in

drei Teilaufgaben unterteilen.

1. Teilaufgabe:

Einbinden von Spacemaus und Touchpad zur Interaktion des Benutzers mit

visualisierten 2D- und 3D-Daten sowie Fokussierung der

Eingabemöglichkeit und Wechsel des Eingabefokus’.

Um den Benutzern die Möglichkeit zu geben mit den vom Visualisierungsserver

dargestellten zweidimensionalen und dreidimensionalen Grafiken interagieren

bzw. diese manipulieren zu können, müssen die Eingabegeräte, die allesamt am

Visualisierungsserver angeschlossen werden sollen, softwaremäßig in die

OfuturO-Umgebung integriert werden. Insgesamt handelt es sich dabei um sechs

Geräte (je drei Spacemäuse und drei Touchpads), die über zwei 4-Port-USB-

Hubs am USB-Port des Servers angeschlossen werden.

Eingaben dürfen nicht von mehreren Benutzern gleichzeitig gemacht werden,

sondern sind zu einer Zeit nur einem bestimmten Benutzer erlaubt. Die

Eingabeverarbeitung erfolgt also über einen Eingabefokus. Der Fokus wird

immer nur einem Konferenzteilnehmer zugewiesen und berechtigt diesen zur

Steuerung der visualisierten Daten über Touchpad und Spacemaus. Durch einen

Wechsel des Fokus’ wird die Steuerberechtigung auf einen anderen

Konferenzteilnehmer übertragen. Dies macht Sinn, da die Perspektive für die

räumlich dargestellten Objekte auch immer nur für einen Konferenzteilnehmer

zu einem Zeitpunkt korrekt dargestellt werden kann. Die perspektivisch richtige

Betrachtung 3-dimensionaler Objekte erfolgt also ebenfalls über einen Fokus,

den Sichtfokus. Geplant ist, Eingabe- und Sichtfokus später einmal so zu

synchronisieren, dass derjenige Konferenzteilnehmer, der den Sichtfokus besitzt,

Page 4: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

4

auch automatisch den Eingabefokus besitzt. Dazu muss auch die Möglichkeit

bestehen, den Eingabefokus an einen anderen Konferenzteilnehmer

weiterzugeben. Eine Übergabe muss dabei explizit (durch eine Geste,

Buttondruck etc.) von demjenigen Teilnehmer erfolgen, der momentan die

Eingabeberechtigung hat.

2. Teilaufgabe:

Implementieren von Funktionen zur Übertragung von Dateien die sich im

Shared Workspace befinden, an die am OfuturO-Netzwerk angeschlossenen

Workstations über eine geeignete Geste auf dem Touchpad.

Die OfuturO-Umgebung soll den Teilnehmern einer Konferenz außer der

Möglichkeit eine Reihe von Aktionen über die GUI der Workstationsoftware

durchführen zu können, auch die Möglichkeit bieten, bestimmte Aktionen über

Gesten auf den Touchpads auszuführen. Unter einer Geste wird eine nonverbale

Ausdrucksform verstanden, mit der eine bestimmte Absicht angedeutet wird.

Da die Touchpads in erster Linie zum Steuern von visualisierten Dokumenten

auf der Projektionsfläche eingesetzt werden, sollen sich die mit der

Gestenerkennung verbundenen Aktionen auch lediglich auf Datensätze

beschränken, die sich im Shared Workspace befinden. Dazu sollen exemplarisch

verschiedene Gesten und die damit verbundenen Aktionen implementiert

werden. Die Gesten, die letztendlich in OfuturO eingesetzt werden, hängen von

der jeweiligen Zielsetzung ab, die durch den Einsatz der OfuturO-Plattform

erreicht werden soll.

Aktionen, die über Gesten auf den Touchpads ausgeführt werden sollen sind:

1. Das Versenden von Datensätzen im Shared Workspace an den rechten

Sitznachbarn1.

1 Da die Konferenzteilnehmer am OfuturO Tisch nicht kreisförmig sondern hufeisenförmig angeordnet sind, hat genau genommen nur der mittlere Teilnehmer einen rechten und einen linken Nachbarn. Für die Funktion des Dokumentenversendens wird allerdings darüber hinweggesehen und eine kreisförmig Anordnung der Konferenzteilnehmer angenommen.

Page 5: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

5

2. Das Versenden von Datensätzen im Shared Workspace an den linken

Sitznachbarn.

3. Das Versenden von Daten im Shared Workspace an alle Konferenz-

teilnehmer.

3. Teilaufgabe:

Implementieren einer Beispielapplikation an der die Funktionalität der

Lösungen zu den obigen Aufgaben demonstriert wird.

Da die OfuturO Softwareumgebung mit ihren Schnittstellen, die

Voraussetzungen für die Lösungen der Aufgaben dieser Diplomarbeit darstellen,

bis zum Fertigstellen der Diplomarbeit voraussichtlich noch nicht voll

einsatzbereit sein wird, soll die Funktionalität der gefundenen Lösungen an einer

Beispielapplikation gezeigt werden. Die Beispielapplikation soll dabei die

Funktionalität der noch nicht implementierten Softwarekomponenten der

OfuturO-Umgebung simulieren.

Ein Problem, das bei der Realisierung der Teilaufgaben gelöst werden muss,

besteht darin, dass die Eingabegeräte allesamt am Visualisierungsserver und

nicht an den einzelnen Workstations der Konferenzteilnehmer angeschlossen

sind. Die Eingabegeräte sind fester Bestandteil von OfuturO, während die

Workstations beliebig an- und abgeschlossen werden können. Dadurch muss

eine Möglichkeit gefunden werden, die Geräte den gerade vorhandenen

Workstations zuzuordnen.

Im folgenden Kapitel wird zunächst ein Überblick über das Gebiet der Mixed

Reality und ihrer Beziehung zur Virtual Reality gegeben. Dabei werden sowohl

die Hardwarekomponenten, die in der Mixed Reality zum Einsatz kommen, als

auch Interaktionsmöglichkeiten, mit den virtuell dargestellten Objekten,

beschrieben. Zum Schluss werden einige Anwendungsgebiete vorgestellt, in

denen Projekte der Mixed Reality heute schon erfolgreich angewandt werden.

Page 6: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

6

Dazu gehören auch das Office Of The Future Konzept, und das OfuturO-Projekt,

als mögliche Realisierung dieses Konzeptes. Sowohl Office Of The Future, als

auch OfuturO, werden in den darauf folgenden Kapiteln vorgestellt. Nachdem

die theoretischen Grundlagen zum Verständnis der in dieser Diplomarbeit

behandelten Problematik erarbeitet wurden, erfolgt eine genaue Analyse der

Problemstellung, mit ersten Lösungsansätzen. Die zu den einzelnen

Teilaufgaben gefundenen Lösungen, werden jeweils anschließend vorgestellt.

Zum Schluss dieser Ausarbeitung wird schließlich ein kritischer Blick auf die

Ergebnisse geworfen, um zu ermitteln, inwieweit die Lösungen den gestellten

Anforderungen gerecht werden.

Page 7: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

7

Inhaltverzeichnis

Abbildungsverzeichnis........................................................................................ 9

1 Virtual Reality ................................................................................................ 10

1.1 Einführung................................................................................................. 10

1.2 Arten von Virtual Reality Systemen ......................................................... 14

1.2.1 Immersive Reality .............................................................................. 14

1.2.2 Mixed Reality..................................................................................... 15

1.3 Hardwarekomponenten eines Mixed Reality Systems............................. 16

1.3.1 Stereoprojektoren und Projektionsflächen ........................................ 17

1.3.2 Tracker .............................................................................................. 18

1.3.3 Shutterbrillen und Polarisationsbrillen.............................................. 18

1.3.4 Eingabegeräte eines Mixed Reality Systems .................................... 19

1.4 Interaktion in der Mixed Reality ............................................................... 20

1.5 Anwendungsgebiete von Mixed Reality Systemen................................... 22

2 Office Of The Future...................................................................................... 24

2.1 Motivation ................................................................................................. 24

2.2 Virtuelle Hilfsmittel .................................................................................. 25

2.2.1 Definition ........................................................................................... 25

2.2.2 Arten................................................................................................... 25

2.2.3 Integrationsmethoden......................................................................... 26

2.3 Projekte...................................................................................................... 28

2.3.1 Roomware for Cooperative Buildings................................................ 28

2.3.2 The Office of the Future..................................................................... 30

3 Die OfuturO Plattform .................................................................................. 32

3.1 Vorstellung ................................................................................................ 32

3.2 Aufbau....................................................................................................... 33

3.2.1 Tisch ................................................................................................... 34

3.2.2 Display ............................................................................................... 35

3.2.3 Eingabegeräte ..................................................................................... 37

3.3 Software .................................................................................................... 38

3.4 Anwendungen............................................................................................ 40

Page 8: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

8

3.5 Der Mixed Reality Conferencing Prototyp ............................................... 41

3.5.1 Beschreibung eines Konferenzszenarios........................................... 45

3.5.2 Entwicklungsstand ............................................................................. 49

4 Die Eingabegeräte.......................................................................................... 50

4.1 Grundlagen ............................................................................................... 50

4.2 Vorgaben ................................................................................................... 53

4.2.1 Das Cirque USB Easy Cat Touchpad................................................. 54

4.2.2 Die Magellan Spacemaus Plus........................................................... 56

5 Die Integration der Eingabegeräte in OfuturO........................................... 61

5.1 Analyse der Problemstellung .................................................................... 61

5.2 Der SMTP-Treiber als Realisierung der Lösung...................................... 63

5.3 USB-Kerneltreiber unter Linux................................................................. 65

5.4 Die SMTP-Treiberroutinen........................................................................ 67

5.4.1 Die Moduleeinsprungspunkte ModulInit und ModulExit................... 67

5.4.2 Die USB-Gerätespezifischen Operationen......................................... 69

5.4.3 Die File-Operationen.......................................................................... 72

5.5 Probleme bei der Implementierung.......................................................... 77

6 Das Versenden visualisierter Daten durch Gesten..................................... 84

6.1 Analyse der Aufgabenstellung zur Gestenerkennung .............................. 84

6.2 Realisierung der Gestenerkennung............................................................ 88

6.3 Analyse der Aufgabenstellung zur Zuordnung von Eingabegeräten zu

Workstations.................................................................................................... 93

6.4 Realisierung der Zuordnung von Eingabegeräten zu Workstations.......... 95

6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode............................ 96

7 Ergebnis......................................................................................................... 100

7.1 Die Beispielapplikation zur Demonstration der erzielten Ergebnisse..... 100

7.2 Betrachtung der Lösung zum Einbinden der Eingabegeräte in OfuturO 102

7.3 Betrachtung der Lösung zum Versenden visualisierter Daten über die

Gesten........................................................................................................... 106

7.3.1 Die Gestenerkennung auf den Touchpads........................................ 106

7.3.2 Die Zuordnung der Workstations zu den Gerätepaaren ................... 107

Literaturverzeichnis ........................................................................................ 109

Anhang ............................................................................................................. 112

Erklärung ......................................................................................................... 114

Page 9: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

9

Abbildungsverzeichnis

1.1 Milgram Diagramm aus [MC99] 10

1.2 Cubic Mouse der GMD 20

1.3 Space Ball 4000 20

1.4 Magellan Spacemaus Plus 20

2.1 Office Of The Future Vision aus [RWC+98] 24

2.2 Roomware Komponente CommChair aus [SGH98] 29

3.1 OfuruO Tisch 32

3.2 Konzeptionelle Skizze von OfururO 34

3.3 Arbeitsplatz mit Laptop 35

3.4 Display Vorrichtungen 35

3.5 Eingabegeräte 38

3.5 Avango Entwicklungsumgebung 39

3.7 Vergleich von Konferenzszenarien 42

3.8 Verbindung von Datenbankarchiven und Projektionssystem 43

3.9 Vernetzung der Softwarekomponenten 46

3.10 Visualisierung von Präsentationsinhalten 47

3.11 Download von Präsentationsinhalten 48

3.12 Direkter Transfer von Informationen 48

4.1 Deskriptorhyrarchie [Lin03] 53

4.2 Easy Cat Touchpad von Cirque 56

4.3 Magellan Spacemaus Plus mit ihren 6 Freiheitsgraden 60

5.1 Auszug aus /proc/bus/devices 70

5.2 Schematische Darstellung der Race Conditions Problematik 80

5.3 Schematische Darstellung der Race Conditions Problematik II 83

6.1 Funktionsweise der GlidePoint Technologie 86

6.2 Gestenausführung auf einem Touchpad 87

6.3 Gestenverlauf innerhalb des Toleranzintervalls 90

6.4 Vorzeichenwechsel bei einer Kreisgeste auf dem Touchpad 92

6.5 Platznummernvergabe am OfuturO-Tisch 96

Page 10: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

10

Kapitel 1

Virtual Reality

1.1 Einführung

Da die Aufgabenstellung dieser Diplomarbeit Teil eines Projektes aus dem

Bereich der Virtual Reality (genauer der Mixed Reality) ist, soll vorab erstmal

eine Erläuterung dessen erfolgen, was im Folgenden als Virtual Reality (VR)

bezeichnet wird und welche Teilgebiete von dem Thema der Virtual Reality

abgedeckt werden. Insbesondere wird dabei auf den Bereich der Mixed Reality

eingegangen, in dem das OfuturO Projekt anzusiedeln ist.

Der Begriff Virtual Reality wurde 1989 von Jaron Lanier geprägt. Im Grunde

genommen beinhaltet er zwei an sich gegensätzliche Bezeichnungen: Virtual

bedeutet übersetzt soviel wie nicht real, nicht wirklich existent. Reality

bezeichnet die uns umgebende Wirklichkeit. Zusammengesetzt bedeutet Virtual

Reality also erst einmal nichts weiter als nicht real existente Wirklichkeit. Das

untenstehende Diagramm nach Milgram (Abbildung 1.1) zeigt eine mögliche

Definition der Virtual Reality und ihre Beziehung zur realen Welt auf.

Abb.1.1: Beziehung zwischen wirklicher und virtueller Realität nach Milgram aus [MC99]

In dieser Definition stehen sich die uns bekannte reale Wirklichkeit am linken

Ende, sowie eine vollkommen nicht existente Wirklichkeit am rechten Ende,

gegenüber. Die Umgebung der Realen Wirklichkeit (Real Environment) steht

dabei für eine Umwelt, in der keinerlei Simulationen stattfinden. Sämtliche

Sinneseindrücke werden von physikalisch real existierenden Gegebenheiten

Page 11: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

11

erzeugt. Mit der Zunahme von virtuellen Komponenten die in die wirkliche

Realität integriert werden, bewegt man sich in Richtung des rechten Endes auf

dem Milgram Diagramm fort. Der Übergang zwischen den Extremformen an

beiden Enden auf dem Milgram Diagramm wird als Mixed Reality bezeichnet. In

der Mixed Reality befindet sich der Mensch in einer Umgebung in der beides

existiert, sowohl reale, als auch nicht reale Komponenten. Je nach Anteil von

Realem und Nichtrealem wird im Milgram Diagramm noch zwischen

Augmented Reality (AR) und Augmented Virtuality (AV) unterschieden. In der

Augmented Reality stellen simulierte Umgebungskomponenten Anreicherungen

der Realen Welt dar. In der Augmented Virtuality wird eine simulierte Welt

durch reale Komponenten angereichert. Denkbar sind auch Modelle in denen

noch feinere Unterscheidungen gemacht werden. Am äußersten rechten Rand

des Diagramms schließlich steht die virtuelle Umgebung (Virtual Environment).

Sämtliche Sinneseindrücke sind hier Folgen von durch nicht real existierende

Gegebenheiten ausgelösten Simulationen. Für eine solche Umgebung wurde in

dem 1984 erschienen Roman Neuromancer von W.Gibson auch die

Bezeichnung Cyberspace geprägt. Fälschlicherweise wird Cyberspace oft als

Synonym für Virtuelle Realität benutzt. In Wirklichkeit stellt der Cyberspace

aber nur den Sonderfall aller möglichen virtuellen Realitäten dar, die sich

ausgenommen vom äußerst linken Ende über das gesamte Milgram Diagramm

verteilen, nämlich eine vollkommen von der Außenwelt abgeschnittene,

interaktionsfähige, frei begehbare, simulierte Wirklichkeit. Der Begriff

Wirklichkeit steht dabei für das, was wir als real existent empfinden. Somit

genügt es zum Erzeugen einer virtuellen Realität nicht, die reale Umgebung

einfach mit virtuellen Elementen anzureichern. Vielmehr müssen diese Elemente

auch vollkommen in die reale Umgebung integriert werden. Nur dadurch kann

aus realen und virtuellen Elementen eine zur realen Wirklichkeit gleichwertige

virtuelle Realität erzeugt werden.

Um den Übergang von der wirklichen Welt in eine virtuelle Welt zu erleben ist

ein bestimmter Vorgang notwendig, nämlich das subjektive Verlassen der realen

und gleichzeitige Eintauchen in die virtuelle Welt. Dieser Vorgang wird auch als

Immersion bezeichnet. Immersion kann genauso beim Ansehen eines

spannenden Filmes erfolgen, wie auch beim Kontakt mit computergenerierten

Welten durch Verwendung der verschiedenen Darstellungskomponenten in der

Page 12: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

12

VR. Die Immersion ist ein Vorgang, der schleichend erfolgt und verschiedene

Stärken aufweisen kann. Der Grad an Immersion der erreicht wird, hängt in

hohem Maße von der Fähigkeit des verwendeten Systems ab, eine realistische

Darstellung der künstlichen Wirklichkeit zu erzeugen. Auf dem Milgram

Diagramm sind keine Informationen über den Grad einer Immersion zu

entnehmen. Eine Immersion wird hier schon vorausgesetzt. Ziel eines Virtual

Reality Systems ist es immer, ein möglichst hohes Maß an Immersion zu

erreichen. Was aber erzeugt das Empfinden von Realität überhaupt? Der Mensch

nimmt seine Umwelt über die fünf Sinne fühlen, hören, schmecken, sehen und

riechen wahr. Aufgrund der Informationen, die über diese Sinne aufgenommen

werden, generiert der Mensch ein inneres Abbild seiner Umgebung. Dieses

Abbild stellt die ganz persönliche Realität dar. Um nun für den Menschen eine

andere Realität zu erzeugen, sollte es genügen die Sinneseinflüsse entsprechend

zu verändern. Diese an sich simple Bedingung bereitet in der Praxis jedoch

gravierende Probleme. Grund dafür ist, dass die Informationen

(Sinneseindrücke) einer virtuellen Welt in geeigneter Weise an die Sinne

weitergeleitet werden müssen. Dazu sind spezielle Schnittstellen unerlässlich.

Diese Hardwareschnittstellen werden weiter unten noch genauer betrachtet. Das

Problem liegt nun darin diese Schnittstellen so zu konstruieren, dass die

Übertragung der gewünschten Informationen als möglichst natürlich empfunden

wird. Dazu müssen sie Funktionen bieten, die zum einen Informationen in

geeigneter Weise wiedergeben und zum anderen ihren Einsatz möglichst nicht

wahrnehmen lassen.

Geeignete Voraussetzungen für eine im oben beschriebenen Sinne optimale

Informationsübertragung zu schaffen ist jedoch nur eine von zwei Teilaufgaben

der Darstellungskomponenten eines Virtual Reality Systems. Die andere besteht

darin diese Informationen überhaupt erst zu erzeugen. Dazu muss es gelingen die

zu übermittelnden Eindrücke so gut wie möglich nach dem Vorbild aus der

realen Welt zu simulieren.

Somit muss bei der Darstellung von Grafiken und Änderungen der Perspektive

ein Bildaufbau immer in Echtzeit erfolgen, was bedeutet, dass

Verzögerungszeiten immer in einem Bereich von weniger als einigen hundertstel

Sekunden liegen. Fehlt diese Echtzeitfähigkeit, kommt es zu verzögertem

Bildaufbau, der in Nichtsynchronität von Bewegung und Bildwiedergabe

Page 13: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

13

resultiert. Das Echtzeitverhalten eines Systems für Virtual Reality nimmt mit der

Zunahme an zu verarbeitenden Polygonen und somit der Prozessorlast ab.

Derzeit können z.B. einige tausend Polygone noch verzögerungsfrei dargestellt

werden, bei höheren Anzahlen kommt es dann aber bereits zu Bildauslassungen

und anderen Qualitätseinbußen. Einige Darstellungskomponenten von heutigen

Systemen für Virtual Reality werden im nächsten Abschnitt vorgestellt.

Eine gewisse Immersion kann bereits durch das geeignete Darstellen und

Übermitteln simulierter Sinneseindrücke erzielt werden, sie lässt sich jedoch

durch eine Interaktionsfähigkeit des VR-Systems noch verstärken: In der Realität

können wir unsere Umwelt nicht nur wahrnehmen, wir können auch mit ihr in

Kontakt treten, indem wir sie manipulieren. Viele Systeme für Virtual Reality

machen erst dadurch Sinn, dass sie Interaktionen zulassen. Die

Interaktionsfähigkeit, sowie auch die Darstellungsfähigkeit eines Systems für

Virtual Reality, werden immer durch den Einsatz von Computerhardware

erreicht.

Die theoretischen Grundlagen für den Einsatz von Datenverarbeitungs-

technologien zur Erzeugung interaktiver virtueller Realitäten wurden 1965 von

dem Wissenschaftler Ivan Sutherland unter dem Titel "The Ultimate Display"

[Sut65] veröffentlicht. Bereits 1963 entwickelte Sutherland am Massachusetts

Institute of Technique (MIT) ein Zeichenprogramm, das dem Benutzer

ermöglichte mit Hilfe eines Fadenkreuzes auf dem Bildschirm Linien zu

zeichnen und wieder zu löschen. Das Programm mit dem Namen “Sketchpad“

erlaubte erstmals die direkte Interaktion des Benutzers mit dem Computer. Einen

weiteren Meilenstein in der Entwicklungsgeschichte der Virtual Reality stellt das

um 1970 ebenfalls von Sutherland entwickelte Head Mounted Display (HMD)2

dar. Etwa zur selben Zeit arbeitete das Militär daran Flugverhalten und

Steuerung von Flugzeugen mit Hilfe von Software zu simulieren. Die

Flugsimulatoren bestanden aus einem frei gelagerten Cockpitnachbau, das auf

Bewegungen des Steuerknüppels mit Kipp- und Drehbewegungen zur Seite,

nach vorne oder nach hinten reagierte. Die Simulatoren sollten vor allem den

auszubildenden Piloten ein Training ermöglichen, das billiger und gefahrloser

war als das herkömmliche Flugtraining in echten Flugzeugen. Bevor

Computergrafiken in den Simulatoren eingesetzt wurden, nutzte man für die

2 Beschrieben in [Sut68]

Page 14: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

14

visuellen Eindrücke noch Videoaufnahmen. Der Einsatz der Computergrafik

erlaubte im Gegensatz zu den Videoaufnahmen jedoch visuelle Reaktionen in

Echtzeit, auch wenn die Grafik zu dieser Zeit noch primitiv und weit entfernt

davon war, eine realistische Darstellung zu bieten. Flugsimulationen, in die das

Militär Millionen von Dollar investierte, brachten die Entwicklungen auf dem

Gebiet der VR entscheidend voran. Obwohl militärische Forschungen für

Simulationen zeitweise aus Kostengründen abgebrochen wurden, stellen

Simulationsprogramme aller Art heute noch immer einen großen Anteil des

Einsatzbereiches von Datenverarbeitungsanlagen und speziell der VR dar. In 1.4

wird das Thema der Interaktion im Zusammenhang mit der Mixed Reality noch

einmal genauer erläutert.

1.2 Arten von Virtual Reality Systemen

Je nachdem welche Hardware eingesetzt wird, welche Ziele verfolgt werden und

wie der Einsatz der verschiedenen Komponenten eines Systems für Virtual

Reality erfolgt, werden verschiedene Kategorien der VR unterschieden. Im

Folgenden werden die beiden wichtigsten Bereiche der VR, die Immersive

Reality und die Mixed Reality vorgestellt. Je nach Definition von Virtual Reality

finden sich auch andere Unterteilungen.3

1.2.1 Immersive Reality

Anwendungen der Immersive Reality (IR) stehen ganz rechts im Milgram

Diagramm und bemühen sich den Benutzer vollkommen in simulierte,

interaktive Welten eintauchen und damit interagieren zu lassen. Das auch als

Immersion (Definition siehe oben) bekannte Eintaucherlebnis (der Effekt, wenn

sich der Benutzer psychisch in der virtuellen Welt befindet) kann hier aber erst

dann erfolgen, wenn die Sinne des Anwenders von der Außenwelt abgeschirmt

3 Siehe auch [Vie03] in denen die VR in sechs Teilbereiche unterteilt wird.

Page 15: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

15

werden. Gleichzeitig müssen anstelle der Einflussfaktoren aus der Außenwelt

ausreichende und als real empfundene virtuelle Informationen aus dem VR-

System geliefert werden. Obwohl die Immersion selbst nicht erfordert, dass alle

Sinne von der Simulation angesprochen werden, kann sie dadurch jedoch

verstärkt werden. So hat sich gezeigt, dass die visuelle Wahrnehmung verbessert

werden kann, indem sie mit einer akustischen Ausgabe gekoppelt wird. Die

Systeme der Immersive Reality unterstützen daher neben einer visuellen

Darstellung so gut wie immer auch die auditive Wahrnehmung, indem der

Anwender Klangeindrücke über Kopfhörer bzw. Soundanlagen zugespielt

bekommt, während die Geräusche der Außenwelt gleichzeitig abgeschirmt

werden. Je nach Anwendung sind dem Benutzer mehr oder weniger

Interaktionen mit der virtuellen Welt möglich. Dazu werden in der Regel

spezielle Eingabegeräte verwendet. Diese unterstützen teilweise auch haptische

Feedbacks, so dass auf bestimmte Handlungen in der IR im besten Fall visuelle,

akustische sowie sensorische Rückmeldungen des Systems erfolgen. Die beiden

verbleibenden Sinne für die olfaktorische sowie gustatorische Wahrnehmung

werden heutzutage von der IR noch vernachlässigt.

Derzeit gibt es noch keine Richtlinien für die Immersionsfähigkeit eines IR-

Systems. Eine Methode besteht im so genannten Ducktest: Dabei wird dem

Benutzer ein virtuelles Objekt entgegen geworfen- erfolgt eine

Ausweichreaktion, so kann davon ausgegangen werden, dass der Benutzer die

virtuelle Welt als Alternative zur Realität anerkennt. Zur Bilddarstellung wird in

der Immersive Reality vorzugsweise das HMD eingesetzt, da es den Blick des

Anwenders auf die reale Umgebung abschirmt und somit die nötigen

Voraussetzungen für ein Eintauchen in eine vollkommen vom Computer

generierte Welt erfüllt. Alternativ zum HMD werden in der Immersive Reality

auch Projektionsräume eingesetzt, wie die CAVE oder die iCone.

1.2.2 Mixed Reality

Während bei der Immersive Reality der Versuch unternommen wird den

Menschen in eine nicht reale, vom Computer geschaffene Umgebung eintauchen

zu lassen, hat die Mixed Reality (MR) sich zum Ziel gesetzt, den Menschen in

Page 16: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

16

seiner gewohnten Umgebung zu belassen und stattdessen die

computergenerierten Objekte darin zu integrieren. Um dies zu erreichen dürfen

die Sinne des Anwenders in der Mixed Reality nicht wie bei der Immersive

Reality von der Umgebung abgeschirmt werden. Die Visualisierung findet daher

auch nicht wie beim gewöhnlichen Head Mounted Display unter Ausschluss der

Umgebung statt. Stattdessen werden spezielle Projektionsflächen in Form von

Großbildwänden, einer Workbench, oder einer ganz gewöhnlichen Wand die als

Bildwand dient, verwendet.

Die MR hat gegenüber der IR den Vorteil, dass keine komplett neue Umgebung

berechnet und dargestellt werden muss. Die Computerdarstellung kann sich auf

die nur wirklich relevanten Objekte beschränken. Die hierfür nötige

Rechenleistung ist somit um ein Vielfaches geringer als bei der Virtual Reality.

Dies kommt vor allem dann zum Tragen wenn die getrackten4 Bewegungen des

Anwenders eine Neukalkulation der visualisierten Daten und ein anschließendes

Neudarstellen in Echtzeit erfordern.

1.3 Hardwarekomponenten eines Mixed Reality Systems

Je nach Anforderungen an ein MR-System und den mit ihrem Einsatz

verbundenen Zielen, können den Computerdarstellungen bzw. dem

Interaktionsverhalten eines MR-Systems eine nebensächliche oder eine

vorherrschende Rolle zukommen. Für die verschiedenen MR- Systeme kommen

daher unterschiedlichste Hardwarekomponenten zum Einsatz. Die gebräuch-

lichsten Hardwarekomponenten, die in der VR-Forschung auf dem Gebiet der

Mixed Reality eingesetzt werden, werden hier kurz vorgestellt:

4 Das Tracking wird weiter unten unter 1.3.2 beschrieben.

Page 17: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

17

1.3.1 Stereoprojektoren und Projektionsflächen

Sinn der Stereoprojektion ist das Erreichen einer räumlichen Darstellung des

anzuzeigenden Bildes. Dazu macht man sich die natürliche Fähigkeit des

Gehirns zunutze, zwei voneinander versetzte Bilder automatisch zu einem

räumlichen Bild verarbeiten zu können. Dies geschieht nämlich immer dann,

wenn wir eine bestimmte Szene mit den Augen betrachten: Aufgrund des

Abstandes der Augen zueinander wird auf die Netzhaut der Augen nicht jedes

Mal das gleiche, sondern zwei leicht voneinander versetzte Bilder projeziert.

Nähere Objekte scheinen dabei stärker, weiter entfernte Objekte weniger stark

versetzt. Hauptsächlich anhand dieses Versatzes bekommt der Mensch

Entfernungsdaten übermittelt. Ein räumliches Sehen wird möglich, indem das

Gehirn die beiden Einzelbilder zu einem räumlichen Bild zusammensetzt. Um

den gleichen Effekt bei einer Projektion zu erreichen, erfolgt diese über eine

Doppelprojektion, wobei beide Bilder gleichzeitig, aber der Perspektive

entsprechend leicht versetzt voneinander projeziert werden. Die Räumlichkeit

wird erreicht, indem für jedes Auge nur jeweils eines der beiden Bilder angezeigt

wird. Dazu müssen jedoch zuerst beide Projektionen voneinander getrennt

werden. Die Trennung wird in der Regel durch spezielle Brillen (Shutterbrillen)

erreicht, die dafür Sorge tragen, dass immer nur das für das jeweilige Auge

bestimmte Bild durchgelassen wird. Da es verschiedene Projektionsverfahren

gibt, arbeiten auch die zum Einsatz kommenden Brillen unterschiedlich: Bei der

Anaglyphenmethode wird für jedes der Bilder zur Darstellung eine andere Farbe

gewählt (rot, grün). Die Brillen die in Zusammenarbeit mit dieser Projektionsart

eingesetzt werden erreichen die Trennung der beiden Bilder voneinander indem

auch die Brillengläser jeweils eine der beiden Farben aufweisen und auf diese

Weise nur das nicht der Glasfarbe entsprechende Bild zum Auge durchlassen.

Das der Glasfarbe entsprechende Bild wird vom Brillenglas überdeckt.

Bei der Polarisationsprojektion sind auch mehrfarbige Bilder möglich. Hierbei

werden beide Bilder in Originaleinfärbung, dafür aber mit unterschiedlicher

Lichtpolarität projeziert. Die hier eingesetzten Brillen erreichen die

Bildtrennung, indem sie gleichfalls polarisierte Gläser einsetzen. Jedes

Brillenglas lässt dabei nur die seiner Polarisation entsprechende Projektion zum

Auge durch (siehe Abschnitt 1.3.3).

Page 18: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

18

1.3.2 Tracker

Einige Eingabegeräte in der VR weisen Tracker auf, die ständig Position und

Orientierung des Gerätes aufzeichnet. Ein Tracker besteht dabei prinzipiell aus

einem Transmitter und einem Receiver, wobei eine Steuereinheit abhängig von

Winkel und Lageveränderung des Senders und Empfängers zueinander, die

neuen Koordinaten für den Computer berechnet. Sinn des Trackings ist die

Möglichkeit eines VR-Systems, angemessen auf Bewegungen des Anwenders

reagieren zu können. So wird auch durch das Tracking wieder ein zusätzliches

Maß an Realitätsempfinden erzeugt, indem das VR-System beispielsweise dafür

sorgt, dass Eigenbewegungen des Benutzers einen Perspektivenwechsel gemäß

der Bewegungsparallaxe5 nach sich ziehen.

Es existieren verschiedene Trackingverfahren, darunter das mechanische

Tracking, das optische Tracking und das Ultraschalltracking. Eine Beschreibung

der Arbeitsweise dieser Trackingarten findet sich in [KR98].

1.3.3 Shutterbrillen und Polarisationsbrillen

Shutterbrillen setzen das Verfahren der aktiven, Polarisationsbrillen das

Verfahren der passiven Stereoprojektion ein.

Bei den Gläsern der Shutterbrille handelt es sich um 2 LCD Gläser, die

abwechselnd verdunkelt werden können. Das wechselseitige Verdunkeln der

Bilder ist dabei mit dem Stereobildprojektor über Kabel oder Infrarotemitter

synchronisiert, und erfolgt in einer so hohen Geschwindigkeit (mindestens 50

Hz), dass es für das menschliche Auge nicht mehr wahrnehmbar ist. Als Resultat

wird jeweils immer nur eines der beiden Bilder die vom Projektor erzeugt

werden von einem Brillenglas zum Auge durchgelassen, während das andere

blockiert wird. Da das Verdunkeln der Brillengläser mit der Projektion der

Bilder koordiniert werden muss, sind Shutterbrillen über ein Kabel mit dem

Projektor verbunden. Polarisationsbrillen wurden bereits 1928 von Edwin Land

entwickelt und arbeiten dagegen ohne eine solche Synchronisation. Stattdessen

5 Die Bewegungsparallaxe ist für das Phänomen verantwortlich, dass sich bei einer Bewegung nahe stehende Objekte für den Beobachter stärker verschieben als weiter entfernte. Dieses Phänomen muss für die realistische Darstellung innerhalb einer virtuellen Umgebung nachgeahmt werden.

Page 19: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

19

sind die Gläser der Brille unterschiedlich polarisiert. Die Bildtrennung kommt

dadurch zustande, dass die Stereoprojektion ebenfalls mit verschiedener Polarität

für die einzelnen Bilder stattfindet und die Brillengläser somit das Bild mit der

jeweils anderen Polarisierung blockieren.

1.3.4 Eingabegeräte eines Mixed Reality Systems

Für die Interaktion innerhalb einer Mixed Reality Umgebung kommen

verschiedene Eingabegeräte, wie beispielsweise die Cubic Mouse, der Space Ball

oder die Spacemaus zum Einsatz. Bei der Cubic Mouse handelt es sich um ein

von der GMD (Gesellschaft für Mathematik und Datenverarbeitung)

entwickeltes Eingabegerät. Sie besteht aus einem würfelförmigen Gehäuse, bei

dem durch jede der drei Achsen ein Stab gezogen ist (Abbildung 1.2). Die Enden

eines Stabes ragen dabei zu beiden Seiten aus dem Gehäuse. Durch Verschieben

der Stäbe lassen sich bei der Cubic Mouse Translationsbewegungen auf, und

durch das Drehen an den Stäben Rotationsbewegungen um alle drei Achsen

erzeugen. Bei der Spacemaus lässt sich eine Kappe, beim Space Ball ein kleiner

Gummiball in alle erdenklichen Richtungen drücken, ziehen oder drehen

(Abbildungen 1.3 und 1.4). Dabei werden die Bewegungsdaten nicht nur ihrer

Richtung entsprechend übertragen, sondern variieren auch je nach Druckstärke

in die entsprechende Richtung. Dadurch lässt sich mit der Spacemaus bzw. dem

Space Ball neben der eigentlichen Bewegung auch die Geschwindigkeit der

Bewegungsabläufe kontrollieren. Unter anderem ist das Einbinden von

Spacemäusen für die Eingabeverarbeitung innerhalb der OfuturO-Umgebung

Teil dieser Diplomarbeit. Die Spacemaus wird daher in Kapitel 4 noch genauer

betrachtet.

Page 20: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

20

Abb.1.2: Die Cubic Mouse der GMD (links), Abb. 1.3: Der Space Ball 4000 (mitte),

Abb.1.4:Magellan Spacemaus Plus (rechts) der Firma 3DConnexions

1.4 Interaktion in der Mixed Reality

Im Folgenden sollen einige Aspekte der Interaktion in einem MR-System

aufgezeigt werden, sowohl einige Möglichkeiten als auch die damit verbundenen

Problemstellungen. Die Problematik bei der Interaktion mit virtuellen

Gegenständen ähnelt der ihrer Darstellung. Bei der Darstellung in der MR

müssen spezielle (Hardware-) Schnittstellen vor die natürlichen

Eingabeschnittstellen (Augen, Ohren, Nase, Haut) geschaltet werden um die

Darstellung überhaupt zu ermöglichen. Diese dienen quasi als Bindeglieder

zwischen dem Menschen und der virtuellen Realität. Da virtuelle Objekte keine

physikalische Gegenständlichkeit besitzen, bedarf es auch zur Interaktion mit

ihnen spezieller Werkzeuge. Diese stellen Bindeglieder zwischen der virtuellen

Realität und den natürlichen Ausgabeschnittstellen (Finger, Hand, Sprache,

Gesten, Mimik etc.) dar. Auch bei den Eingabeschnittstellen eines MR-Systems

liegt die Problematik darin, dass eine Immersion erschwert wird, wenn sich der

Anwender zu sehr der Tatsache bewusst ist, dass er nicht unmittelbar, sondern

über Schnittstellen mit der virtuellen Umgebung kommuniziert. Wie bei den

Ausgabekomponenten der MR besteht deshalb auch bei den Eingabemedien

eines der primärem Ziele darin, die Handhabung so intuitiv wie möglich zu

gestalten und das Medium selbst in den Hintergrund treten zu lassen. Die

Eingabeschnittstellen bestehen immer aus Hardware. In den meisten Fällen wird

diese Hardware über direkten Kontakt mit dem Benutzer durch diesen

manipuliert. Beispiele hierfür sind die Maus, die Spacemaus, die Cubic Mouse

usw. Solche Eingabegeräte weisen spezielle zur Manipulation vorgesehene

Vorrichtungen auf, sei es eine Kappe, ein Ball oder Stäbe die sich in

Page 21: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

21

verschiedene Richtungen bewegen lassen. In jedem Fall aber führen

Manipulationen am Eingabegerät schließlich zu einer Manipulation am

Zielobjekt. Bei der Entwicklung solcher Eingabegeräte liegt die Schwierigkeit

beim auch als Mapping genannten Verfahren liegt darin, festzulegen welche Art

von Manipulation auf dem Eingabegerät zu welcher Art von Manipulation auf

dem (virtuellen) Zielobjekt führt. Die oben genannten Eingabegeräte erlauben

alle die gleichen Arten von Manipulationen auf Objekten, verlangen dafür aber

teilweise sehr unterschiedliche Arten von Manipulationen auf den Geräten

selbst.

Die verschiedenen Bedienungsmöglichkeiten der Geräte, sowie deren

Auswirkungen müssen vom Benutzer erst erlernt und verstanden werden. Daraus

ergibt sich das Problem, dass ein Interaktionsprozess mittels solcher

Eingabegeräte einer Immersion immer etwas hinderlich ist. Eine andere

Möglichkeit besteht daher darin, auf direkten Kontakt mit der

Eingabeschnittstelle zu verzichten. Im Bereich der Gesten- und

Spracherkennung wird versucht bestimmte Reaktionen des MR-Systems auf

Gestik, Mimik bzw. Sprache des Benutzers hervorzurufen, indem Kameras oder

Mikrofone Bewegungen bzw. Sprache des Anwenders erfassen und auf

bestimmte Gesten oder Laute hin analysieren. Anstatt ein virtuelles Objekt

mittels eines Eingabegerätes das mit der Hand gesteuert wird beispielsweise zu

greifen und durch den Raum zu führen, kann hier die reine Geste des Greifens

und Führens eines Gegenstandes ausreichend sein um die gewünschte Aktion zu

bewirken. Nachteil ist hier wiederum fehlendes haptisches Feedback, das ohne

direkten Kontakt mit entsprechender Hardware nicht realisiert werden kann. In

vielen Fällen müssen allerdings Aktionen durchgeführt werden, denen keine

eindeutige Geste zugeordnet werden kann, wie beispielsweise ein

Moduswechsel. Hier müssen dann wieder Gesten oder Sprache auf bestimmte

Funktionen gemappt werden, wodurch sich bei der Gestenerkennung wieder die

gleiche Problematik ergibt wie bei der Verwendung von Eingabegeräten wie

Space Ball oder Cubic Mouse.

Allerdings hat die Interaktion mittels Gestik einen entscheidenden Vorteil

gegenüber einer Interaktion mittels herkömmlicher Eingabegeräte: Da es eine

nahezu unbegrenzte Anzahl an möglichen Gesten gibt, die allein mit der Hand

ausgeführt werden können, können Gesten so gewählt werden, dass sie den

Page 22: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

22

Charakter der durchzuführenden Aktion bereits widerspiegeln. Dies erlaubt eine

intuitivere Eingabemöglichkeit, was wiederum den gesamten Interaktionsprozess

erleichtert.

Eine weitere Möglichkeit besteht in der Kombination aus Gestenerkennung und

dem Verwenden von herkömmlichen Eingabegärten wie einer Maus oder einem

Touchpad. Hier stellen die Eingabegeräte eine natürliche Begrenzung von

möglichen Gesten dar, indem sie beispielsweise die Gestenerkennung zur

Manipulation zweidimensionaler Objekte auch nur auf eine Gestenausführung in

der Ebene beschränken (Ein Beispiel dazu ist die Realisierung der zu dieser

Diplomarbeit gehörenden Aufgabenstellung des Versendens von Dokumenten

mittels einer Geste auf einem Touchpad innerhalb eines Netzwerkes. Näheres

dazu in 4.2 und Kapitel 6).

1.5 Anwendungsgebiete von Mixed Reality Systemen

Die Anwendungsmöglichkeiten von Systemen der Mixed Reality sind schon

heute äußerst zahlreich. Es ist zu erwarten, dass virtuelle Welten in der Zukunft

eine immer größere Rolle spielen werden. Das stete Ansteigen der

Leistungsfähigkeit von Mikroprozessoren und Grafikbausteinen wie

Grafikkarten und Displaysysteme, wird die Kosten für ein MR-System in

Zukunft auch für kleinere Firmen und Privatanwender erschwinglich werden

lassen. In den letzten Jahren wurde die MR immer sehr stark von großen

Unternehmenszweigen wie zum Beispiel der Automobilindustrie vorangetrieben.

Hier können Fahrzeuge bevor sie gebaut werden erst modelliert und

anschließend in einer Windkanalsimulation auf ihre aerodynamischen

Eigenschaften überprüft werden. Die Modelle werden dann solange getestet und

verbessert, bis ein optimales Ergebnis vorliegt.

Ein weiteres Feld in dem die MR bereits erfolgreich Anwendung findet ist die

Medizin: Das ARSyS Tricorder Projekt des Instituts für Medienkommunikation

(IMK) der Fraunhofer Gesellschaft in Sankt Augustin6 beispielsweise, stellt die

Realisierung eines Augmented Reality Systems zum Einsatz in der Mund-Kiefer-

Gesichtschirurgie dar. Hier sollen operative Eingriffe unterstützt werden. Solche

6 Beschrieben in [GTB+02]

Page 23: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

23

Eingriffe bestehen in der Mund-Kiefer-Gesichtschirurgie oftmals aus zwei

Schritten: dem Entfernen eines Tumors in Schädelbereich, sowie der

Knochenentnahme im Hüftbereich zur anschließenden Rekonstruktion des vom

Tumor zerstörten Schädelknochens. Das Augmented Reality System des ARSyS

Tricorder Projektes unterstützt den Chirurgen in beiden Schritten. Beim

Entfernen des Tumors kann dieser über eine durchsichtige Projektionsfläche die

sich über dem Patienten befindet visualisiert werden. Der Chirurg trägt dabei

eine Stereobrille, die die räumliche Darstellung des Tumors ermöglicht. Position

und Skalierung des virtuellen Tumorgewebes stimmen dabei mit der des echten

Tumors überein. Durch das Hervorheben des Tumors wird der Eingriff

erleichtert und die Risiken der Operation minimiert. Beim zweiten Schritt, der

Entnahme des Knochens aus der Hüftregion, kann das zu entnehmende

Knochenteil schon vor dem Eingriff in Größe und Ausrichtung in die

Entnahmestelle projeziert werden, so dass ein überflüssiges Maß an Entnahme

von Knochenmaterial durch den Chirurgen verhindert werden kann.

Mehr Informationen rund um die Thematik der Virtual Reality sind auch unter

[Phi03] und [Boh99] erhältlich.

Page 24: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

24

Kapitel 2

Office Of The Future

Abb. 2.1: Vision eines Office Of The Future aus [RWC+98]

Das vorliegende Kapitel, sowie das darauf folgende, wurden im Wesentlichen

aus [Gal03] übernommen. Um einen Bruch zum übrigen Text dieser

Ausarbeitung zu vermeiden, wurde der Originaltext an einigen Stellen

geringfügig geändert. Außerdem wurden Kürzungen vorgenommen, um

Wiederholungen zu vermeiden.

2.1 Motivation

Die Motivation für dieses Kapitel liegt darin, Wege zur Schaffung einer Office

Of The Future- Landschaft zu beleuchten. Da sich ein Office Of The Future

durch die Erweiterung durch virtuelle Hilfsmittel auszeichnet, ist zunächst eine

Page 25: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

25

Klärung der Bedeutung des Begriffs “virtuelles Hilfsmittel” nötig, um danach

aufzuzeigen, auf welche Weise solche in eine Büroumgebung integriert werden

können. Außerdem werden Techniken zur Interaktion mit virtuell erweiterten

Büroumgebungen besprochen und Projekte vorgestellt, welche die Zielsetzung

der Integration von virtuellen Hilfsmitteln haben.

2.2 Virtuelle Hilfsmittel

2.2.1 Definition

Mit virtuellen Hilfsmitteln sind computergenerierte Modelle gemeint, die

Arbeitsumgebungen zugeordnet sind und verschiedenste digitale Informationen

repräsentieren können. Die Integration als virtuelle Ergänzung einer

Arbeitsumgebung wird mittels geeigneter Ausgabe- und Interaktionstechniken

durch die Überlagerung der physikalischen Umgebung erreicht. Der Benutzer

erhält auf diesem Wege Informationen, die für ihn anderenfalls nicht über die

reale Umgebung erreichbar wären. Daten zur Beschreibung der virtuellen

Hilfsmittel werden in Datenbankarchiven verwaltet, die mit den Steuer- und

Grafiksystemen der virtuellen Umgebung gekoppelt sind. Eine Integration

solcher Hilfsmittel ist an vielen Orten, an denen Menschen ihre Arbeit verrichten

sinnvoll, um z. B. Informationen darzustellen, die das Arbeiten vereinfachen und

effektiver gestalten können.

2.2.2 Arten

Virtuelle Elemente, die als ergänzende Komponenten zur Hilfestellung in eine

Büroumgebung integriert werden, können sowohl in zwei- als auch in

dreidimensionaler Darstellungsform in die physikalische Umgebung eingebettet

werden. Bei der Erscheinungsform des virtuellen Hilfsmittels besteht lediglich

eine jeweilige Abhängigkeit von der zu erfüllenden Aufgabe in der Umgebung,

der es zugeordnet ist und den Anforderungen, die an die Interaktion mit dem

Page 26: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

26

Hilfsmittel gestellt sind. Die Verwendung einer zweidimensionalen

Darstellungsform bietet sich an, wenn die digitalen Informationen Daten

repräsentieren, die in der realen menschlichen Erfahrungswelt ebenso

zweidimensional wiedergegeben würden, also auf Oberflächen darstellbar sind.

Solche Daten sind z. B. Textdokumente oder Bilder, bei denen eine Darstellung

in zwei Raumdimensionen oft vollkommen ausreichend und etwas anderes auch

nicht sinnvoll ist.

Zur dreidimensionalen Repräsentation, die für den Menschen der realen

visuellen Wahrnehmungserfahrung der physikalischen Umwelt entspricht, eignet

sich im Prinzip jede Information. Im Fall der digitalen Erweiterung einer

Büroumgebung beschränkt sich dies auf dreidimensionale virtuelle Modelle von

Objekten oder Personen, die einem Arbeitsprozess zugeordnet werden können.

So kann der physikalischen Umgebung z. B. bei einem System für

Telekollaboration eine entfernte Person oder bei einem Konstruktionssystem ein

in der Entwicklung befindliches Objekt als dreidimensionales Modell

hinzugefügt werden.

2.2.3 Integrationsmethoden

Der Aufwand zur Integration virtueller Hilfsmittel in ein Büroszenario ist je nach

Art der digitalen Informationen unterschiedlich. So reicht bei einer Information,

die lediglich zweidimensional dargestellt werden soll, eine brauchbare

Oberfläche im Raum für Projektionen oder ein Bildschirm aus. Bei

dreidimensionalen Informationen ist die Verwendung einer geeigneten AR-

Display-Technologie notwendig, um die virtuellen Objekte in die physikalische

Umgebung einzubinden. Die zusätzlich eingeblendeten Informationen sind dabei

den Arbeitsprozessen der Benutzer angepasst und dienen zur Unterstützung der

jeweiligen Tätigkeiten. Zur Generierung und Wahrnehmung einer in drei

Raumdimensionen virtuell erweiterten Arbeitsumgebung gibt es verschiedene

Ansätze, die ihre Vor- und Nachteile haben.

Ein Weg ist die Implementierung einer virtuellen Umgebung, die sich auf das

visuelle Feld des Benutzers beschränkt und durch ein See-Through-HMD

Page 27: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

27

dargestellt wird. Ein solches am Kopf befestigtes Anzeigegerät, bei dem

durchsichtige Bildschirme direkt vor den Augen des Trägers angebracht sind, hat

durch die überlagernde Einblendung digitaler Informationen in die physikalische

Umgebung die Eignung als klassisches AR-Display. Ein wichtiger Vorteil dieser

Alternative ist, dass die virtuellen Objekte für jeden Benutzer aus einer korrekten

Perspektive dargestellt werden, was bei anderen Lösungen zum Problem werden

kann. Allerdings besteht der Nachteil, dass der Tragekomfort von HMDs eher

schlecht ist, wodurch die Interaktionsmöglichkeiten mit Personen und Objekten

der Umgebung begrenzt werden.

Eine Alternative ist die Integration der virtuellen Hilfsmittel durch ein

Projektionssystem, bei dem zur Wahrnehmung von Stereobildern das Tragen

von aktiven Shutterbrillen oder passiven Polarisationsbrillen nötig ist. Im

Unterschied zu der HMD Lösung werden die virtuellen Objekte hier direkt in die

Umgebung des Benutzers integriert und nicht nur in dessen visuellem Feld

angezeigt. Die ideale Eignung von Projektionssystemen zur Erzeugung

lebensgroßer Bilder kann als Vorteil betrachtet werden. Besteht die Motivation

darin, virtuelle Objekte auf die Fläche einer kompletten Büroumgebung zu

verteilen, die sich gewöhnlich über einen Raum erstreckt, bietet sich dafür ein

Spatially Immersive Display (SID), wie z. B. die CAVE, an. Ein SID hat

normalerweise Raumgröße und eignet sich dazu, sämtliche im Raum

befindlichen Oberflächen durch Front- oder Rückprojektionen als

Anzeigeflächen zu nutzen.

Ein Beispiel für den Einsatz eines SID ist das in Abschnitt 2.3.2 vorgestellte

Telekollaborations-Projekt The Office of the Future. In [RL01] werden

Projektionssysteme, die zur virtuellen Erweiterung der physikalischen

Umgebung genutzt werden, als Spatially Augmented Reality bezeichnet.

Zur Umsetzung von Collaborative Virtual Environments (CVE), also virtuellen

Umgebungen die durch mehrere Personen genutzt werden können, eignen sich

sowohl See-Through-HMDs als auch Projektionssysteme. Das ist im Fall von

Büroumgebungen vorteilhaft, da dort in verschiedenen Situationen der Fall

auftreten kann, dass mehrere Personen an einem Arbeitsprozess teilnehmen

möchten. Allerdings besteht bei Projektionssystemen im Gegensatz zur

Verwendung von HMDs der Nachteil, dass nur für einen Beobachterpunkt im

Raum eine korrekte perspektivische Sicht geliefert werden kann. Dieser Nachteil

Page 28: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

28

kann abgeschwächt werden, indem das System eine Umschaltung der

Perspektive implementiert, die Benutzer verwenden können um selbst die

richtige Ansicht der virtuellen Szene zu erhalten. Doch auch so kann das System

zur gleichen Zeit nur einem Benutzer die richtige Perspektive liefern. Sollen nur

bestimmte Raumkomponenten der Umgebung virtuell erweitert werden, kann

dies durch direkten Einbau von Displaytechnologien in die Raumkomponenten

gelöst werden. Beispiele für die virtuelle Erweiterung von Raumkomponenten

sind die in Abschnitt 2.3.1 vorgestellte Roomware oder der OfuturO Tisch

(Kapitel 3). Aufgrund der Verwendung von Rückprojektionen zählt OfuturO zu

den Projektionssystemen.

2.3 Projekte

Im folgenden Teil werden Ansätze präsentiert, die mit jeweils verschiedenen

Zielsetzungen Büroumgebungen durch die Integration von virtuellen

Komponenten funktionell aufwerten. Zu Projekten dieser Art ist neben den hier

vorgestellten auch das in Kapitel 3 behandelte Mixed Reality Conferencing

System zu zählen.

2.3.1 Roomware for Cooperative Buildings

Roomware for Cooperative Buildings ist ein Projekt am Integrated Publication

and Information Systems Institute der Fraunhofer Gesellschaft. In [SGH98]

werden die Konzepte Cooperative Building und Roomware vorgestellt, die die

Integration von realen, physikalischen architektonischen Räumen und virtuellen,

digitalen Informationsräumen verfolgen.

Der Antrieb des Projekts liegt in der Annahme, dass die Anforderungen an

Arbeit und Kooperation in Firmen zukünftig steigen werden, da zwar

Arbeitsinhalte und -prozesse bereits signifikant von der Informations- und

Page 29: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

29

Kommunikationstechnologie verändert wurden, aber das Design von

Arbeitsumgebungen sich nicht dementsprechend weiterentwickelt hat.

“In the future, work and cooperation in organizations will be characterized by a

degree of dynamics, flexibility and mobility that will go far beyond many of

today’s developments and examples.” [SGH98]

Das Ziel ist also die Entwicklung gleichwertig dynamischer, flexibler und

mobiler Arbeitsumgebungen. Das Konzept Cooperative Building kombiniert

reale mit virtuellen Welten und bietet so kooperative Arbeitsplätze, die die

Erweiterung von menschlicher Kommunikation und Zusammenarbeit

unterstützen. Personen sollen in einem kooperativen Gebäude miteinander

kommunizieren, Informationen teilen und unabhängig von der physikalischen

Position zusammen arbeiten können. Das Gebäude selbst soll dazu in der Lage

sein zu (re)agieren, sobald es bestimmte Bedingungen identifiziert hat. Es kann

Probleme analysieren, Verbindungen zwischen Personen herstellen und Hilfe

anbieten sowie kontextabhängige Informationen, die auf dem Wissen von

vergangenen und derzeitigen Zuständen und Aktionen basieren, zur Verfügung

stellen.

Abb. 2.2: Roomware Komponente CommChair aus [SGH98]

Mit Roomware sind durch Computer erweiterte Gegenstände in Räumen

gemeint. Stühle, Tische und die Wand sollen interaktive Geräte sein, die

Unterstützung für Kooperation und Interaktion durch eingebettete

Informationstechnologie bieten und die Erstellung, Bearbeitung und Präsentation

Page 30: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

30

von Informationen ermöglichen. Durch Team- oder Projekträume,

Präsentationseinrichtungen oder Informationshallen, in denen Roomware

Komponenten integriert sind, sollen flexible und dynamische Räume geschaffen

werden, die auch als cooperative landscapes bezeichnet werden.

Ein Beispiel für eine Roomware Komponente ist der in Abbildung 2.2 zu

sehende CommChair. In der gezeigten Variante dieses Armstuhls ist ein

Computer integriert (in einer zweiten Variante wird über eine Docking-Station

ein Laptop angeschlossen), durch den der Benutzer aufgrund der Vernetzung von

Roomware Komponenten Zugang zu einem geteilten virtuellen Arbeitsraum

erhält, in dem er vom CommChair aus Daten manipulieren kann.

2.3.2 The Office of the Future

Die in Abbildung 2.1 gezeigte Vision eines Office Of The Future ist eine

konzeptionelle Skizze, die im Rahmen eines Projekts an der University of North

Carolina entstanden ist, das den Namen The Office of the Future trägt und in

[RWC+98] beschrieben wurde. Die Motivation besteht in der Entwicklung eines

3D-Systems zur Telekollaboration, durch das mit Hilfe von Darstellungs- und

Interaktionsmöglichkeiten, die der menschlichen Erfahrungswelt entsprechen,

ein verbesserter Immersionseindruck im Vergleich zu bereits verfügbaren 2D-

Systemen erreicht werden soll.

Die Problematik bei der zweidimensionalen Telekollaboration liegt darin, dass

den über ein solches System miteinander arbeitenden Personen oft nicht die

Interaktionsmöglichkeiten zur Verfügung stehen, die sie hätten, wenn sie sich im

selben Raum befänden. Außerdem ist es problematisch, dass Benutzer eines

solchen Systems dazu gezwungen sind, zwei so genannte separate Egocenter7

beizubehalten; eines in der lokalen Umgebung und ein anderes in der entfernten

Büroumgebung der Mitarbeiter.

Zur Umsetzung der 3D-Telekollaboration wird ein auf CAVE basierendes

Spatially Immersive Display (SID) in ein Büro eingebaut. Um eine nahezu

“natürliche” Arbeitsform (als ob man sich im gleichen Raum befände) zu

7 In [RWC+98] bezeichnet das Egocenter die Vorstellung davon, wo man sich und mit wem man sich an diesem Ort befindet.

Page 31: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

31

gewährleisten, ist die Darstellung von und die Interaktion mit entfernten

Mitarbeitern dreidimensional. Das lokale und das entfernte Büro werden

zusammengefügt, indem mittels Echtzeit-Bilderkennungstechniken

Informationen über die sichtbaren Oberflächen der Umgebungen (Wände,

Möbel, Personen) extrahiert und diese als 3D-Szene am entfernten Ort

rekonstruiert werden. Als SID wird dafür nahezu alles, das sich in der lokalen

Büroumgebung befindet, genutzt und die dreidimensionale Interaktion wird über

das Tracking der Hände der handelnden Personen umgesetzt.

Page 32: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

32

Kapitel 3

Die OfuturO Plattform

Abb. 3.1: OfuturO Tisch

3.1 Vorstellung

Bei der Betrachtung von Möglichkeiten zur Einbettung von virtuellen

Hilfsmitteln in Büroumgebungen wird in Abschnitt 2.2.3 unter anderem der

Ansatz zur virtuellen Erweiterung von Raumkomponenten beschrieben. Diese

bietet sich an, wenn Arbeitsprozesse, die sich nicht auf die Verwendung des

Page 33: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

33

gesamten Büroraums, sondern nur auf bestimmte Komponenten der Umgebung

beziehen, durch den Zugang zu digitalen Informationen unterstützt werden

sollen.

Zu diesem Zweck müssen Systeme geschaffen werden, die geeignete

Technologien zur virtuellen Erweiterung direkt in Raumkomponenten

integrieren. Ein solches System ist das in der Abteilung Virtual Environments

des Fraunhofer Instituts für Medienkommunikation (IMK.VE) in der

Entwicklung befindliche OfuturO8, das in Zukunft mittels integrierter MR/AR-

Displaytechnologie die Plattform für verschiedene tischbasierte Anwendungen

der Mixed Reality in Büroszenarien bieten soll.

3.2 Aufbau

Abb. 3.2: Konzeptionelle Skizze von OfuturO

8 Der Name OfuturO bezieht sich auf das Office Of The Future-Konzept und leitet sich von dem portugiesischen “O Futuro” ab, was übersetzt “Die Zukunft” bedeutet.

Page 34: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

34

Die OfuturO Plattform verfügt über geeignete Aus- und Eingabeschnittstellen,

die es bis zu drei Personen erlauben sowohl zwei- als auch dreidimensionale

digitale Daten zu betrachten und zu bearbeiten. Des Weiteren können

physikalisch entfernte Personen per Videoconferencing mit der Arbeitsgruppe

am OfuturO Tisch in Kontakt treten und so trotz der Entfernung an einer Sitzung

teilnehmen.

In Abbildung 3.2 wird der Großteil der Geräte dargestellt, die bei OfuturO zum

Einsatz kommen, um die gewünschte Arbeitsumgebung zu erzeugen und mit ihr

zu interagieren. Weitere Komponenten, welche dort zum Teil aufgrund der

gewählten Perspektive nicht dargestellt werden konnten, sind ein Spiegel und

Projektoren unterhalb des Tisches sowie eine RGB-Kamera9.

3.2.1 Tisch

Abbildung 3.1 zeigt den OfuturO Tisch kurz nach dem Bau, in einer Phase der

Entwicklung, in der noch keinerlei Display- oder Eingabevorrichtungen

integriert waren. Die Abmessungen des Tisches sind inklusive der seitlich

herausragenden Arbeitsflächen ca. 2,50 m x 3,50 m. Der Tisch ist mit vier

Plätzen ausgestattet, wovon einer als passiver Arbeitsplatz ausgelegt ist.

Die drei verbleibenden Plätze geben ebenso vielen Personen den vollen Umfang

an Interaktionsmöglichkeiten, um an einer OfuturO Sitzung teilzunehmen. Die

Teilnehmer können dort ihre tragbaren Computer anschließen und des Weiteren

über permanent am Arbeitsplatz installierte Eingabegeräte mit dem OfuturO-

System interagieren. Ein solcher Arbeitsplatz ist in Abbildung 3.3 dargestellt.

9 Die auf Abbildung 3.2 nicht dargestellten Komponenten sind in Abbildung 3.4 bzw. Abbildung 3.5 zu sehen.

Page 35: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

35

Abb. 3.3: Arbeitsplatz mit Laptop und weiteren Eingabegeräten

3.2.2 Display

Die bei OfuturO verwendeten Vorrichtungen zur Anzeige sind von den

Anforderungen an das System bestimmt. Zum einen soll die Möglichkeit

bestehen zwei- und dreidimensionale Daten darzustellen und mit ihnen zu

arbeiten und zum anderen sollen auch entfernte Personen mittels

Videoconferencing an einer Arbeitssitzung teilnehmen können. Sämtliche in

Abbildung 3.4 aufgezeichneten Anzeigegeräte sowie weitere zur Anzeige

benötigte Vorrichtungen sind mit dem Grafikcomputer verbunden, der die

zentrale Systemkomponente für die Verarbeitung von Aus- und Eingaben ist.

Abb. 3.4: Display Vorrichtungen

Page 36: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

36

Videoconferencing Display

Der zum Videoconferencing genutzte Plasmabildschirm hat eine

Bildschirmdiagonale von ca. 1,25 m. Er wird zur Darstellung von Videobildern

entfernter, auf diese Weise an einer Arbeitssitzung teilnehmender Personen

eingesetzt, wobei durch eine in das OfuturO System integrierte Kamera10 das

Videobild der Arbeitsgruppe am OfuturO Tisch aufgenommen wird. Die auf

beiden Seiten durch die Videoaufnahme anfallenden Datenströme werden über

das Internet ausgetauscht, wodurch nahezu eine Live-Präsenz möglich ist.

MR Display

Die über OfuturO dargestellten Daten können entweder zwei- (Dokumente,

Bilder) oder dreidimensional (3D-Objekte) sein. Die Ausgabe der Daten erfolgt

mit bis zu vier Projektoren, die unterhalb des Tisches platziert sind. Dabei

werden zweidimensionale Daten durch Monoprojektionen und dreidimensionale

Daten durch Stereoprojektionen visualisiert. Um eine höhere Auflösung zu

erreichen wird das Projektionsbild aus Halbbildern zusammengesetzt, wobei

jeweils zwei Projektoren die Darstellung eines Halbbildes übernehmen11. Die

höhere Auflösung ist speziell bei Dokumenten notwendig, da diese

hochaufgelöst dargestellt werden müssen um noch lesbar zu sein. Die

Projektoren sind an einem beweglichen Metallgestell befestigt und daher frei

justierbar. Sie zeigen auf einen 1,45 m x 1,30 m großen, schräg ausgerichteten

Spiegel, über den das ausgesendete Licht von unten auf die Projektionsfläche

umgeleitet wird. Dies geschieht um den Projektionsweg zu verlängern, der so

vom Projektor bis zur Projektionsfläche ca. 1,30 m beträgt.

Die Projektionsfläche ist eine in den Tisch eingelassene Platte, die aus einem

speziellen lichtdurchlässigen Material (PVC) besteht und deren Abmessungen 10 Die Videoconferencing-Kamera ist in der Konzeptions-Skizze in Abbildung 3.2 eingezeichnet. 11 Bei Monoprojektionen werden zwei Projektoren genutzt (einer pro Halbbild), bei Stereoprojektionen sind es vier (zwei pro Halbbild).

Page 37: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

37

1,48 m x 1,12 m sind. Durch die Verwendung dieser Spezialplatte können

virtuelle Objekte mit einer guten Farbgenauigkeit oberhalb der Platte dargestellt

werden. Im Falle der Anzeige dreidimensionaler Objekte auf der

Projektionsfläche benötigt der Betrachter zur räumlichen Wahrnehmung des

bereits von den Projektoren polarisierten Bildes eine Polarisationsbrille. Die

Darstellung der Perspektive muss dabei auf einen bestimmten

Konferenzteilnehmer ausgerichtet sein. Das bedeutet, dass jeweils nur einem

Teilnehmer zu einer Zeit eine korrekte Perspektive bei einer dreidimensionalen

Darstellung geboten wird.

3.2.3 Eingabegeräte

Jedes zur Interaktion mit dem OfuturO-System genutzte Gerät verfügt über eine

Verbindung zum Grafikcomputer12 (siehe Abbildung 3.5). Die Verbindung zu

den von den Benutzern verwendeten Laptops wird durch den Anschluss an einen

Netzwerk Switch hergestellt, der die Laptops in ein Netzwerk mit dem

Grafikcomputer integriert. Im Gegensatz zu den nicht fest installierten Laptops,

die bei jeder Sitzung neu angeschlossen werden, sind die weiteren Eingabegeräte

permanent mit dem System verbunden. Pro Arbeitsplatz sind jeweils eine

Spacemaus sowie ein Touchpad angebracht, deren Verbindung zum

Grafikcomputer durch einen USB Hub realisiert ist. Außerdem ist eine RGB-

Kamera angeschlossen, die zur Erkennung von Mustern und Gesten eingesetzt

wird.

12 In Abbildung 3.5 wird der Grafikcomputer als Visualisation Server bezeichnet.

Page 38: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

38

Abb. 3.5: Eingabegeräte

Die Spacemaus kann aufgrund von sechs Freiheitsgraden zur räumlichen

Steuerung verwendet werden. Somit lassen sich Objekte im Raum platzieren und

in ihm ausrichten, d. h. es können Translationen auf den und Rotationen um die

drei Raumachsen ausgeführt werden. Das Touchpad wird verwendet um

visualisierte zweidimensionale Daten auf der Projektionsfläche zu bewegen.

Darüber hinaus können auf dem Touchpad Gesten ausgeführt werden mit deren

Hilfe visualisierte Daten zwischen den einzelnen Konferenzteilnehmern

verschickt werden können. Die Eingabeverarbeitung mit Hilfe von Spacemaus

und Touchpad innerhalb der OfuturO-Umgebung, wird in Kapitel 4 ausführlich

vorgestellt.

3.3 Software

Um die in die OfuturO Plattform integrierte Hardware zur Erzeugung einer MR-

Umgebung nutzen zu können, ist die Verwendung eines Software-Systems

notwendig, das speziell auf die Erstellung interaktiver virtueller Umgebungen

ausgerichtet ist. Dazu wird Avango, ein Entwicklungssystem für virtuelle

Umgebungen eingesetzt, das im folgenden Abschnitt vorgestellt wird.

Page 39: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

39

Avango

Das Software Framework Avango wird seit 1996 in der Abteilung Virtual

Environments des Fraunhofer Instituts für Medienkommunikation (IMK.VE)

entwickelt [IMK03] und dient zur Erstellung verteilter, interaktiver VE

Anwendungen. Es unterstützt eine Vielzahl von Displaykonfigurationen und

Eingabegeräten, zu denen z. B. unterschiedliche Trackingsysteme oder 3D

Interaktionsgeräte zählen. Um so viele menschliche Sinne wie möglich

anzusprechen, kann zur Ausgabe Spezialhardware, wie Vibrationsböden,

Duftzerstäubungssysteme oder 3D-Soundsysteme, verwendet werden. Die in

[Goe01] aufgezählten Anforderungen an ein solches Entwicklungssystem für

virtuelle Umgebungen sind: Performance, Flexibilität, schnelle

Anwendungsentwicklung, Erweiterbarkeit und Portierbarkeit.

Als Basis dient das OpenGL Performer Toolkit der Firma SGI. Darauf baut das

objektorientierte Avango Framework auf, das eine Programmierschnittstelle

(API) in der Sprache C++ zur Verfügung stellt und die Erstellung von

anwendungsspezifischen Klassen erlaubt. Zusätzlich zur C++ API bietet Avango

eine vollständige Anbindung der Interpretersprache Scheme, von der aus alle

high-level Avango Objekte erstellt und manipuliert werden können. Komplexe

und performance-kritische Funktionalitäten werden durch Ableitungen und

Erweiterungen bestehender Avangoklassen in C++ implementiert, während die

typische Avango Anwendung selbst aus einer Sammlung von Schemeskripten

besteht, die Avango-Objekte instanziieren, ihre Methoden anwenden, Werte von

Feldern setzen und die Beziehungen zwischen Objekten definieren. Die

Komponenten der Avango Entwicklungsumgebung werden in Abbildung 3.6

dargestellt.

Abb. 3.6: Avango Entwicklungsumgebung

Page 40: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

40

Das auf dem Scene Graph13 Konzept aufbauende Programmiermodell von

Avango wird in [Tra98] beschrieben. Die C++ API erlaubt die Definition zweier

verschiedener Kategorien von Objektklassen; Nodes bieten eine objektorientierte

Scene Graph API, die die Repräsentation und die Darstellung komplexer

Geometrien ermöglicht, während Sensors Avango’s Schnittstellen zur realen

Welt sind und benutzt werden, um externe Gerätedaten in eine Anwendung zu

importieren. Alle Avango-Objekte werden als so genannte Fieldcontainer

bezeichnet, welche den Status von Objekten als eine Sammlung von Feldern

repräsentieren.

3.4 Anwendungen

In Zukunft soll die OfuturO Plattform als Grundlage für diverse tischbasierte

MR-Anwendungen dienen. Die noch in der Entwicklung befindliche Prototyp-

Anwendung ist das in nächsten Abschnitt vorgestellte MR Conferencing System.

Noch in der Planungsphase befindet sich als weitere Anwendung eine

Mindmapping14 Software, die als Tangible User Interface (TUI) realisiert

werden soll. Dabei werden die Ideen der Teilnehmer eines Brainstormings von

diesen auf digitalen Karten notiert, um danach in eine globale Darstellung

eingegliedert zu werden, die über die Projektionsfläche von OfuturO angezeigt

und für eine Gruppendiskussion freigegeben wird. Die Gruppenbewertung der

Ideen wird durch TUI phicons15 markiert, die neben der Projektion der Idee zu

platzieren sind und mit Hilfe einer Mustererkennungssoftware vom OfuturO-

System interpretiert werden können. Als Beispiel kann ein auf das phicon

gezeichnetes “Mülleimer”-Symbol für eine nicht akzeptierte, zu verwerfende

Idee stehen, ein “Daumen nach oben”-Symbol wäre ein Beispiel für eine

beizubehaltende Idee.

Im nächsten Schritt werden die Bewertungen vom System eingelesen und je

nach dem, wie sie ausgefallen sind, verworfen oder beibehalten. Eine

tiefergehende Beschreibung der Mindmapping Anwendung für OfuturO findet 13Der Scene Graph ist eine baumartige Struktur welche die Beschreibung eines virtuellen Universums enthält. Dieses Modell wird auch bei anderen stand-alone APIs wie z.B. Java 3D [Mic03] verwendet 14 Eine Mindmapping Software assistiert bei der Sammlung und Gliederung von Ideen und Gedanken. 15 phicon = physical icon. In diesem Fall entspricht ein phicon einem Kärtchen auf dem ein der Bewertung entsprechendes Piktogramm aufgezeichnet ist.

Page 41: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

41

sich in [GKG+03]. Verwandte Projekte sind der DigitalDesk [Wel 93], der

KoKoBel [Fit 03] sowie der metaDESK [IU97a], [IU97b]

3.5 Der Mixed Reality Conferencing Prototyp

Durch die erweiterten Visualisierungs- und Interaktionsmöglichkeiten im

Bereich Mixed Reality ergeben sich für die als tischbasiertes System konzipierte

OfuturO Plattform zahlreiche Anwendungsmöglichkeiten zur Unterstützung von

Arbeitsprozessen im Bürobereich. Die Motivation für die Entwicklung der

Prototyp-Anwendung für OfuturO, einem Mixed Reality Conferencing System,

ist die Nutzung der angebotenen erweiterten Darstellungs- und

Interaktionsmöglichkeiten zur Schaffung eines verbesserten multimedialen

Konferenzszenarios.

An einer Konferenz nehmen Mitarbeiter im Rahmen von Firmenprojekten teil,

denen es um die Besprechung von Arbeitsergebnissen oder die Vorstellung von

Ideen und Konzepten geht. Durch ein traditionelles Konferenzszenario wird in

der Regel ein ganzer Meetingraum belegt, in dem neben einem Konferenztisch,

um den sich die Teilnehmer versammeln, ein Projektor enthalten ist, der sich für

die Präsentation von Folien oder elektronischen Dokumenten eignet, die auf eine

Wandfläche projeziert werden. Präsentationen finden in der Form eines Vortrags

statt, den die vortragende Person zunächst zu Ende führt, bevor im Anschluss

eine Besprechung mit den Zuhörern folgt, in der Fragen gestellt und

Verbesserungsvorschläge angebracht werden. Sollten aufgrund der Diskussion

Änderungen an digitalen Inhalten der Präsentation notwendig werden, so fehlen

oft die Mittel diese unmittelbar innerhalb der Konferenz umzusetzen.

Die Änderungsvorstellungen werden stattdessen an den zuständigen Mitarbeiter

weitergegeben, der diese zu einem späteren Zeitpunkt an seinem gewöhnlichen

Arbeitsplatz implementiert. Damit die Zuhörer die Auswirkungen von

Änderungen begutachten können, ist auf diese Weise eine weitere Präsentation

nötig, in der der aktualisierte Inhalt vorgestellt wird. Die Nachteile der

traditionellen Konferenzumgebung sind:

Page 42: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

42

- Die Darstellungsmöglichkeiten sind auf zweidimensionale Informationen

beschränkt und eignen sich daher für Dokumente und Bilder, aber nicht für

dreidimensionale Objektmodelle.

- Durch das eingesetzte Projektionssystem besteht ein hoher Platzbedarf, in der

Regel wird ein ganzer Meetingraum belegt. Aufgrund fehlender

Interaktionsmöglichkeiten können Änderungsvorstellungen an digitalen

Präsentationsinhalten oft nicht unmittelbar umgesetzt werden.

Der Anspruch des Mixed Reality Conferencing Prototypen ist die Entwicklung

eines Konferenzkonzepts, das keinen der aufgezählten Nachteile enthält. Die

Reduzierung des Platzbedarfs wird durch die Basierung auf der OfuturO

Plattform erreicht, da das direkt integrierte Rückprojektionssystem keinen

zusätzlichen Raum benötigt und so lediglich die Fläche eines großen

Arbeitstisches (2,5 m x 3,5 m) beansprucht wird. Daher kann eine solche

Konferenzumgebung anstatt einen separaten Raum zu belegen in einem

gewöhnlichen Büroraum untergebracht werden, der für weitere Aufgaben

nutzbar bleibt.

Abb. 3.7: Vergleich von Konferenzszenarien

Durch das zur Wiedergabe von zwei- als auch dreidimensionalen Informationen

geeignete Rückprojektionssystem werden die Darstellungsmöglichkeiten um die

Anzeige entsprechender Präsentationsdaten als dreidimensionale Objekte

erweitert. Die Darstellung von Präsentationsinhalten erfolgt im für alle

Teilnehmer gut einsehbaren Zentrum des OfuturO Tisches auf der dort

angebrachten Projektionsfläche.

Page 43: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

43

Die für Präsentationen bestimmten Daten bringen die Teilnehmer mit ihren

eigenen portablen Computern zur Konferenz mit, auf denen die

Präsentationsinhalte in Datenbankarchiven organisiert sind. Diese Laptops

werden an den OfuturO Arbeitsplätzen angeschlossen und damit untereinander

und mit einem Rechner, der das Visualisierungssystem steuert, vernetzt. Zur

Wiedergabe der Präsentationsdaten wird das OfuturO Projektionssystem mit den

Datenbankarchiven der Laptops kombiniert, indem die zur Präsentation

bestimmten Informationen an den Visualisierungsrechner weitergegeben werden.

Durch die Vernetzung der Laptops können Daten unter den Teilnehmern

ausgetauscht werden.

Abb. 3.8: Verbindung von Datenbankarchiven und Projektionssystem

Werden Präsentationsinhalte durch das OfuturO System visualisiert, so bestehen

verschiedene Möglichkeiten mit diesen zu interagieren und sie zu manipulieren.

Dabei werden die Laptop Computer der Teilnehmer als Interaktionskonsolen

verwendet, weitere Interaktionsmöglichkeiten bestehen durch die fest an den

OfuturO Arbeitsplätzen installierten Eingabegeräte, wie dem Touchpad zur

Interaktion mit zweidimensionalen und der Spacemaus zur Interaktion mit

dreidimensionalen Inhalten. Mit diesen Interaktionsmöglichkeiten können die

Teilnehmer die Darstellungsart der präsentierten Informationen beeinflussen,

Page 44: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

44

indem sie z. B. in Echtzeit die perspektivische Ansicht von einem

dreidimensionalen Modell ändern, um das Modell von allen Seiten zu

betrachten. Sollen Änderungen an den digitalen Inhalten vorgenommen werden,

können Präsentationsdaten auf Laptops transferiert werden, um sie dort mit einer

geeigneten Anwendung den Vorstellungen anzupassen und die angepasste

Version anschließend wieder dem Visualisierungssystem zu übergeben. Damit

besteht die Möglichkeit der direkten Manipulation von digitalen Daten

unmittelbar im Rahmen einer Konferenz. Des Weiteren vereinfacht das MR

Conferencing System die Aufbewahrung von Präsentationsinhalten, da die Daten

problemlos auf Wunsch in das eigene Datenbankarchiv integriert werden

können.

Zur Interaktion und zum Datenaustausch sollen auch Gesten genutzt werden,

denen das System entsprechende Befehle zuordnet. Diese Gesten können

entweder über die Eingabegeräte oder durch körperbezogene Aktionen der

Teilnehmer (in der Regel Handgesten) ausgeführt werden. Handgesten werden

dabei von einer RGB-Kamera aufgenommen und durch ein

Bildverarbeitungssystem interpretiert.

Um externe Partner mit einzubeziehen, die nicht lokal an der Konferenz

teilnehmen können, wird das OfuturO Videoconferencing Display verwendet.

Den externen Konferenzpartnern sollen dabei durch die Integration in das

Konferenznetzwerk die gleichen Möglichkeiten zur Interaktion und zur

Manipulation von Präsentationsinhalten zur Verfügung stehen.

Ein Nachteil des MR Conferencing Systems ist die Beschränkung auf drei

Arbeitsplätze durch die Vorgaben der OfuturO Plattform, da nur ebenso viele

Personen (abgesehen von externen Konferenzpartnern) an einer Konferenz

teilnehmen können. Aufgrund dieser Beschränkung eignet sich das System am

Besten zu einer Besprechung unter Spezialisten, die auch in einem kleinen

Personenkreis in der Lage sind zu einem guten Ergebnis zu kommen.

Die Entwicklung der Softwarebasis für das MR Conferencing System, durch die

die beschriebenen Möglichkeiten zur Visualisierung von Präsentationsinhalten

und zum Austausch der Daten realisiert werden, wird in [Gal03] ausführlich

dargelegt.

Page 45: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

45

3.5.1 Beschreibung eines Konferenzszenarios

Bei dem Ablauf einer Konferenz auf der Basis der MR Conferencing Prototyp-

Anwendung bestehen diverse Möglichkeiten für die Teilnehmer, um Daten zu

präsentieren oder untereinander auszutauschen. Die Mittel und Wege zur

Vorstellung und zum Austausch von Präsentationsinhalten werden in dem nun

folgenden Abschnitt beschrieben.

Zunächst verteilen sich die Konferenzteilnehmer auf die Arbeitsplätze von

OfuturO und schließen dort ihre Laptop Computer an ein Netzwerkkabel an.

Dies verbindet die Laptops sowohl untereinander als auch mit dem

Grafikcomputer der OfuturO Plattform, an dem das Projektionssystem

angeschlossen ist. Nun besteht eine Verbindung zwischen den

Datenbankarchiven, in denen auf den Laptops die Präsentationsinhalte verwaltet

werden und dem Visualisierungssystem von OfuturO (siehe Abbildung 3.8).

Diese Verbindung wird von der in [Gal03] beschriebenen Softwarebasis des MR

Conferencing Prototypen, der Visualisierungs- und Kommunikationsschnitt-

stelle, zur Weitergabe von digitalen Präsentationsinhalten an das

Projektionssystem genutzt. Die Software verfügt neben einer Schnittstelle zu

dem Datenbankarchiv auch über mehrere Schnittstellen zum Netzwerk und bietet

so die benötigten Transportwege für die Daten. Mit Hilfe der Software können

die Laptops nun als Interaktionskonsolen bei einer Konferenz verwendet werden,

da sämtliche den Teilnehmern zur Verfügung stehenden Optionen, um in eine

Präsentation einzugreifen, in der Software implementiert sind. Als weitere

Interaktionsgeräte befinden sich an jedem Arbeitsplatz eine Spacemaus sowie

ein Touchpad, die den Teilnehmern alternativ zur Verfügung stehen, um

Aktionen der Software auszulösen und so mit dem MR Conferencing System zu

interagieren.

Die Visualisierungs- und Kommunikationsschnittstelle besteht aus

verschiedenen Komponenten, die über alle Rechner des Netzwerks verteilt sind,

sowohl auf die Laptops als auch auf den Visualisierungsrechner. Auf den

Laptops steht den Teilnehmern eine grafische Benutzeroberfläche (GUI) zur

Verfügung, mit der sie sich am Konferenzsystem anmelden und über die sie

sämtliche Conferencing Funktionen abrufen können. Da in der GUI die

Schnittstelle zur Datenbank integriert ist, hat der Benutzer Zugriff auf

Page 46: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

46

Präsentationsdaten enthaltende Datensätze und kann so über die GUI die

gewünschten Informationen selektieren. Gewählte Daten kann er dann entweder

zur Präsentation freigeben oder mit anderen Teilnehmern austauschen; beides

geschieht, indem die Daten zu einer an die GUI angegliederten

Netzwerkschnittstelle weitergegeben werden. Die Software besteht neben der

GUI-Netzwerkschnittstelle aus einer weiteren Netzwerkkomponente, die in

einen Programmteil integriert ist, der auf dem Visualisierungsrechner ausgeführt

und als GVM Server bezeichnet wird. Die Abkürzung GVM steht für Global

View Manager, ein Oberbegriff für die Programmkomponenten, die über einen

Zugang zum Visualisierungssystem verfügen, worunter neben dem GVM Server

auch die GUI-Netzwerkschnittstelle fällt, welche den Namen GVM Interface

trägt. Dem auf der Seite des Visualisierungsrechners angesiedelten Programmteil

GVM Server sind einige wichtige Aufgaben des Konferenzsystems zugewiesen.

Er nimmt Präsentationsinhalte von dem GVM Interface entgegen, die visualisiert

werden können, indem der GVM Server eine geeignete Anwendung zur

Darstellung von Dokumenten, Bildern oder dreidimensionalen Daten startet, die

mit Hilfe des Projektionssystems wiedergegeben wird. Des Weiteren verwaltet

der GVM Server Informationen, die zur Koordination des Systems benötigt

werden, z.B. welche Präsentationsinhalte gerade dargestellt werden oder welche

Teilnehmer am System angemeldet sind. Abbildung 3.9 zeigt die Vernetzung der

Softwarekomponenten untereinander auf.

Abb. 3.9: Vernetzung der Softwarekomponenten

Im Rahmen einer Konferenz stehen den Teilnehmern verschiedene

Möglichkeiten zur Verfügung, Präsentationsinhalte weiterzugeben. Dazu finden

Page 47: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

47

Datentransfers zwischen den an das System angeschlossenen Rechnern statt, die

in drei Arten von Datenströmen unterteilt werden können:

- Zur Visualisierung von Präsentationsinhalten / Upload von Laptop zu

Visualisierungsrechner

- Übernahme und lokale Sicherung von Präsentationsinhalten!Download von

Visualisierungsrechner zu Laptop

- Zur direkten Datenweitergabe von Teilnehmer zu Teilnehmer ! Transfer von

Laptop zu Laptop

Wenn ein Teilnehmer die Absicht hat, der Gruppe Informationen aus seinem

Datenbankarchiv zu präsentieren, kann er diese unter Verwendung der GUI

selektieren und zur globalen Anzeige durch das Projektionssystem freigeben.

Die Daten werden nun in einen so genannten “Shared Workspace” (geteilten

Arbeitsraum) kopiert, in dem sich alle gerade zur globalen Anzeige freigegeben

Daten befinden. Dieser geteilte Arbeitsraum wird vom GVM Server verwaltet,

der in der Lage ist, den Typ (Dokument, Bild oder 3D Objekt) der über die

Netzwerkschnittstelle entgegen genommenen Daten zu identifizieren.

Zur Darstellung der Daten startet der GVM Server eine geeignete Anwendung,

die der Visualisierungsrechner über das Projektionssystem, global und für die

ganze Konferenzgruppe sichtbar, wiedergibt (Abbildung 3.10).

Abbildung 3.10: Visualisierung von Präsentationsinhalten

Der Zugriff auf gerade angezeigte Präsentationsinhalte ist den Teilnehmern

entweder möglich, indem sie deren Darstellung für zweidimensionale Daten mit

Hilfe des Touchpads oder für dreidimensionale Daten mit Hilfe der Spacemaus

beeinflussen (durch Translationen, Rotationen oder Skalierungen der

Page 48: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

48

dargestellten Informationen) oder, indem sie die Daten auf ihren Laptop

kopieren, um diese dort mit erweiterten Manipulationsmöglichkeiten bearbeiten

zu können.

Das Erstellen einer solchen Kopie erfordert den Download der Daten vom

Visualisierungsrechner auf den Laptop, der durch einen Datentransfer zwischen

dem GVM Server und dem GVM Interface erreicht wird (Abbildung 3.11).

Abb. 3.11: Download von Präsentationsinhalten

Wenn Informationen weitergegeben, aber nicht visualisiert werden sollen, weil

sie lediglich als “Präsentationsbeilage” verteilt werden oder weil sie eventuell

nicht für die Sichtung durch die gesamte Gruppe bestimmt sind, haben die

Teilnehmer die Möglichkeit, Daten direkt untereinander auszutauschen.

Ein solcher direkter Datentransfer findet zwischen zwei Laptops statt, genauer

gesagt werden die Daten von GVM Interface zu GVM Interface übertragen

(Abbildung 3.12).

Abb. 3.12: Direkter Transfer von Informationen

Die beschriebenen Operationen zum Austausch und zur Visualisierung von

Präsentationsinhalten werden entweder durch die Anwahl entsprechender GUI

Optionen mit dem Laptop oder über die Gestenerkennung auf dem Touchpad

realisiert. Zur Eingabe mit Hilfe des Touchpads werden bestimmte Gesten

interpretiert, denen bestimmte Aktionen zugeordnet sind.

Abgesehen von der am OfuturO Tisch arbeitenden Konferenzgruppe können

weitere Personen teilnehmen, die durch das OfuturO Videoconferencing Display

einbezogen und deren Workstations über das Internet mit dem System

verbunden werden. In Bezug auf die Austauschmöglichkeiten von Daten sind

Videoconferencing Teilnehmer gleichgestellt.

Page 49: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

49

3.5.2 Entwicklungsstand

Der MR Conferencing Prototyp ist nur zum Teil fertig gestellt und befindet sich

somit noch in der Entwicklungsphase. Die Softwarebasis, die Visualisierungs-

und Kommunikationsschnittstelle, ist zu einem großen Teil implementiert.

Dadurch können bereits Daten auf den zuvor beschriebenen Wegen unter

vernetzten Rechnern ausgetauscht und zur Wiedergabe an den

Visualisierungsrechner weitergegeben werden.

Die Hardwaregrundlage OfuturO befindet sich noch im Aufbau, eine große

Lücke lässt das zurzeit noch fehlende Projektionssystem offen. Aufgrund dessen

können die Präsentationsinhalte bis jetzt lediglich auf einem zweidimensionalen

Display wiedergegeben werden und die Möglichkeit der Darstellung

dreidimensionaler Objekte auf der Projektionsfläche ist noch nicht vorhanden.

Die Wiedergabe von Präsentationsinhalten geschieht derzeit durch das Öffnen

der Daten in einer jeweils dazu geeigneten Anwendung und der gleichzeitigen,

aber voneinander getrennten Darstellung. Dies ist nur eine Übergangslösung, da

die Daten nicht in verschiedenen separaten Anwendungen angezeigt werden

sollen, sondern in einer Anwendung, die alle Daten in einer virtuellen

Umgebung integriert. Dieses Vorhaben wird mit dem Software Framework

Avango realisiert werden.

Page 50: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

50

Kapitel 4

Die Eingabegeräte

In diesem Kapitel werden die Eingabegeräte beschrieben, die im Rahmen dieser

Diplomarbeit eingesetzt wurden. Dazu wird zunächst auf die Grundlagen

eingegangen, auf denen ein Einbinden von Interaktionsgeräten in die OfuturO-

Umgebung aufbaut. Anschließend werden die Vorgaben, die für die Auswahl der

Geräte aufgrund der Anforderungen an sie vorlagen, erläutert. Im Anschluss

daran, werden die Eingabegeräte selbst vorgestellt.

4.1 Grundlagen

Avango

Als Softwaregerüst zur Entwicklung virtueller Welten unterstützt Avango

selbstverständlich auch die Eingabe über Hardwaregeräte. Zu diesem Zweck

stehen Klassen bereit, die bereits grundlegende Voraussetzungen zum Auslesen

von Geräten und dem Weiterleiten ihrer Daten an die instanziierten Zielobjekte

erfüllen. Um vordefinierte Fähigkeiten für ein eigenes Eingabegerät zu nutzen

leitet der Entwickler seine Klasse von einer bereits bestehenden Avango-

Geräteklasse ab, beispielsweise die Klasse fpSerialDevice wenn es sich bei dem

anzusprechenden Gerät um ein serielles Gerät handelt, und erweitert diese

Klasse seinen Wünschen entsprechend.

Das Übertragen der von den Avango-Geräteklassen ausgelesenen Daten erfolgt

über einen speziellen Hintergrundprozess, den av-daemon. Zu diesem Zweck

muss der av-daemon separat gestartet und ihm die Instanzen der entsprechenden

Geräteklasse übergeben werden. Die Daten, die diese Klassen dann auslesen,

werden vom Dämon in ein spezielles Speichersegment übertragen, welches von

Objekten einer Avango-Applikation abgerufen werden kann. Der av-daemon

Page 51: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

51

dient somit quasi als Übermittler zwischen Geräten und der eigentlichen

Avango-Applikation.

Geräte unter Linux

Sowohl der av-daemon, als auch die Avango-Applikation, die bei Fertigstellung

der OfuturO-Umgebung zur Darstellung der virtuellen Objekte eingesetzt wird,

laufen auf dem Visualisierungsserver. Da auf diesem das Betriebssystem Linux

zum Einsatz kommt, müssen die Gerätedaten von den Avango-Geräteklassen aus

so genannten Gerätedateien ausgelesen werden. Gemäß der Linux/ Unix

Paradigmen wird sämtliche Hardware als Datei abstrahiert. Eine detaillierte

Darstellung, wie Gerätedateien programmiertechnisch behandelt werden können

findet sich unter anderem in [Her03].

Die Aufgabe des Datenübermittlers vom Gerät in die zugehörige Gerätdatei

übernimmt dabei ein so genannter Gerätetreiber, eine Softwareimplementation,

die den Übergang von der reinen Hardwarefunktionalität des Gerätes auf seine

Abstraktion als Datei darstellt. Eine genauere Erläuterung zur Rolle und

Funktionsweise von Gerätetreibern erfolgt im nächsten Kapitel.

Der Universal Serial Bus

Bei den einzubindenden Spacemäusen und Touchpads handelt es sich

ausnahmslos um USB-Geräte. Die Datenübertragung beim USBus findet über

eine Kommunikation des Geräts mit dem so genannten Host-Controller statt.

Der Host-Controller verwaltet die gesamte Kommunikation auf dem USBus,

wie das Senden und Empfangen von Daten, das Bereitstellen der benötigten

Bandbreite für die Übertragung und das Registrieren eines neuen Gerätes.

Hat der Host ein neues Gerät registriert, so wird eine Anfrage an das Gerät

versandt, die eine Datenstruktur Namens Gerätedeskriptor vom Gerät erfragt.

Die Datenstruktur enthält gerätespezifische Informationen, unter anderem die

Hersteller- und Produktnummer und die Information über die Anzahl der

Konfigurationen, die das Gerät zur Verfügung stellt. Jedes Gerät kann dabei eine

Page 52: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

52

bis mehrere mögliche Konfigurationen aufweisen. Mehrere Konfigurationen

können beispielsweise nötig sein wenn ein Gerät in verschiedenen Modi oder auf

unterschiedliche Arten betrieben werden kann. Die Konfigurations-

informationen16 sind in den Konfigurationsdeskriptoren enthalten, die der Reihe

nach für jede Konfiguration vom Host angefordert werden. Jede Konfiguration

kann ein bis mehre Interfaces enthalten. Jedes Interface kann ein spezielles

Feature innerhalb einer möglichen Gerätekonfiguration darstellen. Auch hier

werden die Informationen über das Interface wieder über einen Deskriptor, den

Interfacedeskriptor vom Host angefordert. Innerhalb eines Interfaces schließlich

können ein bis mehrere Kommunikationsendpunkte, auch endpoints genannt

enthalten sein. Ein endpoint ist der Speicherbereich in der Gerätehardware, in

den zu versendende oder empfangene Daten abgelegt werden und jede

Kommunikation des Hosts mit einem USB- Gerät findet letztlich über einen

endpoint statt.

Ein endpoint ist normalerweise nur entweder für die Datenübertragung vom Host

zum Gerät (Out- endpoint) oder vom Gerät zum Host (In- endpoint) ausgelegt.

Die Ausnahme bildet der endpoint mit der Nummer 0 über den jedes Interface

verfügen muss und der bidirektional arbeitet. Über diesen endpoint werden beim

Anschluss eines USB- Gerätes Daten mit dem Host ausgetauscht: Einerseits

kann der Host darüber die Information über das Gerät in Form der einzelnen

Deskriptoren beschaffen. Andererseits kann der Host aber auch selbst Daten an

das Gerät senden und dieses mit Hilfe dieser Daten konfigurieren. Auch die

endpoint-Informationen sind wieder in einem Deskriptor hinterlegt, so dass sich

insgesamt die in Abbildung 4.1 gezeigte Deskriptorhyrarchie ergibt.

16 Darunter befindet sich beispielsweise die Information ob es sich beim Gerät um ein selbst mit Strom versorgendes oder vom Bus mit Strom versorgtes Gerät handelt.

Page 53: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

53

Abb. 4.1: Deskriptorhyrarchie zur Beschreibung eines USB- Gerätes aus [Lin03]

Die Kommunikation zwischen Host und endpoint findet über Pipes17 statt. Dabei

werden vier verschiedene Arten von Nachrichtentransfers vom USB-Protokoll

unterstützt. Genaueres dazu, findet sich im Rahmen einer detaillierten

Beschreibung der USB-Technologie unter [Axe99].

Sämtliche Transfers werden programmiertechnisch mittels nur einer speziellen

Datenstruktur realisiert, dem USB Request Block, auch URB genannt. In dieser

Datenstruktur werden alle für eine Datenübertragung relevanten Informationen

abgelegt und anschließend dem USB-Subsystem bekannt gemacht. Nachdem der

URB dem USB-Subsystem übergeben wurde, kümmert sich dieses selbstständig

um alle damit verbundenen Datentransfers. Informationen zur Arbeit mit URBs

finden sich unter [Gui03], Informationen zu USB unter Linux erhält man unter

[Lin03].

4.2 Vorgaben

An erster Stelle der Überlegungen zur Einbindung der Eingabegeräte in die

OfuturO-Umgebung stand die Auswahl der geeigneten Eingabegeräte. Dabei

waren folgende Vorgaben für geeignete Eingabegeräte zum Ermöglichen von

Interaktionen in der OfuturO- Umgebung gegeben:

17 Eine Pipe ist ein logischer Datenkanal, der zur Datenübermittlung genutzt werden kann.

Page 54: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

54

• Zwei verschiedene Eingabegeräte, von denen eines in Form eines

Touchpads der Navigation in der Ebene und das andere in Form einer

Spacemaus der Navigation im Raum dienen soll.

• Auf den Touchpads sollen unterschiedliche Gesten ausgeführt werden

können, denen die bereits beschriebenen Aktionen des Versendens von

Dokumenten von einer Workstation zur anderen, sowie des Versendens

von zu visualisierenden Daten an den Visualisierungsserver zugewiesen

werden können.

• Um Unterscheidungen zwischen den Aktionen zur Bewegung von

visualisierten Daten und den speziellen Gesten machen zu können muss

das Touchpad mindestens einen Button aufweisen, um zwischen beiden

Kommandoarten umschalten zu können.

• Die Spacemaus soll zusätzlich mindestens zwei Buttons aufweisen um

den Eingabe- und Visualisierungsfokus einer der maximal zwei weiteren

Workstations zuweisen zu können.

• Beide Geräte sollen noch voll funktionsfähig sein, nachdem sie in den

Konferenztisch der OfuturO-Hardwareumgebung eingearbeitet worden

sind.

• Schließlich müssen sämtliche Geräte über einen USB-Stecker verfügen

damit sie über einen Hub am USB-Port des Visualisierungsservers

angeschlossen werden können.

4.2.1 Das Cirque USB Easy Cat Touchpad

Für das Touchpad wurde das USB Easy Cat Touchpad der Firma Cirque

gewählt. Das USB Easy Cat Touchpad von Cirque misst etwa 8,5 cm x 7 cm.

Die Sensorfläche bietet mit Dimensionen von 6 cm x 4.5 cm eine

Page 55: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

55

Bewegungsfläche von 27 cm2. Die Bewegungsfläche überschneidet sich dabei

mit einem schmalen Scrollfunktionsbereich entlang der rechten Seitenlinie,

sowie einem kleinen dreieckigen Bereich in der oberen linken Ecke. Dieser

Bereich schneidet sich zugleich auch mit dem Scrollfunktionsbereich.

Die Funktionen aller Bereiche sind bereits hardwaremäßig in die

Touchpadkonstruktion integriert. Neben der Sensorfläche weist das Touchpad

noch zwei Buttons auf, die sich unterhalb der Sensorfläche befinden. Beide

Buttons lassen sich leicht auch während einer Bewegungsausführung auf der

Sensorfläche mit dem Daumen bzw. kleinen Finger erreichen und bedienen.

Bei jeder Aktivierung einer Funktion sendet das Touchpad ein Datenpaket von 8

Bytes. Leichtes Berühren der Sensorfläche verändert die Werte für die X- und Y-

Koordinaten, die im 2. und 3. Byte angezeigt werden. Die Werte die dabei

übertragen werden stellen keine Absolutwerte dar, sondern zeigen die

Geschwindigkeit, mit der eine Geste über die Fläche geführt worden ist auf,

indem die Zeitintervalle interpretiert werden, innerhalb derer die Berührung

eines Sensorpunktes zum nächsten ausgeführt wurde. Bei den Werten handelt es

sich um vorzeichenbehaftete ganze Zahlen. Der Wertebereich liegt zwischen -

128 für sehr schnelle Bewegungen in Richtung des negativen Bereiches im

Koordinatensystem und +127 für sehr schnelle Bewegungen in Richtung des

positiven Bereiches im Koordinatensystem. Zweimaliges kurz hintereinander

erfolgendes Antippen der Touchpadoberfläche zeigt das Ausführen eines

Buttondruckes im 1. Byte des Datenpakets an, ebenso wie bei Betätigen eines

der beiden Buttons. Bei Betätigen des linken Buttons wird dabei eine 9

übertragen, Betätigen des rechten Buttons hat die Übertragung einer 10 zur

Folge. Wurden beide Buttons gleichzeitig gedrückt, zeigt das erste Byte dies mit

einer 11, wurde kein Button betätigt mit einer 8 als Wert an. Bei einer Imitation

eines Buttondruckes durch zweimaliges Tippen auf die Sensoroberfläche

entscheidet der Bereich in dem die Geste erfolgte darüber welcher Button als

gedrückt interpretiert wird:

Für den rechten Button steht die obere dreieckige Fläche, für den linken Button

die gesamte restliche Fläche zur Verfügung.

Das vierte Byte ist für die Scrollfunktion des Touchpads reserviert, der Wert

dieses Bytes beträgt 1 wenn nach oben gescrollt und -1 wenn nach unten

gescrollt wurde. Wird nicht gescrollt beträgt der Wert 0.

Page 56: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

56

Abb. 4.2: Easy Cat Touchpad von Cirque

4.2.2 Die Magellan Spacemaus Plus

Für die Spacemaus wurde die Magellan Spacemaus Plus der Firma LogiCad3D

GmbH gewählt. Die Magellan Spacemaus Plus ist eine Entwicklung des

Deutschen Zentrums für Luft- und Raumfahrt und besteht aus einer ergonomisch

geformten Auflagefläche für die Hand und einer darauf angebrachten ca. 2,5 cm

hohen Kappe mit einem Durchmesser von etwa 6 cm. Die Kappe ersetzt dabei

den Control Ball, einen kleinen Gummiball der zur Steuerung bei den

Vorgängern der Spacemaus Plus eingesetzt wurde. Den Grund für das

Bevorzugen einer Kappe anstelle eines Balles zur Steuerung von virtuellen

Objekten im Raum gibt der Vertreiber der Spacemaus Plus, die LogiCad3D

GmbH selbst wie folgt an18:

“As Magellan/ SPACE MOUSE is the legal successor of DLR’s (German

Aerospace Research Establishment) former, worldwide patented control ball, the

question arises occasionally, why a cap has replaced the original ball form. The

answer is based on extensive ergonomic studies. We found out that for optimally

operating a ball, the palm area is not used either, but preferably only the finger

tips. So it is no disadvantage that the flat cap design makes it impossible to

enclose the cap firmly with the hand’s inner surface; on the contrary the flat cap

allows the human hand to rest on the table in a natural and non-fatiguing,

relaxed way, and to use three or four finger tips spread around the cap to

18 Siehe auch [Log99], Seite 5.

Page 57: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

57

slightly shift and twist it. Of course it does not matter wheather the right or left

hand is used, and of course no wrist or even shoulder movements are needed.”

Tatsächlich lässt sich die Kappe sehr leicht nur mit den Fingerspitzen dirigieren.

Sie ist dazu an der Oberseite abgeflacht und besitzt Ausbuchtungen an der

rechten und linken Vorderseite, die einen verbesserten Halt für die führenden

Finger ermöglichen. Rechts und links von der Kappe befindet sich außerdem

jeweils ein abgeflachter länglicher Button. Diese Buttons sind so platziert, dass

sie vom Daumen bzw. kleinem Finger der Hand benutzt werden können,

während diese gerade die Kappe führt. Sie sind daher möglicherweise

prädestiniert für die Funktion eines Moduswechsels, der während einer

Bewegungsausführung erfolgen soll ohne den Arbeitsablauf zu unterbrechen.

Oberhalb der Kappe befinden sich auf der Auflagefläche noch neun weitere

Buttons die in zwei Querreihen angeordnet sind. Von den neun Buttons sind acht

von eins beginnend durchnummeriert, der neunte trägt ein Sternsymbol und ist

somit als Sonderbutton ausgezeichnet. Alle Buttons sind sowohl abrufbar (die

Funktion der Buttons ist also frei programmierbar) haben aber bereits auch eine

hardwaremäßig implementierte Funktion. Jede dieser Funktionen wird dabei

durch Kombination des Drucks auf den Sonderbutton mit einem der acht

Auswahlbuttons aktiviert. Die Funktionen die in der Hardware der Spacemaus

Plus implementiert sind, werden im Folgenden kurz aufgezeigt19:

Sonderbutton kombiniert mit erstem Auswahlbutton:

Die Datenübermittlung für die Translationen wird unterdrückt bzw. eingeschaltet

(Voreinstellung ist eine eingeschaltete Translationsdatenübermittlung).

Sonderbutton kombiniert mit zweitem Auswahlbutton:

Die Datenübermittlung für die Rotationen wird unterdrückt bzw. eingeschaltet

(Voreinstellung ist eine eingeschaltete Rotationsdatenübermittlung).

19 Siehe auch [Log99], Seite 14

Page 58: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

58

Sonderbutton kombiniert mit drittem Auswahlbutton:

Der Dominant Modus wird aktiviert bzw. deaktiviert. Im Dominant Modus

werden feine Bewegungen an der Kappe ignoriert. (Voreinstellung ist ein

deaktivierter Dominant Modus).

Sonderbutton kombiniert mit viertem Auswahlbutton:

Die Translations- und Rotationswerte werden auf Null gesetzt.

Sonderbutton kombiniert mit fünftem Auswahlbutton:

Der Sensibilitätswert für die Translationsbewegungen wird jedes Mal beim

Drücken dieser Kombination um eins erhöht. Der Wert kann 7 nicht

überschreiten. Ein weiterer Versuch den Wert zu erhöhen wenn er bereits auf 7

gesetzt ist lässt ihn wieder auf 0 zurückfallen (Voreinstellung ist ein

Sensibilitätswert von 0).

Sonderbutton kombiniert mit sechstem Auswahlbutton:

Der Sensibilitätswert für die Rotationsbewegungen wird jedes Mal beim

Drücken dieser Kombination um eins erhöht. Der Wert kann 7 nicht

überschreiten. Ein weiterer Versuch den Wert zu erhöhen wenn er bereits auf 7

gesetzt ist lässt ihn wieder auf 0 zurückfallen (Voreinstellung ist ein

Sensibilitätswert von 0).

Sonderbutton kombiniert mit siebtem Auswahlbutton:

Der Sensibilitätswert für die Rotationsbewegungen (Nullradiuswert) wird jedes

Mal um eins erhöht. Erreicht der Wert 15 fällt er bei weiterem

Erhöhungsversuch zurück auf 0 (Voreinstellung ist ein Nullradiuswert von 8).

Sonderbutton kombiniert mit achtem Auswahlbutton:

Die Sensibilitätswerte für die Rotationen und Translationen werden auf ihre

voreingestellten Werte zurückgesetzt, was bedeutet, dass der

Translationssensibilitätswert auf 0 und der Rotationssensibilitätwert auf 8 gesetzt

werden.

Page 59: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

59

Jede aktivierte Funktion wird von der Spacemaus Plus durch einen Doppelten

Signalton rückgemeldet. Das Ausschalten einer Funktion wird dagegen durch ein

einfaches Signal bestätigt. Die Sensibilitätswerte bestimmten das Maß in dem

sich eine Bewegung der Kappe auf die Bewegungsdaten auswirkt. Ein

Sensibilitätswert von 0 bewirkt lineares Ansteigen der Werte mit Druck auf die

Kappe. Bei Erhöhen des Sensibilitätswertes verschiebt sich dieses Verhältnis bis

zu einem quadratischen Ansteigen der generierten Bewegungswerte.

Die Kappe der Spacemaus erlaubt Bewegungen in sechs Freiheitsgraden, indem

sie sich um jeweils drei Achsen drücken, ziehen und drehen lässt. Dabei ist nur

ein ganz leichtes Führen der Kappe in die entsprechende Richtung nötig. Druck

nach rechts generiert positive X-Werte, deren Höhe der Stärke des Druckes

entsprechen. Druck nach links generiert negative X-Werte. Druck nach vorne

erzeugt negative Z-Werte, Druck nach hinten positive. Die Y-Werte werden

durch Niederdrücken der Kappe (negative Werte) bzw. durch hochziehen

(positive Werte) generiert. Rotationswerte werden erzeugt, sobald die Kappe um

eine der Achsen gedreht wird. Ein Drehen der Kappe im Uhrzeigersinn um eine

der Koordinatenachsen erzeugt positive Werte, ein Drehen der Kappe entgegen

dem Uhrzeigersinn, um eine der Koordinatenachsen, erzeugt negative Werte.

Der Drehsinn wird dabei relativ zur positiven Ausrichtung der

Koordinatenachsen bestimmt. Die Abbildung 4.3 unten zeigt die Spacemaus mit

ihren drei Bewegungsachsen auf. Die Pfeile zeigen dabei immer in die positive

Richtung der jeweiligen Achse.

Durch die große Beweglichkeit der Kappe sind gleichzeitige Bewegungen aus

mehreren Translationen, Rotationen oder Kombinationen aus beiden, möglich.

Nach jeder Aktion kehrt die Kappe wieder in ihre Ausgangsposition zurück.

Damit die Spacemaus Plus mit einer Hand bedient werden kann und bei

stärkeren Bewegungen an der Kappe nicht selbst mit verschoben wird, wurde

mit Hilfe einer Metallplatte auf ihrer Unterseite für ein ausreichendes Gewicht

gesorgt.

Die USB-Version der Spacemaus Plus verschickt bei jeder Aktion, unabhängig

davon ob es sich um einen Buttondruck oder eine Kappenbewegung handelt,

eine Datenfolge von 14 Bytes. Die 14 Bytes werden zu zwei Paketen verschickt,

von denen das erste 8 und das zweite die restlichen 6 Bytes enthält20. Die

Page 60: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

60

Bedeutung der Bytes teilt sich wie folgt auf: Die ersten beiden Bytes

identifizieren den Button der gedrückt wurde. Für die acht Auswahlbuttons sind

dies die Werte 1, 2, 4, 8, 16, 32, 64, 128. Die Zuordnung erfolgt von 1 für den

ersten, bis zu 128 für den achten Auswahlbutton. Der Wert 256 ist dem

Sonderbutton und die Werte 512 und 1024 sind den links und rechts neben der

Kappe befindlichen Buttons zugeordnet. Ein Wert von 0 hingegen zeigt an, dass

kein Button betätigt wurde. Die nächsten drei Bytepaare geben die Werte für die

X-, Y- und Z-Translationen an. Die letzten drei Bytepaare stehen für die

Rotationen um die X-, Y- und die Z-Achse. Alle Bytepaare müssen dabei immer

als vorzeichenbehaftete ganze Zahlen interpretiert werden. Der Wertebereich der

Zahlen für die Rotationen und Translationen liegt zwischen -500 und +500.

Abb. 4.3: Magellan Spacemaus Plus mit ihren 6 Freiheitsgraden

20 Die Spacemaus Plus kann über ihren endpoint, nur 8 Byte Daten auf einmal schicken.

Page 61: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

61

Kapitel 5

Die Integration der Eingabegeräte in

OfuturO

Im Folgenden wird beschrieben, wie die in der Einleitung erläuterte, erste

Teilaufgabe gelöst wurde. Dabei werden zuerst die Überlegungen beschrieben,

die zu der Lösung führten. Die Lösung, die in Form eines Kerneltreibers erfolgt,

wird im Anschluss an eine kurze Einführung in die Thematik der USB-

Kerneltreiber unter Linux vorgestellt. Dabei werden sowohl die

programmiertechnische Umsetzung, als auch die Probleme beschrieben, die

diese mit sich führt.

5.1 Analyse der Problemstellung

Bei den Überlegungen zur Realisierung einer Lösung für die erste Teilaufgabe,

die das Einbinden der Eingabegeräte Spacemaus und Touchpad in die

Umgebung von OfuturO vorsieht, tat sich zunächst das Problem auf, dass bis

zum heutigen Zeitpunkt (September 2003) noch kein Linuxtreiber für die USB-

Version der Spacemaus vorliegt. Das Cirque Easy Cat Touchpad läuft dagegen

auch mit dem gewöhnlichen USB-Maustreiber usbmouse.

Die LogiCad3D GmbH von der die Spacemäuse für das OfuturO-Projekt

bezogen wurden, bietet Linuxtreiber derzeit nur für die serielle Version der

Spacemaus bzw. für ihre USB-Version unter Windows an. Ein passender

Gerätetreiber ist aber eine Grundvoraussetzung dafür, dass Daten die die

Hardware an den Computer schickt, überhaupt abgefragt werden können, da es

Aufgabe eines Gerätetreibers ist, den Datenfluss von der Hardware zur

Gerätedatei bzw. von der Gerätedatei zur Hardware zu steuern.

An erster Stelle stand also das Programmieren eines Kerneltreibermoduls für die

Spacemaus, den SpacemausPlus-Treiber. Der Treiber übernimmt die Aufgabe,

Page 62: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

62

Daten die von der Spacemaus geschickt werden über eine Gerätedatei zugänglich

zu machen. Die Gerätedaten werden dabei in eine Gerätedatei umgeleitet, deren

Minornummerierung das jeweilige Gerät identifiziert. Zu jeder Spacemaus muss

daher eine eigene Gerätedatei angelegt und ausgelesen werden.

Nachdem der SpacemausPlus-Treiber vorlag, führten die Überlegungen zu einer

Realisierung der Eingabe mit Hilfe von Spacemaus und Touchpad über einen

Eingabefokus, zu einer grundlegenden Designentscheidung bei der

Implementation der endgültigen Lösung:

Spacemaus- und Touchpadgeräte sollten paarweise logisch miteinander

verknüpft werden. Da sich der Eingabefokus stets auf ein Gerätepaar und nie auf

ein einzelnes Gerät bezieht, soll die Behandlung von Gerätepaaren anstelle von

einzelnen Geräten, die Implementierung und den Wechsel des Eingabefokus’

erleichtern. Zudem kann ein unnötiger Datenfluss verhindert werden, indem vom

Treiber nur die Daten der Geräte an die Gerätedateien übertragen werden, die

derzeit den Eingabefokus besitzen. Alle anderen Gerätedaten sind für die

auslesende Avango-Applikation ohne Bedeutung.

Zu diesem Zweck wurde der SpacemausPlus-Treiber soweit erweitert, dass er

neben der Datenübertragung der Spacemäuse auch die der Touchpads

übernimmt. Dadurch, dass der daraus resultierende SMTP21-Treiber beide

Gerätearten innerhalb eines Treibers behandelt, tat sich die Möglichkeit auf,

treiberintern Zuweisungen zwischen den einzelnen Geräten zu machen und diese

zu Paaren zu vereinen. Ein Paar besteht dabei immer aus einer Spacemaus und

einem Touchpad, so wie sie einem Benutzer schließlich als Eingabegeräte zur

Verfügung stehen sollen.

Dabei kam die Frage auf, nach welchen Kriterien die Zuordnung der einzelnen

Geräte erfolgen sollte: Eine Möglichkeit wäre gewesen festzulegen, dass zuerst

alle Spacemäuse angeschlossen werden müssen. Die nachfolgenden Touchpads

wären dann der Reihe nach den zuvor angeschlossenen Spacemäusen

zugeordnet worden. Das gleiche Verfahren wäre auch umgekehrt möglich

gewesen. Eine andere Möglichkeit hätte in der Vorgabe bestehen können

Touchpads und Spacemäuse immer abwechselnd anschließen zu müssen und

dadurch die Paare zu bilden. Was wäre aber passiert sobald sich der Anwender

21 SMTP steht dabei für die beiden gekoppelten Eingabegeräte Spacemaus und Touchpad.

Page 63: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

63

einmal nicht an die Vorgaben für die Anschlussreihenfolge hält? Oder ein Gerät

kurzerhand wieder abschließt? Die USB-Technologie wurde hauptsächlich unter

den Gesichtspunkten entwickelt, den Einsatz von Hardwaregeräten möglichst

unkompliziert zur Verfügung zu stellen. Diesem Gedanken folgend sollte der

SMTP-Treiber nach Möglichkeit auch keine Vorschriften darüber machen, in

welcher Reihenfolge die einzelnen Geräte anzuschließen sind, um ein korrektes

Arbeiten zu gewährleisten. Stattdessen sollte er unabhängig von der

Anschlussreihenfolge die Fähigkeit besitzen, selbständig Spacemaus-Touchpad-

Paarungen zu bilden sobald die Möglichkeit dazu gegeben ist. Außerdem sollte

er auch noch arbeiten können, nachdem Geräte mehrfach ein- und abgesteckt

worden sind, solange dabei noch die Voraussetzungen für die Bildung eines

gültigen Paares gegeben sind.

5.2 Der SMTP-Treiber als Realisierung der Lösung

In der Implementation des SMTP-Kerneltreibers sollen die in der ersten

Teilaufgabe gestellten Ansprüche erfüllt werden, indem Applikationen die

Gerätedaten der Eingabegeräte in Gerätedateien zur Verfügung gestellt werden.

Die Eingabe wird dabei über einen zuweisbaren Fokus gesteuert, der die Eingabe

auf nur jeweils eines aller angeschlossenen Spacemaus- und Touchpadgeräte

beschränkt. Im folgenden werden Fähigkeiten und Arbeitsweise des SMTP-

Treibers beschrieben.

Der SMTP-Treiber ist so implementiert, dass sowohl Spacemäuse als auch

Touchpads in beliebiger Reihenfolge an- und wieder abgeschlossen werden

können. Sobald ein Gerät angeschlossen wird, prüft der Treiber, ob bereits ein

freies Gerät vom anderen Typ angeschlossen ist, das sich noch nicht in einer

Paarung befindet. Wenn dies der Fall ist, wird das neue Gerät mit dem freien

Gerät verknüpft. Handelte es sich um das erste Paar, wird diesem Paar

automatisch der Eingabefokus zugewiesen. Jedem Paar wird treiberintern

außerdem eine laufende Nummer zugewiesen, die von der Reihenfolge abhängt

in der die Paare entstanden sind. Die Nummerierung startet bei 1 und geht bis 8,

was die maximale Anzahl von möglichen Gerätepaaren die vom SMTP-Treiber

Page 64: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

64

behandelt werden, darstellt. Die Anzahl der möglichen Gerätepaare ist auf acht

limitiert, da die Magellan Spacemaus Plus acht nummerierte Auswahlbuttons

aufweist. Weitere Geräte werden vom Treiber ignoriert.

Bei mehreren Spacemaus-Touchpad-Paaren kann der Fokus durch Drücken des

Buttons mit der entsprechenden Nummer auf der Spacemaus die derzeit den

Eingabefokus besitzt, weitergegeben werden.

Wird ein Gerät abgeschlossen, das sich in einer Paarung befand, so ist dieses

Paar zerstört. Für das verbleibende Gerät wird sofort wieder versucht eine

Paarung zu bilden, indem nach einem freien Gerät am USBus vom anderen Typ

gesucht wird. Wurde beim Abschließen eines oder mehrerer Geräte ein Paar

zerstört, das zu der Zeit den Eingabefokus hatte, wird der Eingabefokus

automatisch auf das nächste gültige Gerätepaar übertragen. Existieren keine

gültigen Paarungen mehr, sind keinerlei Eingaben mehr möglich. Dies ist dann

der Fall, wenn am USBus nur Geräte vom Typ Spacemaus oder vom Typ

Touchpad angeschlossen sind.

Eine weitere Frage stellt sich bezüglich der Gerätedateien in die der Treiber die

Gerätedaten überträgt. USB- Treiber verhalten sich normalerweise so, dass sie

jedem Gerät das angeschlossen wird eine eigene Gerätedatei zuordnen. Eine

Anwendung die auf sechs Geräte zugreift, was der Anzahl der in OfuturO

einzubindenden Eingabegeräte entspricht, muss daher sechs verschiedene

Dateien auslesen. Der zuerst implementierte SpacemausPlus- Treiber verfährt,

indem er jedem Gerät eine Gerätedatei zuordnet. Der SMTP- Treiber übernimmt

intern jedoch bereits eine Zuordnung zwischen den einzelnen Spacemäusen und

Touchpads, sowie ein Zuweisen des Eingabefokus’. Es wäre daher inkonsequent

jedem Gerät eine eigene Datei zuzuordnen. Dadurch müsste die Logik zum

Auslesen der jeweils richtigen, daher den momentan den Eingabefokus

besitzenden Gerätedatei, die Applikation implementieren die darauf zugreift.

Ohnehin dürfen immer nur jeweils eine Spacemaus und ein Touchpad zu einem

Zeitpunkt Daten übertragen.

Daher werden zur Datenübertragung im SMTP-Treiber auch lediglich zwei

URBs22 verwendet. Ein URB ist dabei mit der den Eingabefokus besitzenden

Spacemaus und der andere mit dem den Eingabefokus besitzenden Touchpad

22 Definition von URBs siehe 4.1.

Page 65: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

65

verknüpft. Der SMTP-Treiber lenkt seine Ausgabe in nur zwei Gerätedateien,

unabhängig davon wie viele Geräte tatsächlich angeschlossen sind. In die eine

Gerätedatei werden die Bewegungsdaten des Touchpads, in die andere die

Bewegungsdaten der Spacemaus geleitet.

Die beiden Gerätedateien, in die der SMTP- Treiber seine Ausgabe schreibt,

werden von den beiden Avango- Geräteklassen fpSpacemausNode und

fpTouchpadNode ausgelesen. Durch Bilden von Instanzen dieser Klassen und

ihrem Einbinden in den av-daemon werden Spacemaus- und Touchpadgeräte in

eine Avango-Applikation integriert. Die Arbeitsweise der Klassen

fpSpacemausNode und insbesondere fpTouchpadNode werden im nächsten

Kapitel beschrieben. fpTouchpadNode implementiert auch die Funktionen der

Gestenerkennung aus der 2.Teilaufgabe der Diplomarbeitsaufgabenstellung. Die

Beschreibung dieser Funktionen erfolgt ebenfalls im nächsten Kapitel.

5.3 USB-Kerneltreiber unter Linux

Die Aufgabe von Kerneltreibern ist es, Daten die von der Hardware zum

Linuxkernel geschickt werden in die Gerätedateien zu übertragen, bzw. Daten

aus den Gerätedateien zur Hardware zu vermitteln, um so Anwendungs-

programmen den Zugriff auf die Hardwaregeräte zu ermöglichen. Daten die

zwischen Geräten und Gerätedateien ausgetauscht werden, werden vom Treiber

vermittelt.

Kerneltreiber sind unter Linux als so genannte Module realisiert. Modulcode

kann dynamisch, das heißt im laufenden System ge- und entladen werden. Damit

Module so flexibel agieren können weisen sie bestimmte Einsprungspunkte auf,

die jedes Mal aufgerufen werden sobald ein Modul geladen oder entladen wird.

Die Einsprungspunkte dienen in erster Linie dem An- und Abmelden der

Fähigkeiten am System, über die das Modul verfügt und müssen vom

Modulprogrammierer implementiert werden. Treibermodule arbeiten immer mit

Gerätedateien zusammen, aus diesem Grund arbeiten sie intern mit einer

Struktur, die eine Datei unter Linux repräsentiert, der file-Struktur. Jede file-

Struktur verfügt über eine Liste von Funktionszeigern, die auf die

Page 66: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

66

Systemfunktionen verweisen, die auf der Datei ausgeführt werden können. Es

gibt eine ganze Reihe solcher möglicher Fileoperationen, wobei es dem

Programmierer überlassen ist zu entscheiden, welche davon implementiert

werden und welche nicht. Der SMTP-Treiber implementiert folgende

Fileoperationen:

Open: Das Öffnen der Gerätedatei

Read: Das Lesen aus der Gerätedatei

Release: Das Schließen der Gerätedatei

Da es sich beim SMTP-Treiber um einen USB-Treiber handelt, verwendet er

zusätzlich noch eine Struktur vom Typ usb_driver. Diese Struktur ist Bestandteil

einer Softwareschicht, die sich zwischen der Host-Controller-Implementierung

und dem USB-Gerätetreiber befindet, dem USB-Subsystem oder auch USB-

Framework. Sie stellt USB-Treibern eine API zur Verfügung und wird daher

auch als usbcore bezeichnet. Ähnlich wie die file-Struktur verfügt auch die

usb_driver-Struktur über eine bestimmte Anzahl von Funktionszeigern. Die

Funktionen beziehen sich dabei auf USB-gerätespezifische Eigenschaften. Der

SMTP-Treiber implementiert folgende USB-Operationen:

Probe: Das Anschließen eines Gerätes an den USB

Disconnect: Das Abschließen eines Gerätes vom USB

Innerhalb der usb_driver-Struktur werden außerdem auch die Geräte bestimmt,

die von der Struktur übernommen werden sollen. Dies erfolgt durch die Produkt-

und Vendor-Identifikationsnummer, die ein Gerät eindeutig identifiziert.

Die USB-Geräte selbst werden von einer weiteren Struktur vom Typ

usb_InputDevice dargestellt. Hier werden alle geräterelevanten Informationen

Page 67: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

67

abgelegt. Statische Instanzen dieser Struktur werden im SMTP-Treiber sowohl

für die Spacemäuse als auch für die Touchpads verwendet.

Mehr Informationen zum Thema Treiberprogrammierung finden sich in [RC02].

Treiberprogrammierung für USB unter Linux wird in [Fli00] behandelt.

5.4 Die SMTP-Treiberroutinen

Im vorliegenden Abschnitt wird die Bedeutung der einzelnen SMTP-

Treiberroutinen erläutert. Die Implementation des Treibers erfolgt dabei in der

Programmiersprache C, der unter Linux üblichen Programmiersprache für

Kernelmodule. Bei der Beschreibung der einzelnen Treiberroutinen wird von

implementierungsspezifischen Details abgesehen. Stattdessen soll hier nur eine

vereinfachte Darstellung der Funktionsweise dieser Routinen erfolgen. Zu jeder

Funktion wird sowohl der allgemeine Aufgabenbereich als auch die speziell im

SMTP-Treiber implementierte Funktionalität erläutert.

5.4.1 Die Moduleeinsprungspunkte ModulInit und ModulExit

Diese Funktionen werden jedes Mal aufgerufen, wenn vom System oder vom

Anwender das entsprechende Modul geladen bzw. entladen wird. Dem System

werden dadurch beim Laden des Moduls seine Dienstleistungen bekannt

gegeben. Beim Entladen wird das System darüber informiert, dass diese

Dienstleistungen nun nicht mehr zur Verfügung stehen. Die Init-Routine

informiert das System unter anderem darüber, welche Gerätedateien mit dem

vom Treiber geregelten Datenfluss verknüpft sind. Die dem Treiber zugewiesene

Gerätedatei wird dabei nicht über einen Namen identifiziert, sondern über eine

Nummer, der so genannten Majornummer. Die Majornummer ist eine positive 8-

Bit ganze Zahl und umfasst somit einen Wertebereich von 0 bis 255, was

theoretisch den Einsatz von nur 256 Geräten ermöglicht23. Da es jedoch weitaus

mehr Peripheriegeräte gibt, existiert noch eine weitere 8-Bit Nummer, die so

23 Vor Kernelversion 2.2 war dieser Wert sogar auf nur 128 Geräte beschränkt.

Page 68: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

68

genannte Minornummer. Zur vollständigen Beschreibung eines Gerätes sind

daher Major- und Minornummer nötig.

Minornummern werden vom Betriebssystem bei der Zuweisung des

verantwortlichen Gerätetreibers ignoriert. Hat ein Treiber sich für eine

bestimmte Majornummer beim Betriebssystem angemeldet, so wird er jedes Mal

aufgerufen sobald ein Zugriff auf eine Gerätedatei stattfindet, die diese

Majornummer aufweist, unabhängig davon wie die Minornummer der Datei

lautet. Der Treiber kann dann intern entscheiden, ob er auf bestimmte

Minornummern reagieren will oder nicht.

Bei experimentellen Treibern, wie dem SMTP-Treiber, kann eine der für

experimentelle Zwecke vorgesehenen Majornummern (Nummern 60-63,120-

127,240-254) verwendet werden, oder der Treiber kann sich dynamisch vom

System eine Nummer zuweisen lassen.

Der SMTP-Treiber verwendet die Methode der dynamischen Zuweisung einer

geeigneten Majornummer vom Betriebssystem. Nach dem Laden des SMTP-

Treibermoduls ist diese Nummer unter /proc/devices einsehbar.

Da es sich beim SMTP-Treiber um einen USB-Treiber handelt, übernimmt hier

die Init-Funktion auch das Anmelden der usb_driver Struktur am USB-

Subsystem. Außerdem werden die im Treiber verwendeten, globalen Objekte

initialisiert.

Es handelt es dabei um zwei Felder von Strukturen, wobei das eine Strukturfeld

die Menge der Touchpadgeräte und das andere Strukturfeld die Menge der

Spacemausgeräte repräsentiert. Beide Strukturfelder sind als statische Felder

implementiert. Die Feldgröße entspricht dabei der maximal möglichen Anzahl

von 8 Gerätepaaren.

Die ModulExit-Methode übernimmt die genau entgegen gesetzten Aufgaben,

indem Sie die Verbindung des Treibers mit der zuvor zugewiesenen

Majornummer wieder auflöst. Da es sich beim SMTP-Treiber um einen USB-

Treiber handelt, meldet ModulExit darüber hinaus auch noch die usb_driver

Struktur vom USB-Subsystem ab.

Page 69: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

69

5.4.2 Die USB-Gerätespezifischen Operationen

Die Probe-Funktion

Wird ein neues Gerät am USBus angeschlossen oder wird ein neuer Treiber

geladen und es sind bereits USB-Geräte am USBus angeschlossen denen bisher

noch kein Treiber zugeordnet werden konnte, ruft das USB-Framework

nacheinander die Probe-Funktionen der geladenen Treiber auf.

Die erste Aufgabe welche Probe dabei im Allgemeinen direkt nach dem Aufruf

übernimmt, ist das Testen des eingesteckten Gerätes auf die Kompatibilität zum

Treiber. Dazu wird Probe der Zeiger einer usb_device-Struktur übergeben, die

das angeschlossene Gerät repräsentiert. Die Vendor- und ProduktID-Nummern

des Gerätes können nun aus der Struktur entnommen und mit denen der vom

Treiber zu behandelnden Geräte verglichen werden. Verläuft dieser Vergleich

negativ, d.h. kommt die Probe-Routine zu dem Ergebnis, dass es sich beim

vorliegenden Gerät nicht um ein zum Treiber kompatibles Gerät handelt oder

stellt sich heraus, dass die maximal vom Treiber zu verarbeitende Anzahl an

Geräten bereits erreicht ist, wird die Probe-Funktion vorzeitig verlassen.

Ansonsten werden alle Informationen24, die für eine spätere Verwendung noch

benötigt werden vor einem Verlassen der Probe Funktion in der treiberinternen

usb_InputDevice Struktur gesichert, indem nacheinander der device descriptor,

der configuration descriptor, der interface descriptor und der endpoint

descriptor ausgewertet werden. Diese Informationen sind auch in der Datei

/proc/bus/usb/devices zu finden, siehe Abbildung 5.1.

24 Zu diesen Informationen gehören beispielsweise Informationen über die Schreib/Lese-endpoints des Gerätes, die maximal zu verarbeitenden Daten, sowie Anzahl an Interfaces und Konfigurationen usw.

Page 70: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

70

Abb. 5.1: Auszug aus /proc/bus/usb/devices in dem die Geräteinformationen zu

Spacemaus und Touchpad dargestellt sind.

Unter anderem ist hier zu erkennen, dass sowohl Spacemaus als auch Touchpad

über lediglich ein Interface und eine mögliche Konfiguration verfügen. (Zeile I).

Des Weiteren existiert bei beiden Geräten lediglich ein endpoint vom Typ

Interrupt, der ein Datenpaket mit einer Maximalgröße von 8 Byte unterstützt.

(Zeile E). Neben diesen Aufgaben, die die Probe-Funktion eines jeden USB-

Treibers implementieren, erfüllt die Probe-Routine des SMTP-Treibers noch

einige spezielle Aufgaben:

Da vom SMTP-Treiber sowohl Touchpad als auch Spacemaus übernommen

werden, muss der Treiber zuerst feststellen, um welchen der beiden Gerätetypen

es sich bei dem aktuellen Gerät handelt. Teil der Gerätedatenstruktur die eine

Spacemaus bzw. ein Touchpad repräsentiert ist ein URB, der an dieser Stelle mit

den nötigen Gerätedaten initialisiert wird. Im Gegensatz zu herkömmlichen

USB-Treibern, die lediglich ein Gerät behandeln, wird der URB jedoch noch

nicht an das USB-Subsystem geleitet. Stattdessen versucht der Treiber bereits

das angeschlossene Geräte einem eventuell zuvor schon angeschlossenen Gerät

vom anderen Typen zuzuordnen. Gelingt die Zuordnung und handelte es sich

dabei um das erste gültige Gerätepaar das zugeordnet werden konnte, wird

diesem Paar der Eingabefokus zugewiesen. Erst jetzt werden die URBs beider

Geräte dem USB-Subsystem bekannt gegeben. Ein URB übernimmt dabei die

Kommunikation des USB-Subsystems mit der Spacemaus, der andere die

Kommunikation des USB-Subsystems mit dem Touchpad.

Page 71: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

71

Die Disconnect-Funktion

Die Disconnect-Routine stellt das Gegenstück zur zuvor beschriebenen Probe-

Funktion dar. Disconnect wird jedes Mal aufgerufen wenn ein vom Treiber

übernommenes Gerät vom USBus abgesteckt wird. Aufgabe der Disconnect-

Funktion ist es dann, das entsprechende Gerät in der treiberinternen

usb_InputDevice-Struktur als nicht mehr am Bus angeschlossen zu

kennzeichnen. Ist keine Gerätedatei mehr geöffnet die auf das Gerät zugreift,

wird die interne usb_InputDevice-Struktur vollständig gelöscht. Ansonsten wird

mit dem Löschen bis zum Schließen der Gerätedatei gewartet, da noch immer

Lese- oder Schreibzugriffe auf diese Datei erfolgen könnten und dabei dann auf

eine nicht mehr vorhandene Struktur zuzugreifen versuchten. Beim SMTP-

Treiber wird die Löschung der Struktur in jedem Fall in der Disconnect-Funktion

vorgenommen, unabhängig davon ob die SMTP-Gerätedatei noch geöffnet ist

oder nicht. Das liegt daran, dass beim SMTP-Treiber das Abstecken eines

Gerätes nicht unbedingt zur Folge hat, dass ein Lesezugriff nicht mehr möglich

ist. Das ist erst der Fall wenn auch das letzte gültige Gerätepaar durch Abstecken

eines Gerätes zerstört worden ist. Dies aber wird bei einem anschließenden

Lesezugriff registriert und der Lesevorgang dann als gescheitert übermittelt. Der

Aufruf der Disconnect-Funktion im SMTP-Treiber beinhaltet auch das

Überprüfen darauf, ob das zu löschende Gerät bis zu diesem Zeitpunkt Teil eines

Gerätepaares war. Wenn dies der Fall ist, hat das zur Folge, dass beim Löschen

des Gerätes das andere Gerät nun frei geworden ist. Aus diesem Grund prüft

Disconnect ob sich noch ein Gerät des anderen Typs am USB-Bus befindet,

welches bisher noch keiner Paarung zugeordnet werden konnten. Wenn dem so

ist, wird das frei gewordene Gerät mit dem bisher nicht zugeordneten Gerät zu

einer neuen Paarung verknüpft.

Falls der Eingabefokus auf das nächste gültige Gerätepaar übergehen muss, weil

das Abschließen des Gerätes zur Folge hat, dass ein Gerätepaar zerstört wird,

werden die URBs von Touchpad und Spacemaus vom USB-Subsystem

abgemeldet. An ihrer Stelle werden die URBs des neuen Gerätepaares an das

USB-Subsystem übermittelt.

Page 72: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

72

Die URB-Completion-Routine

Hierbei handelt es sich um eine optionale Routine, die einem URB bei der

Initialisierung mit übergeben werden kann und die jedes Mal im Anschluss eines

Datentransfers über diesen URB aufgerufen wird. In erster Linie bietet diese

Routine die Möglichkeit auf das Auftreten eventueller Fehler während einer

Datenübertragung reagieren zu können. Es ist aber auch möglich andere

Aufgaben in diese Routine zu verlegen, wie beispielsweise das Aufwecken zuvor

schlafen gelegter Prozesse oder aber das Anstoßen weiterer URBs.

Der SMTP-Treiber überprüft hier den Status der erfolgten URB Übertragung. Ist

der URB mit einer Spacemaus verlinkt wird ein mit der Spacemausgerätedatei

verbundener Read-Prozess reaktiviert. Ist der URB mit einem Touchpad verlinkt,

wird ein mit der Touchpadgerätedatei verbundener Read-Prozess reaktiviert

(siehe Die Read-Funktion weiter unten).

5.4.3 Die File-Operationen

Die Open-Funktion

Die Open-Funktion eines Gerätetreibers wird jedes Mal aufgerufen wenn eine

Gerätedatei mit der Majornummer der vom Treiber behandelten Geräte

übereinstimmt. Die entsprechende Majornummer muss dem Betriebssystem

zuvor in der ModulInit-Routine bekannt gegeben worden sein. Aufgabe der

Open-Funktion ist in erster Linie Initialisierungen interner Treiberdaten-

strukturen vorzunehmen. Darüber hinaus erhöht ein Aufruf von Open den so

genannten Modulverwendungszähler. Dieser Zähler ist eine moduleigene

Datenstruktur, die dem Betriebssystem das die Module verwaltet, Auskunft

darüber gibt, ob und wie oft ein bestimmtes Modul gerade beansprucht wird. Das

Betriebssystem verhindert das Entladen eines Moduls das gerade verwendet

wird. Für ein Gerätetreibermodul bedeutet dies, dass ein erfolgreiches Entladen

durch das Betriebssystem oder eine explizite rmmod-Anweisung des Benutzers

erst erfolgen kann, wenn alle Dateien wieder geschlossen wurden, die in den

Aufgabenbereich des Treibers fallen und zuvor geöffnet worden sind. Erst das

Page 73: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

73

Schließen einer Datei ruft die mit dieser Datei verbundene Release-Funktion auf,

in der normalerweise das Dekrementieren des Modulzählers implementiert ist.

Treiber die unterschiedliche Geräte behandeln. ermitteln in der Open-Funktion

außerdem den Gerätetyp, indem sie die Minornummer der geöffneten

Gerätedatei abfragen. Der Zugriff auf jegliche Informationen über die mit dem

jeweiligen Open-Aufruf assoziierte Datei wird der Open-Funktion in einer

Inode- und einer File-Struktur ermöglicht. Die File-Struktur bietet dabei neben

den dateirelevanten Informationen die Möglichkeit ein Datum beliebigen Typs in

einer speziell dafür vorgesehenen Strukturkomponente zu speichern. Auf diese

Weise können entscheidende Informationen über die Datei, die in Open ermittelt

wurden, abgespeichert und bei kommenden Fileoperationen wieder abgefragt

werden.

Da der SMTP-Treiber seine Ausgabe in zwei verschiedene Gerätedateien lenkt,

ist auch hier die Minornummerabfrage implementiert. Eine SMTP-Gerätedatei

mit der Minornummer 0 erlaubt den Zugriff auf die von der Spacemaus

übertragenen Daten, während eine Gerätedatei mit der Minornummer 1 den

Zugriff auf die vom Touchpad übertragenen Daten erlaubt. Gerätedateien mit

anderen Minornummern werden vom SMTP-Treiber zwar geöffnet, jedoch nicht

weiter behandelt. Das Inkrementieren des Verwendungszählers wird in diesem

Fall wieder rückgängig gemacht.

Der ermittelte Dateityp wird im SMTP-Treiber innerhalb der oben beschriebenen

Filestrukturkomponente abgespeichert und ist somit in späteren Aufrufen von

Dateioperationen wieder abrufbar. Dies ist insbesondere im Read-Aufruf

wichtig, da Read je nachdem ob es sich um eine Touchpad- oder eine

Spacemausgerätedatei handelt, die Gerätedaten unterschiedlich handhabt.

Die Release-Funktion

Die Release-Funktion stellt das Gegenstück zu Open dar. Ihr Aufruf erfolgt jedes

Mal wenn eine zuvor geöffnete Datei wieder geschlossen wird. Alle zuvor in

Open reservierten Speicherbereiche werden hier wieder freigegeben.

Insbesondere wird der Verwendungszähler der zuvor in Open erhöht worden ist,

wieder dekrementiert. Da nur Gerätedateien mit den Minornummern 0 und 1

Page 74: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

74

vom SMTP-Treiber behandelt werden, wird hier der Verwendungszähler nur

dekrementiert, wenn die zu schließende Datei eine dieser beiden Minornummern

aufweist.

Die Read-Funktion

Die Read-Funktion wird jedes Mal aufgerufen wenn aus einer Gerätedatei, die

vom Treiber behandelt wird, gelesen wird. Die Hauptarbeit der Read-Funktion

ist dabei das Übertragen der Daten vom Gerät in den Ausgabepuffer der

Gerätedatei. Das Betriebssystem erhält zwar die Übertragungsdaten vom Gerät,

das Weiterleiten muss allerdings der Gerätetreiber übernehmen. Zu diesem

Zweck werden zuerst die Daten des auszulesenden Gerätes abgefragt und

anschließend in den von der Gerätedatei bereitgestellten Puffer geschrieben.

Dadurch werden die übertragenen Gerätedaten vom Kernel-Space des

Betriebssystems in den User-Space übertragen. Im User-Space kann die

Gerätedatei dann auf dem üblichen Wege mit der Read-Betriebssystemfunktion

ausgelesen werden. Das Auslesen aus Dateien kann dabei auf verschiedene

Arten erfolgen: blockierend oder nicht blockierend. Beim blockierenden

Auslesen wird der Prozess von dem aus die Read-Systemfunktion aufgerufen

wurde, solange schlafen gelegt, bis Daten vorliegen die ausgelesen werden

können. Erst dann wird der Prozess fortgesetzt. Beim nicht blockierenden

Auslesen aus einer Datei wird der Prozess nicht schlafen gelegt, stattdessen

erhält er die Information darüber ob Daten ausgelesen werden konnten oder nicht

über den Rückgabewert der Read-Systemfunktion. Beim nicht blockierenden

Auslesen muss die Gerätedatei ständig auf das Vorhandensein von vorliegenden

Daten überprüft werden. Ob blockierend oder nicht blockierend aus einer Datei

gelesen wird, kann von einer Applikation, die auf diese Datei zugreift, beim

Öffnen mittels des Flags O_NONBLOCK angegeben werden. Damit eine

Gerätedatei sowohl blockierendes als auch nicht blockierendes Auslesen

unterstützt, müssen beide Methoden in der Read-Funktion der Gerätedatei

implementiert werden.

Page 75: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

75

Um blockierendes Lesen zu implementieren, muss Read bei jedem Aufruf zuerst

einmal suspendiert werden. Erst wenn der Fall eintritt, dass Gerätedaten

vorliegen, wird Read reaktiviert um die Datenübermittlung durchführen. Im

SMTP- Treiber wird das blockierende Lesen durch ein Zusammenspiel von Read

und der URB-Callbackfunktion (siehe Die URB-Completion-Routine oben)

realisiert. Die URB-Callbackfunktion wird jedes Mal aufgerufen wenn das mit

dem URB assoziierte Gerät Daten sendet.

Zum Zweck des blockierenden Lesens werden in der SMTP-Treiberinternen

Read-Funktion zwei Warteschlangen25 verwendet, eine für die Touchpadgeräte,

die andere für die Spacemausgeräte. Eine der ersten Aufgaben die Read hier

übernimmt ist das Suspendieren des eigenen Prozesses mit Hilfe einer der beiden

Warteschlangen, je nachdem um welchen Gerätedateityp es sich handelt auf den

ein Read ausgeführt wird. Der Einsatz von zwei Warteschlangen statt einer ist

nötig, um zu verhindern das Spacemausgerätedaten weitergeleitet werden,

obwohl nur das Touchpad Daten zu übermitteln hat und umgekehrt.

Das Aufwecken des Prozesses erfolgt durch Zugriff auf die entsprechende

Warteschlange innerhalb der URB-Callbackfunktion, sobald Daten von einem

Gerät bereitgestellt werden.

Findet eine Datenübermittlung statt und wird der Read-Prozess reaktiviert,

werden die Gerätedaten mittels der in Probe angelegten URBs vom Gerät

gelesen und in einen treiberinternen Puffer geschrieben. Die Pufferdaten werden

schließlich in den dateieigenen Puffer kopiert. Das Kopieren der Daten über den

treiberinternen Puffer im SMTP-Treiber erfolgt, da beim Übertragen von

Touchpaddaten neben den 8 Datenbytes die vom Touchpad bei Berühren der

Sensorfläche oder Betätigen eines Buttons, übermittelt werden, vom Treiber

noch ein neuntes Byte hinzugefügt wird. Der Grund für das Hinzufügen dieses

zusätzlichen Byte wird im nächsten Kapitel erläutert.

Bei blockierendem Lesen verbringen die Leseprozesse den größten Teil der Zeit

in schlafendem Zustand. Bei einem Entfernen des auszulesenden Gerätes vom

25 Warteschlange oder auch wait queues genannt, sind Strukturen auf die im Wesentlichen die Operationen Sleep und WakeUp ausgeführt werden können. Ein Sleep reiht den aufrufenden Prozess in die Warteschlange ein und legt diesen damit schlafen. Ein WakeUp weckt sämtliche bis zu diesem Zeitpunkt in der Warteschlange eingereihten Prozesse wieder auf.

Page 76: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

76

USBus während eines laufenden Leseprozesses, ist die Wahrscheinlichkeit daher

groß, dass dies passiert während der Prozess gerade suspendiert ist. Registriert

das USB-Subsystem das Abschließen eines Gerätes, wird wie bei der

Datenübermittlung durch ein Gerät automatisch die URB-Callback-Funktion

aufgerufen. Beim SMTP-Treiber wird innerhalb dieser Funktion somit auch

immer überprüft, ob der Aufruf deshalb geschah, weil Daten übermittelt wurden,

oder weil die Daten fehlerhaft übermittelt, bzw. das Gerät abgeschlossen wurde.

Trifft letzteres zu, wird wie bei einer Datenübermittlung, der durch die

Warteschlange des jeweiligen Gerätes schlafende Prozess geweckt. Dadurch ist

gewährleistet, dass ein suspendierter Leseprozess nicht in einen Zustand

kommen kann, in dem keine Möglichkeit zur Reaktivierung mehr gegeben ist,

weil das auszulesende Gerät nicht mehr vorhanden ist.

Beim SMTP-Treiber wird vor dem Anfordern der Gerätedaten mit Hilfe der File-

Informationen, die beim Aufruf der Read-Funktion mit übergeben wurden,

zuerst anhand der Minornummer geprüft, ob es sich um die Touchpad- oder die

Spacemausgerätedatei handelt, damit die Read-Funktion das Anfordern der

Gerätedaten für den richtige Gerätetyp durchführt. Da der SMTP-Treiber nicht

nur die beiden Gerätetypen Spacemaus und Touchpad, sondern auch mehrere

Geräte jeden Typs behandelt, erfolgt das Anfordern der Gerätedaten nur für das

Gerät, welches sich in der Gerätepaarung befindet die aktuell den

Eingabefokus26 zugewiesen hat. Existiert keine solche Paarung, schlägt der

Read-Aufruf fehl.

Handelt es sich beim auszulesenden Gerät um eine Spacemaus, wird außerdem

noch der Inhalt der übertragenen Daten auf einen Buttondruck geprüft. Wird ein

Buttondruck festgestellt, der das Anfordern eines Eingabefokuswechsels auf ein

gültiges Gerätepaar darstellt, werden beide URBs, welche zuvor in der Probe

Funktion der Spacemaus und dem Touchpad zugewiesen wurden, vom USB-

Subsystem abgemeldet. Danach werden Sie mit den Daten der neu

zuzuweisenden Geräte initialisiert und wieder am USB-Subsystem angemeldet.

Die möglichen Werte für einen Fokuswechsel sind 1, 2, 4, 8, 16, 32, 64 und 128,

was den Datenwerten der durchnummerierten 8 Aktionsbuttons auf der 26 Zur Erinnerung: Der Eingabefokus stellt die Berechtigung für nur eines der Gerätepaare dar, Daten an die Gerätedateien zu senden. Siehe auch die Aufgabenbeschreibung in der Einleitung.

Page 77: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

77

Spacemaus entspricht. Jeder Wert wird treiberintern einem der 8 möglichen

Spacemaus-Touchpad-Gerätepaare zugeordnet. Gibt es kein gültiges Gerätepaar

mit der für den Fokuswechsel angegebenen Nummer, wird der Buttondruck

ignoriert und das aktuelle Gerätepaar behält den Fokus.

5.5 Probleme bei der Implementierung

Eines der Probleme die bei der Programmierung von Kerneltreibern gelöst

werden müssen, besteht darin nebenläufigen Zugriff auf globale Variablen zu

koordinieren. Die meisten Kerneltreiber arbeiten mit einem globalen

Strukturfeld, in der die Informationen mehrerer zu verwaltender Geräte abgelegt

werden. Da es sich bei allen oben genannten Treiberfunktionen um

Callbackfunktionen handelt, die jederzeit unabhängig voneinander aufgerufen

werden können, sobald ein bestimmtes Ereignis eintritt, können leicht

Situationen auftreten in denen mehrere verschiedene Funktionen gleichzeitig

ausgeführt werden. Ein Gerät wird beispielsweise an- oder abgeschlossen oder

Schreib/Lesezugriffe auf ein Gerät werden ausgeführt. Es besteht auch die

Möglichkeit dass eine Funktion zum gleichen Zeitpunkt mehrfach ausgeführt

wird. Dies kann vorkommen, wenn das an- oder abschließen eines Gerätes

schnell hintereinander erfolgt, oder wenn mehrere Prozesse gleichzeitig Schreib-

oder Lesezugriffe auf ein Gerät ausführen.

Da Linux ein Mehrprozessbetriebssystem ist, wechselt der Prozessor in diesem

Fall nach einem bestimmten Schema ständig zwischen den einzelnen Prozessen,

indem das Betriebssystem einem Prozess nach einer gewissen Zeit den Prozessor

entzieht und ihm dafür einen anderen Prozess zuweist27. Bei unkontrolliertem

Zugriff verschiedener Prozesse auf dieselben Datenstrukturen kann es bei diesen

Wechseln unter Umständen zu Fehlern kommen, so genannten race conditions28.

Um Fehler solcher Art zu vermeiden muss Programmcode der auf die gleichen

27 Dieses Verfahren wird auch als Scheduling bezeichnet. 28 Dieses Problem stellt sich normalerweise nicht für Kernelcode auf Einprozessorsystemen, da Kernelcode im Gegensatz zu User-Space Code keinen Prozessorentzug erfährt, ohne dies explizit anzufordern. Gut programmierte Treiber sollten aber auch immer den Einsatz auf Multiprozessorsystemen mit in Betracht ziehen. Da es sich beim Visualisierungsserver der OfuturO-Umgebung, auf dem der Treiber letztlich laufen soll, ebenfalls um ein Multiprozessorsystem handelt, war der Einsatz von Mutexe hier obligatorisch.

Page 78: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

78

Daten wie anderer Programmcode zugreift mit Hilfe von

Koordinierungsmechanismen reentrant gemacht werden. Das bedeutet, dass

sichergestellt werden muss, dass ein Prozess keine Manipulationen an globalen

Datenstrukturen vornehmen darf, mit denen ein anderer Prozess gerade noch

arbeitet.

Unter Linux gibt es verschiedene solcher Koordinierungsmechanismen, als

Beispiele sind da Semaphore, Mutexe und Spinlocks zu nennen. Der SMTP-

Treiber verwendet in den kritischen Routinen Mutexe29. Die betreffenden

Routinen sind hier die Read-, Probe-, und die Disconnect-Routine, da innerhalb

dieser Routinen auf globale Daten zugegriffen wird. Zum einen sind dies die

beiden usb_InputDevice-Datenstrukturfelder für die Repräsentation der

Spacemäuse und der Touchpads, zum anderen ist dies die globale Integer-

Variable in welcher die Nummer des aktuell den Eingabefokus besitzenden

Gerätepaares gespeichert ist.

Da die beschriebenen Koordinierungsmaßnahmen eine zentrale Problematik bei

der Treiberprogrammierung und insbesondere innerhalb des SMTP-Treibers

darstellen, wird im Folgenden noch einmal näher darauf eingegangen. Dabei

werden die möglichen Fälle untersucht, in denen es zu den beschriebenen race

conditions kommen kann. Im Anschluss daran wird gezeigt, wie diese Probleme

in der Implementation des Treibers gelöst sind.

Fall 1: Ein Gerät wird entfernt von dem gerade gelesen wird.- Entspricht

einem gleichzeitigem Aufruf von Read und Disconnect.

Wenn ein Prozess über Read�versucht von einem Gerät zu lesen, welches soeben

in einem parallel laufenden Disconnect gelöscht wird, kann es beim Versuch auf

ein nicht mehr vorhandenes Gerät zuzugreifen, zu schwerwiegenden Fehlern

kommen. Daher muss verhindert werden, dass Read überhaupt diesen Versuch

unternimmt, sobald das Gerät entfernt wurde.

29 Mutexe (mutual exclusion) sind betriebssysteminterne Datenstrukturen auf die zwei grundlegende Operationen ausgeführt werden können: Down und Up. Down auf einem Mutex sperrt dieses für andere Prozesse solange bis wieder ein Up erfolgt.

Page 79: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

79

Zu diesem Zweck reguliert ein Mutex den Zugriff auf die Geräte innerhalb von

Read und Disconnect. Die Down-Operation des Mutex muss in beiden

Funktionen aufgerufen werden, bevor zum ersten Mal auf die

Gerätedatenstruktur zugegriffen wird. Der erste Zugriff beim Lesen besteht

dabei aus einem Überprüfen der Struktur auf ein Vorhandensein des Gerätes.

Sollte die Überprüfung ergeben, dass das Gerät nicht mehr vorhanden ist, wird

der Lesevorgang abgebrochen. Ansonsten wird der Read-Prozess anschließend

suspendiert, um auf das Ereignis einer Datenübermittlung zu warten (siehe Die

Read-Funktion oben). Wenn dieses Ereignis eingetroffen ist und Read mittels

der URB-Callback-Methode reaktiviert wird, (siehe Die URB-Completion-

Routine oben) wird das Mutex wieder freigegeben. Erst wenn der Lesevorgang

komplett abgeschlossen ist und noch bevor ein erneutes Lesen den Prozess

wieder suspendieren kann, kann die Disconnect-Routine ausgeführt werden.

Abgesehen von der Gerätedatenstruktur wird innerhalb von Read auch noch auf

die oben erwähnte globale Integer-Variable zugegriffen, in welcher die Nummer

des Gerätepaares gespeichert ist, das aktuell den Eingabefokus besitzt. Diese

Nummer muss ermittelt werden, noch bevor auf die Gerätedatenstruktur

zugegriffen wird. Auch hier kann es jedoch wieder zu Problemen kommen, falls

gleichzeitig Disconnect ausgeführt wird, denn durch den Aufruf von Disconnect

besteht die Möglichkeit, dass sich die Nummer des Gerätepaares ändert, falls

eines der Geräte abgeschlossen wird, das zu diesem Zeitpunkt den Eingabefokus

besitzt (siehe Die Disconnect-Funktion oben).

Den Zugriff regelt hier ein weiteres Mutex, das noch vor dem eingesetzt wird,

das den Zugriff auf die Gerätedatenstruktur regelt. Dieses Mutex muss neben

dem anderen ebenfalls frei sein, damit Disconnect aufgerufen werden kann.

Damit zwischen den Bereichen die beide Mutexe schützen, keine Änderungen an

der Integer-Variablen oder der Gerätedatenstruktur durch Disconnect auftreten

können, werden beide Mutexe verschachtelt aufgerufen, d.h. noch bevor das

erste freigegeben wird, wird das zweite schon blockiert (Abbildung 5.2).

Der Zugriff auf die Integer-Variable wird von einem globalen Mutex geregelt.

Der Zugriff auf die Gerätedatenstruktur wird dagegen nicht von einem einzelnen

globalen Mutex geregelt, da es vom Read-Prozess auch gehalten wird, während

Page 80: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

80

Disconnect Down (globaler Mutex) Down (struktureigener Mutex) Löschen eines Gerätes Eventuelles Neuzuweisen der Gerätepaarnummer mit dem

Eingabefokus Up (struktureigener Mutex) UP (globaler Mutex)

Read Down (globaler Mutex) Auslesen der aktuellen Gerätepaarnummer Zugriff auf das Gerät Down(struktureigener Mutex) Up(globaler Mutex) Suspendieren des Prozesses Datenübermittlung Up(struktureigener Mutex)

URB- Callback Reaktivieren von Read

a b

Read suspendiert ist. Dadurch können Probleme auftreten sobald ein weiterer

Leseprozess gestartet wird. Diese Problematik wird weiter unten unter Fall 4,

dem gleichzeitigen Ausführen mehrerer Lesevorgänge, beschrieben.

Aus diesem Grund werden auch zwei Mutexe verwendet, denn das globale

Mutex darf nicht gehalten werden, während Read suspendiert wird und das

andere Mutex wiederum kann, da es Teil der Gerätedatenstruktur ist, erst

ermittelt werden, nachdem durch Einsatz des globalen Mutex sichergestellt ist,

dass das richtige Gerät betrachtet wird. Der beschriebene Sachverhalt ist in der

unten stehenden Abbildung 5.2 noch einmal schematisch dargestellt.

Abb. 5.2: Schematische Darstellung der Race Condition Problematik im SMTP-Treiber zwischen

der Read- und der Disconnect-Routine. Die schwarzen Pfeile zeigen an, ab welchem

Programmabschnitt welche Funktion blockiert wird. a) Befindet sich Read in diesem

Programmabschnitt wird Disconnect an dieser Stelle blockiert. b) Befindet sich Disconnect in

diesem Programmabschnitt wird Read an dieser Stelle blockiert.

Über die oben beschriebene Situation hinaus können aber auch noch Fälle

auftreten in denen die kritischen Routinen selbst gleichzeitig aufgerufen werden:

Fall 2: Zwei oder mehr vom Treiber behandelte Geräte werden nahezu

gleichzeitig am USBus angeschlossen- Entspricht einem mehrfachen Aufruf

von Probe.

Werden zwei oder mehr Geräte kurz hintereinander an den USBus

angeschlossen, kann es vorkommen, dass mehrere Probe Funktionen fast

Page 81: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

81

gleichzeitig laufen. Weist die erste Probe Funktion ihrem Gerät einen Platz in

der globalen Datenstruktur zur Geräteverwaltung zu, bekommt ein nebenher

laufendes Probe nichts davon mit, dass dieser Platz bereits belegt ist und weist

seinem Gerät fälschlicherweise eventuell denselben Platz zu. Abhilfe schafft hier

ein weiteres globales Mutex, das innerhalb von Probe aufgerufen wird, bevor ein

Zugriff auf die Gerätedatenstruktur erfolgt. Der Einsatz des Mutex erfolgt in

dieser Funktion im Gegensatz zu den Mutexen in Disconnect und Read also

nicht um den Zugriff verschiedener Funktionen auf die selben Daten zu

koordinieren, sondern lediglich zur Koordination eines mehrfachen eigenem

Zugriffes, indem verhindert wird, dass mehrere Probe-Funktionen gleichzeitig

die globale Gerätedatenstruktur auslesen und beschreiben können.

Fall 3: Zwei oder mehr vom Treiber behandelte Geräte werden nahezu

gleichzeitig vom USBus entfernt- Entspricht einem mehrfachen Aufruf von

Disconnect.

Werden zwei oder mehr Geräte gleichzeitig vom USBus entfernt, wird die

Disconnect Funktion für jedes dieser Geräte aufgerufen. Das Entfernen eines

Gerätes bedeutet aber, dass möglicherweise eine Gerätepaarung zerstört worden

ist. In diesem Fall versucht Disconnect ein noch freies Gerät am USBus zu

finden um wieder eine gültiges Paar herzustellen. Wird dieses Gerät gleichzeitig

auch in einem zweiten Disconnect-Prozess entfernt, hat das ursprüngliche

Disconnect keine Information hierüber und weist somit ein nicht mehr

vorhandenes Gerät einer Gerätepaarung zu.

Die Disconnect-Funktion ist vor diesem Ereignis gesichert, indem sie vor jedem

Zugriff auf die Gerätedatenstruktur das auch in Read zum Einsatz kommende,

struktureigene Mutex für sich beanspruchen muss.

Page 82: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

82

Fall 4: Es werden Touchpad und Spacemaus- Gerätedateien gleichzeitig

ausgelesen. Entspricht einem gleichzeitigen Aufruf von zwei Read-

Prozessen.

Das Suspendieren des Read-Prozesses mit gehaltenem Mutex stellt bei mehrfach

ablaufenden Read-Prozessen zur gleichen Zeit ein Problem dar. Das Mutex

blockiert nämlich jedes weitere Read solange, bis der erste Prozess wieder

reaktiviert wird, seine Daten übermittelt und das Mutex wieder freigibt. Das

bedeutet in der Praxis, dass zum Empfangen von Gerätedaten aus Read-

Zugriffen immer gewartet werden muss, bis der gerade das Mutex besitzende

Prozess seine Daten übermittelt hat. Da für die Eingabeverarbeitung in der

OfuturO-Umgebung jedoch zwei Read-Prozesse, einer für die Spacemäuse und

der zweite für die Touchpads, ungestört voneinander arbeiten müssen, sind diese

Einschränkungen nicht akzeptabel. Aus diesem Grund wird innerhalb von Read

zum Schützen der Gerätedatenstruktur ein Mutex pro Gerät verwendet. Diese

Mutexe sind zugleich Teil der Gerätedatenstruktur. Auf diese Weise können

Geräte, die Down-Operationen auf ihrem Mutex ausführen, andere Geräte nicht

beeinflussen.

Abbildung 5.3 zeigt die schematische Darstellung des Blockierens gleicher

Funktionen:

Page 83: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

83

Abb. 5.3: Schematische Darstellung der Race Conditions Problematik im SMTP-Treiber. Die

Pfeile zeigen ab welchem Programmabschnitt sich die Funktionen selbst blockieren. a) Befindet

sich Read in diesem Programmabschnitt wird ein parallel ausgeführtes Read an dieser Stelle

blockiert. b) Befindet sich Disconnect in diesem Abschnitt wird ein parallel ausgeführtes

Disconnect hier blockiert. c) Befindet sich Probe in diesem Abschnitt wird ein parallel

ausgeführtes Probe hier blockiert.

Probe Down(globaler Mutex) Zuweisen eines neuen Gerätes an die Geräte- datenstruktur Up(globaler Mutex)

Probe Down(globaler Mutex) Zuweisen eines neuen Gerätes an die Geräte- datenstruktur Up(globaler Mutex)

Read Down(globaler Mutex) Auslesen der ak- tuellen Geräte- paarnr., Zugriff auf das Gerät Down(geräte- struktureigener Mutex) UP(globaler Mutex) Suspendierung d. Prozesses, Daten- übermittlung, evntl. Fokus- wechsel mit Neu- zuweisen der URBs Up(geräte- struktureigener Mutex)

Disconnect Down(globaler Mutex) Down(geräte-struktureigener Mutex) Löschen eines Gerätes, eventu- elles Neuzuweisen d. Gerätepaarnr. mit dem Eingabefokus UP(geräte- struktureigener Mutex) Up(globaler Mutex)

Disconnect Down(globaler Mutex) Down(geräte- struktureigener Mutex) Löschen eines Gerätes, eventu- elles Neuzuweisen d. Gerätepaarnr. mit dem Eingabefokus UP(geräte- struktureigener Mutex) Up(globaler Mutex)

Read Down(globaler Mutex) Auslesen der ak- tuellen Geräte- paarnr., Zugriff auf das Gerät Down(geräte- struktureigener Mutex) UP(globaler Mutex) Suspendierung d. Prozesses, Daten- übermittlung, evntl. Fokus- wechsel mit Neu- zuweisen der URBs Up(geräte- struktureigener Mutex)

a a

a a

b b

c c

Page 84: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

84

Kapitel 6

Das Versenden visualisierter Daten über

Gesten

In diesem Kapitel wird die Lösung der in Kapitel 4 erläuterten zweiten

Teilaufgabe beschrieben. Wie im vorigen Kapitel wird dabei zuerst die

Aufgabenstellung analysiert, bevor die eigentliche Lösung vorgestellt wird.

6.1 Analyse der Aufgabenstellung zur Gestenerkennung

Die hier gefundene Lösung soll eine exemplarische Lösung für das Versenden

von in OfururO visualisierten Daten über Gesten auf den Touchpads der

darstellen. Welche Gesten letztendlich in der OfuturO-Umgebung eingesetzt

werden muss noch entschieden werden. In der hier vorgestellten Lösung ist die

Auswahl der in der Einleitung vorgestellten Funktionen zur Behandlung von

Daten im Shared Workspace mittels Gesten implementiert.

An erster Stelle der Überlegungen zur Implementation stand die Frage, welche

Geste der einzelnen Aktion zugeordnet werden soll. Jede dieser Gesten soll

dabei den folgenden Satz an Kriterien erfüllen, um dem Anwender die Arbeit zu

erleichtern:

1. Leichte Ausführbarkeit

In erster Linie sollten die Gesten leicht ausführbar sein. Die Gestenausführung

auf den Touchpads soll als Alternative zu einer Implementation der damit

verbundenen Funktionen in der GUI der Workstationsoftware zur Verfügung

stehen. Es soll daher für den Anwender eine Erleichterung darstellen mit Hilfe

der Gesten zu arbeiten anstatt die Aktionen über die GUI auszuführen.

Page 85: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

85

Zudem soll der Benutzer dabei nicht unnötig lange in seinem Arbeitsablauf

unterbrochen werden, was bedeutet, dass es sich um knappe und einfache Gesten

handeln muss. Weiterhin sollen die gewünschten Aktionen möglichst nebenher

ausführbar sein, ohne dem Benutzer die volle Konzentration abzuverlangen.

2. Leichte Erlernbarkeit

Um als Alternative zur GUI überhaupt wahrgenommen zu werden sollen die

Gesten leicht erlernbar sein. Dies ist insbesondere dann wichtig, wenn nicht

immer dieselben Personen an OfuturO-Sitzungen teilnehmen.

3. Hoher Erinnerungswert

Nach einmaliger Unterweisung des Anwenders in den Gebrauch der

Eingabegeräte innerhalb der OfuturO-Umgebung soll dieser sich auch an die

Gesten erinnern können, wenn er längere Zeit nicht an einer OfuturO-Sitzung

teilgenommen hat. Dies ist besonders dann wichtig, wenn Konferenzen nicht an

der Tagesordnung stehen.

4. Nachvollziehbarkeit

Die Bewegungsabläufe welche die Gesten darstellen, sollen einen

Zusammenhang zur ausgelösten Aktion erkennen lassen. Dies ist unter anderem

entscheidend für einen möglichst intuitiven und nebenläufigen Einsatz der

Gesten.

5. Flexibilität in der Ausführungsart

Eine bestimmte Geste kann auf ganz unterschiedliche Arten ausgeführt werden.

Beispielsweise ist es möglich Gesten schnell oder langsam, genau oder ungenau

auszuführen. Je nach Geste können diese Ausführungsarten nicht nur von

Anwender zu Anwender sondern auch in den einzelnen Bewegungsabschnitten

innerhalb der Geste variieren. Eine Implementierung muss daher so erfolgen,

dass sie eine gewisse Toleranz in der Ausführungsart einer Geste aufweist.

Page 86: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

86

Lokalisieren einer Berührung auf der Touchpadoberfläche

Das in 4.2.1 vorgestellte Easy Cat Touchpad von Cirque arbeitet auf Grundlage

der von Cirque entwickelten GlidePoint® Technologie30. GlidePoint® arbeitet

mit Hilfe eines Gitters aus vertikalen und horizontalen Elektroden, das sich unter

der Kunststoffschicht, die als Sensoroberfläche dient, befindet. Das Gitter ist

mit einem integrierten Schaltkreis (IC) verbunden. Der Strom in den

Kreuzungspunkten des Elektrodengitters wird in kurzen Intervallen gemessen

und Stromschwankungen werden registriert und geben Auskunft über die

berührte Fläche. Als Berührungspunkt wird die Position des Mittelpunktes der

berührten Fläche berechnet (siehe Abbildung 6.1 und [Cir03] sowie [Ade03]).

Abb. 6.1: Funktionsweise der GlidePoint® Technologie

Bei Bewegungen über die Touchpadoberfläche wird eine Positionsänderung des

berechneten Fingermittelpunktes von einem Abfrageintervall zum nächsten in

die unter 4.2.1 erwähnten Bewegungswerte umgewandelt. Die Werte variieren je

nach Größe der relativen Positionsänderung zwischen zwei Abfrageintervallen.

Die minimale Schrittweite bei einer registrierten Bewegung beträgt 1, bzw. 0 bei

keiner Bewegung.

30 Die GlidePoint® Technologie ist heute weit verbreitet und kommt in vielen Laptops als Mausalternative, aber auch in Tastaturen zum Einsatz.

Page 87: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

87

Bei den durch das Touchpad übermittelten Werten handelt es sich also nicht um

Absolutwerte innerhalb eines festen Koordinatensystems, sondern lediglich um

Relativwerte. Die Tatsache, dass nur mit Relativwerten gearbeitet werden kann,

stellt ein Problem bei der Implementierung einer Gestenerkennung auf den

Touchpads dar, da auf diese Weise nicht mit Verfahren gearbeitet werden kann,

die auf der Grundlage von Koordinatenmengen arbeiten.

Aus den Relativwerten, die währen der Gestenausführung ausgegeben werden,

können jedoch einfach absolute Koordinaten generiert werden, wenn die

relativen X- und Y-Werte dabei als Versatzvektoren betrachtet werden. Für die

Startkoordinate wird ein beliebiger Punkt im Koordinatensystem, gewählt. Die

jeweils nächste Koordinate ergibt sich dann durch das Addieren des jeweiligen

Versatzvektors zur vorhergehenden Koordinate. Auf diese Weise lässt sich eine

Koordinatenmenge erzeugen, aus deren Verlauf man die Geste erkennen kann.

Voraussetzung ist allerdings, dass die Geste in ihrem gesamten

Bewegungsablauf mit gleich bleibender Geschwindigkeit ausgeführt wird.

Ansonsten würde selbst eine auf dem Touchpad perfekt gezeichnete Figur

aufgrund der sich mit der Ausführungsgeschwindigkeit ändernden Relativwerte

zu einem verfälschten Ergebnis führen. Abbildung 6.2 zeigt die Problematik auf.

Abb. 6.2: Ausführung einer Kreisgeste auf einem Touchpad und Abbildung im

Koordinatensystem beim Versuch die Gestenform aus Relativwerten zusammenzusetzen. In den

schnell ausgeführten Bewegungsabschnitten kommt es zu Dehnungen, in den langsam

ausgeführten Bewegungsabschnitten zu Stauchungen beim Umwandeln der Relativdaten in

Absolutdaten.

Page 88: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

88

Es dürfte einem Anwender aber äußerst schwer fallen, eine Geste mit dem

Finger in gleich bleibender Geschwindigkeit zu beschreiben. Aufgrund dieser

Tatsache wird in der Implementierung der Gestenerkennung teilweise eine

andere Methode angewandt. Statt die Geste über Koordinaten zu identifizieren,

kann der Gestenverlauf anhand von Richtungswechseln verfolgt werden. Ein

Richtungswechsel ist an einem Vorzeichenwechsel der relativen X- bzw. Y-

Werte erkennbar. Auf diese Art lässt sich jedoch nur der allgemeine Verlauf,

nicht aber die exakte Geste bestimmen. Beispielsweise ist es anhand der

relativen Bewegungsdaten schwierig zu entscheiden, wo sich der Endpunkt einer

Geste, die auf dem Touchpad ausgeführt wurde, relativ zum Anfangspunkt

befindet. Dies ist jedoch auch nicht unbedingt erforderlich, wenn man davon

ausgeht, dass der Benutzer eine Gestenfigur eher vom Bewegungsablauf her

korrekt ausführen soll, als sie exakt auf dem Touchpad nachzuzeichnen.

6.2 Realisierung der Gestenerkennung

Das Identifizieren aller Gesten ist in der Klasse fpTouchpadNode implementiert.

Diese wurde wie fpSpacemouseNode von der Avangoklasse fpSerialDevice

abgeleitet. Die Aufgabe beider Klassen ist das Auslesen der Touchpad- bzw.

Spacemausgerätedateien. Dazu muss zuvor der av-daemon gestartet werden, der

die Daten weiterleitet (siehe 6.5).

Während fpTouchpadNode neben dem Weiterleiten der Touchpadgerätedaten

auch eine Interpretation der Daten in Form der Gestenerkennung vornimmt,

werden die Spacemausgerätedaten in fpSpacemouseNode lediglich

weitergeleitet. Beide Dateien verwenden zu diesem Zweck von fpSerialDevice

vererbte Methoden.

Die Auswahl der geeigneten Gesten fand unter Berücksichtigung der oben

aufgeführten Kriterien statt:

Die Geste für das Versenden von Dokumenten, die sich im Shared Workspace

befinden, zur Workstation des rechten Nachbarn, besteht aus der Bewegung des

Fingers auf der Sensorfläche von links unten, diagonal über die Fläche nach

rechts oben.

Page 89: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

89

Die Geste für das Versenden von Dokumenten, die sich im Shared Workspace

befinden, zur Worksation des linken Nachbarn besteht aus der Bewegung des

Fingers auf der Sensorfläche von rechts unten, diagonal über die Fläche nach

links oben.

Beide Gesten symbolisieren ein „Führen“ des zu verschickenden Dokumentes

von sich weg in Richtung des Empfängers. Die Sensorfläche des Touchpads soll

dabei eine Tischfläche symbolisieren, über die ein virtuelles Dokument

verschoben wird.

Beide Gesten auf der Sensorfläche müssen eine Gerade darstellen. Die Gerade

muss eine Steigung aufweisen, wobei der Anfangspunkt beim Versenden von

Dokumenten zum rechten Nachbarn unterhalb und links vom Endpunkt liegen

muss. Zum Versenden von Dokumenten zum linken Nachbarn muss der

Anfangspunkt der Geraden unterhalb und rechts vom Endpunkt liegen.

Damit das Ausführen einer Geste von gewöhnlichen Bewegungsdaten

unterschieden werden kann, muss während der Ausführung der linke Button des

Touchpads gedrückt gehalten werden. Eine Geste kann so mit nur einer Hand

ausgeführt werden, indem der Button mit dem Daumen gehalten und die

Gestenbewegung mit dem Zeige- oder Mittelfinger ausgeführt wird.

Obwohl sich, wie oben erläutert, bei einer Gestenerkennung auf den Touchpads

das Umwandeln der relativen Positionsdaten in Koordinaten nicht empfiehlt,

wurde hier bei der Implementation der Erkennung dieser Gesten, dennoch so

verfahren. Der Grund dafür liegt darin, dass eine Gerade eine der einfachsten

geometrischen Formen darstellt. Hierbei spielt es keine Rolle, ob bestimmte

Abschnitte der Gestendurchführung schnell oder langsam erfolgen. Für die Form

der Geraden bleibt dies auch ohne Folgen, wenn die relativen Bewegungswerte

die sie darstellen, aufsummiert und als Koordinaten angezeigt werden.

Die Gestenerkennung wird dadurch realisiert, dass zunächst alle Koordinaten aus

denen die Gestenfigur besteht, zwischengespeichert werden. Die Koordinaten

werden dabei durch Addieren der relativen Bewegungsvektoren, die als Daten

vom Touchpad übermittelt werden, auf die jeweils zuvor berechnete Koordinate

ermittelt. Als erste Koordinate wird willkürlich der Koordinatenursprung P(0/0)

verwendet, der somit als Startpunkt der Gestenfigur dient.

Page 90: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

90

Nach dem Speichern der Werte werden zunächst nur Startpunkt und Endpunkt,

auf ihre relative Lage zueinander geprüft. Wie bereits erwähnt sind nur Gesten

gültig, die von unten nach oben rechts, bzw. von unten nach oben links geführt

werden. Trifft eine dieser Bedingungen zu werden Steigung und Länge der

Geraden aus den Koordinaten für den Anfangs- und Endpunkt ermittelt.

Handelt es sich dabei um gültige Werte, d.h. entsprechen die Werte den

konfigurierten Vorgaben, wird die Gestenfigur daraufhin geprüft, ob es sich auch

tatsächlich um eine Gerade handelt. Zu diesem Zweck werden sämtliche die

Figur darstellenden Koordinaten durchlaufen und deren X-Komponenten in die

Geradengleichung y=mx eingesetzt. m ist dabei die zuvor aus End- und

Anfangspunkt ermittelte Steigung. Die y-Komponente jeder Geraden wird nun

mit dem Gleichungswert verglichen, wobei die y-Komponenten um einen festen

Wert, dem Toleranzwert nach oben oder unten hin abweichen darf. Die

Lösungsmenge der erlaubten Koordinaten liegt somit innerhalb eines

rechteckigen Intervalls, dessen Längsachse die durch die Geradengleichung

repräsentierte Gerade darstellt (Abbildung 6.3).

Abb. 6.3: Gestenverlauf innerhalb des Toleranzintervalls das durch die Gerade definiert wird, die

durch Anfangs- und Endpunkt der Geste verläuft.

Durch den Toleranzwert wird erreicht, dass eine ausgeführte Gestenbewegung

des Benutzers keine exakte Gerade darstellen muss. Stattdessen genügt es eine

angenäherte Gerade mit dem Finger zu führen. Ob eine Geste als Gerade erkannt

wird, ist sowohl von der Geschwindigkeit mit der die Geste ausgeführt wird, als

auch von dem Maß abhängig in dem die Bewegungsausführung von der

Page 91: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

91

Darstellung einer Geraden abweicht. Je nach gewünschter Toleranz und

erwarteter Gestenausführungsgeschwindigkeit muss dieser Toleranzwert

angepasst werden. Es ist daher schwierig eine Regel zum Ermitteln des Wertes

aufzustellen. Am besten lässt er sich durch praktisches Ausprobieren ermitteln.

Der Toleranzwert liegt in fpTouchpadNode bei 100, da dieser Wert sich als

optimal für eine zügig durchgeführte Gestenbewegung erwiesen hat, die nicht

allzu stark von einer Geraden abweicht.

Da intern alle Koordinaten in einem nur begrenzten Speicherbereich abgelegt

werden, darf das Ausführen einer Geste nicht zu lange dauern, da ansonsten zu

viele Koordinaten generiert würden31. Wird die Geste als Gerade erkannt, soll

das Versenden des im Shared Workspace befindlichen Dokumentes an die linke

bzw. rechte Nachbarworkstation erfolgen. Zu diesem Zweck müssen die

Netzwerkschnittstellen der Client und Serversoftware noch angepasst werden.

Zum jetzigen Zeitpunkt sind noch keine der dafür nötigen Funktionen in Client

und Server implementiert.

Zum Schicken eines visualisierten Dokumentes an alle Konferenzteilnehmer

gleichzeitig, wird das Beschreiben einer Kreisbewegung auf der Sensorfläche

des Touchpads ausgeführt. Die Kreisbewegung soll dabei für den globalen

Charakter der damit ausgelösten Aktion des Versendens der Daten an alle

Teilnehmer stehen. Wie bei den Gesten zum Verschicken eines Dokumentes von

der eigenen Workstation zu einer anderen, muss auch hier während der

Ausführung der linke Touchpadbutton gedrückt gehalten werden. Die

Kreisbewegung muss außerdem im Uhrzeigersinn erfolgen. Der Startpunkt der

Gestenbewegung ist beliebig wählbar, vorgegeben ist jedoch das mindestens

einmalige Beschreiben eines Kreises.

Zum Erkennen einer kreisförmigen Geste wird das oben bereits beschriebene

Verfahren der Interpretation von Richtungswechseln innerhalb einer

Gestenausführung verwendet.

Das Ausführen einer Kreisfigur lässt sich an aufeinander folgenden

Vorzeichenwechseln der X- und Y-Relativwerte erkennen. Auf jeden 31 Da die Touchpadfläche begrenzt ist, ist eine zu lange dauernde Geste die eine Gerade darstellt, gleichzusetzen mit einer zu langsam ausgeführten Geste.

Page 92: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

92

Vorzeichenwechsel der X-Werte muss dabei ein Vorzeichenwechsel des Y-

Wertes erfolgen und umgekehrt. Insgesamt müssen mindestens drei Wechsel

erfolgen um einen vollständigen Kreis zu beschreiben (Abbildung 6.4).

Abb. 6.4: Vorzeichenwechsel der relativen Bewegungswerte beim Ausführen einer Kreisgeste

auf dem Touchpad

Eine höhere Anzahl an auftretenden Vorzeichenwechseln ist ebenfalls gültig,

solange dabei die alternierende Reihenfolge von Vorzeichenwechseln der X- und

Y-Werte eingehalten wird. Wird diese Reihenfolge nicht eingehalten ist die

Geste ungültig. Dies trifft ebenso auf Gesten zu, bei denen die ersten drei

Vorzeichenwechsel dieser Regel entsprechen (also eine Kreisbewegung

ausgeführt wird), die darauf folgenden aber davon abweichen.

Pausen in der Gestendurchführung, bzw. sehr langsam ausgeführte Gesten

können zur Ausgabe von Nullwerten führen. Damit diese Nullwerte keine

Registrierung eines Vorzeichenwechsels bewirken, etwa wenn zuvor negative

Bewegungsdaten übermittelt wurden, werden Nullwerte bei der Untersuchung

auf Vorzeichenwechsel ignoriert.

Page 93: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

93

6.3 Analyse der Aufgabenstellung zur Zuordnung von

Eingabegeräten zu Workstations

Neben dem Erkennen der jeweiligen Gesten auf den Touchpads musste zum

Zeitpunkt der Implementierung der hier vorgestellten Lösung noch ein internes

Problem gelöst werden, mit dem der Anwender selbst nicht in Berührung

kommt. Da alle Eingabegeräte als permanente Werkzeuge in den OfuturO-Tisch

integriert sind, ergab sich das Problem der Zuordnung der Geräte zu den

angeschlossenen Workstations. Dabei muss berücksichtigt werden, dass

möglicherweise nicht immer alle Plätze am Tisch belegt sind. Dadurch können

bestimmte Aktionen von vornherein nicht sinnvoll sein, wie beispielsweise das

Versenden eines Dokumentes an einen nicht vorhandenen Sitznachbarn.

Außerdem soll jede Workstation an jeden Platz beliebig an- und abgeschlossen

werden können. Es dürfen also keine Annahmen darüber gemacht werden,

wessen Workstation sich gerade an einem belegten Platz befindet.

Aus diesen Vorgaben resultiert, dass eine Vorgehensweise gefunden werden

musste, die vorgibt, wie die einzelnen Eingabegeräte, die sämtlich an den

Visualisierungsserver angeschlossen bleiben sollen, den immer nur zeitweise

angeschlossenen Workstations zugeordnet werden können.

Die Serversoftware, welche auf dem Visualisierungsserver läuft und die

Kommunikation der einzelnen Workstations mit dem Visualisierungssystem

regelt, speicherte zu diesem Zeitpunkt bereits intern die IP-Adressen der mit ihr

verbundenen Workstations. Diese Liste konnte durch eine Anfrage über das

lokale Netzwerk eingeholt werden. Die Liste machte allerdings keine Angaben

darüber, an welchem Platz sich angeschlossene Workstations befinden. Um diese

Informationen auch noch ermitteln zu können, wurden verschiedene

Lösungsmöglichkeiten in Betracht gezogen:

- Die Benutzer müssen ihre Workstations in einer festgelegten Reihenfolge

anschließen. Wird ein Platz frei, so muss der nächste Anwender der sich der

Konferenz mit seiner Workstation anschließen will, den der Reihenfolge nach

ersten freien Platz belegen. Die Serversoftware kann auf diese Weise intern eine

Zuordnung der einzelnen Teilnehmer zu den Plätzen am OfuturO-Tisch machen.

Page 94: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

94

Vorteil: Es sind keine weiteren Konfigurationsmaßnahmen von Seiten der

Anwender nötig. Der DHCP-Dienst kann zur Vergabe der IP-Adressen an die

Workstations verwendet werden.

Nachteil: Eine große Verantwortung für den reibungslosen Ablauf einer Sitzung

liegt beim Anwender. Wird einmal die Vorgabe der Anschlussreihenfolge nicht

beachtet, geht der Server von falschen Tatsachen aus und die gesamte

Eingabeverarbeitung arbeitet falsch. Voraussetzung ist also, dass jeder

Anwender über die Vorgabe informiert ist und diese auch befolgt.

- Jeder Platz wird durchnummeriert und jeder Platznummer wird eine feste IP-

Adresse zugewiesen. Anhand der IP-Adressen, kann die Serversoftware

erkennen an welchen Plätzen sich Workstations angemeldet haben.

Vorteil: Der Anwender kann einen beliebigen freien Platz am OfuturO-Tisch

auswählen.

Nachteil: Es kann kein DHCP-Service zur IP-Nummernvergabe verwendet

werden. Stattdessen muss der Anwender selbst vor dem Anschluss seiner

Workstation zuerst die IP-Adresse seines Systems anpassen. Darüber hinaus

muss die IP-Adresse mit der übereinstimmen, die dem gewählten Platz am Tisch

entspricht. Wie in der obigen Lösung liegt somit auch bei dieser Lösung ein

großer Teil der Verantwortung beim Anwender.

- Jeder Platz wird durchnummeriert und der erste Schritt beim Einloggen in die

Workstationsoftware besteht in der Angabe der Platznummer an der sich der

Anwender gerade befindet. Erst danach steht dem Anwender die eigentliche

Workstation-GUI zur Verfügung. Die IP-Adresse der Workstation wird beim

Anmelden am Server zusammen mit der Platznummer abgelegt.

Vorteil: Die Teilnehmer können die Sitzplätze beliebig auswählen. Der DHCP-

Service kann genutzt werden, so dass keine weiteren Einstellungen am System

der Workstations nötig sind. Eine falsche Angabe beim Einloggen kann erkannt

und als Fehler gemeldet werden, wenn es sich um eine Nummer handelt, die

bereits vergeben ist.

Page 95: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

95

Nachteil: Der Benutzer ist zum zusätzlichen Schritt der Platznummerneingabe

gezwungen.

6.4 Realisierung der Zuordnung von Eingabegeräten zu

Workstations

Um das Problem mit der Zuweisung der Gerätepaare zu den einzelnen

Workstations zu lösen, wurde die dritte der oben vorgestellten

Lösungsalternativen gewählt. Somit werden die einzelnen Arbeitsplätze künftig

mit Nummern versehen und ein Benutzer, der mit der GUI der

Workstationsoftware arbeiten möchte, muss als ersten Schritt beim Einloggen

angeben, an welchem Platz er sich befindet. Platznummer, sowie IP-Adresse der

angemeldeten Workstation, werden von der Serversoftware vermerkt. Um dies

zu realisieren war eine Änderung in der Serversoftware nötig, die vom Autor der

Software vorgenommen wurde.

Als nächstes musste eine feste Reihenfolge unter den Gerätepaaren beachtet

werden. Wie unter 5.2 beschrieben, wird eine solche Reihenfolge bereits intern

vom SMTP-Treiber vorgenommen. Sie ergibt sich dabei aus der Reihenfolge in

der die Geräte am USBus angeschlossen werden. Hier soll die Konvention

gelten, dass jedes Gerätepaar, der Workstation mit gleicher Nummer zugewiesen

wird. Weiter soll hier davon ausgegangen werden, dass die Nummerierung an

den Arbeitsplätzen für die Workstations entgegen dem Uhrzeigersinn

vorgenommen wird (Abbildung 6.5).

Page 96: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

96

Abb. 6.5: Platznummernvergabe am OfuturO-Tisch

Auf diese Weise ist für jede Gerätepaarnummer die eigene Workstationnummer,

sowie die der rechten und linken Nachbarworkstation definiert32. Wird auf einem

der Touchpads eine gültige Geste erkannt, erfolgen die damit verbunden

Aktionen.

Damit der Klasse fpTouchpadNode die Nummer des eigenen Gerätepaares

bekannt ist, muss ihr diese SMTP-treiberinterne Nummer zuvor erst vom Treiber

bekannt gegeben werden. Wie bereits in der Beschreibung der Read-Funktion

unter 5.4.3 erwähnt, wird vom SMTP-Treiber, neben den 8 eigentlichen

Datenbytes, die vom Touchpad gesendet werden, noch ein neuntes Byte in die

Gerätedatei weitergeleitet. Dieses Byte wird als erstes verschickt und enthält die

vom SMTP-Treiber intern verwaltete Gerätepaarnummer zu welcher das

Touchpad gehört. Beim Auslesen der Touchpadgerätedatei greift

fpTouchpadNode jedes Mal auf dieses erste Byte zu, sobald eine Geste

identifiziert worden ist.

6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode

Sowohl fpTouchpadNode als auch fpSpacemousNode sind von fpSerialDevice

abgeleitet, einer Klasse zum Verwalten von Geräteeingaben über eine serielle

Schnittstelle.

32 Workstation 1 hat hierbei als linken Nachbarn die Workstation 3, während diese als rechten Nachbarn wiederum Workstation 1 hat.

Page 97: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

97

Die Methoden die in diesen Klassen (re)implementiert wurde ist die vererbte

Methode readLoop von fpSerialDevice, die als virtuell deklariert ist und in den

Klassen fpTouchpadNode und fpSpacemouseNode überschrieben wurden. Neben

readLoop erben beide Klassen noch weitere, von fpSerialDevice und seinen

Vorgängern implementierte Methoden. Auf diese Methoden soll hier jedoch

nicht eingegangen werden, da sie unverändert übernommen worden sind und in

den Avango-Quellcodes eingesehen werden können.

Instanzen der Klassen fpTouchpadNode und fpSpacemouseNode werden über ein

Schemeskript erstellt. Im folgenden wird die überschriebene Methode readLoop,

sowohl für fpSpacemouse als auch für fpTouchpad vorgestellt.

Die Methode readLoop

Diese Methode stellt das Kernstück der Klassen fpTouchpadNode und

fpSpacemouseNode dar. Hauptaufgabe von readLoop ist das Übertragen der

Gerätedaten über den av-daemon, so dass Avango-Objekten der Zugriff darauf

ermöglicht wird. Der Zugriff erfolgt dabei über Matrizen, in die Translations-

und Rotationswerte übertragen werden. Die Matrizen sind Bestandteil einer so

genannten Station. Eine Station kommt einem Ereignisempfänger gleich, in dem

Bewegungen und Buttonbetätigungen gespeichert werden. Außer Matrizen

beinhaltet eine Station zu diesem Zweck noch Felder für das Anzeigen von

Buttonwerten und Felder für das Anzeigen sonstiger Werte, für den Fall, dass ein

Gerät über weitere Funktionen verfügt. Ein Gerät kann mehrere Stations

besitzen, wobei es der Implementation von readLoop überlassen ist festzulegen,

wie und welche Daten in die Felder der Station übertragen werden.

Aufgabe des av-daemons ist es die in den Station-Komponenten gespeicherten

Werte in einen Speicherbereich zu übertragen von dem aus eine Avango-

Applikation sie auslesen kann33.

Das Auslesen erfolgt über einen so genannten Sensor. Der Sensor wiederum ist

mit einem DeviceService verbunden, der mit dem av-daemon verbunden ist.

33 Realisiert wird dies durch ein Shared-Memory-Segment, das vom av-daemon beschrieben und von einer Avango- Applikation ausgelesen werden kann.

Page 98: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

98

Wird nun ein von fpDCS34 abgeleitetes Objekt instanziiert, kann es die eigene

Matrix mit der des Sensors verknüpfen. Die Sensormatrix wiederum wird über

den av-daemon mit den von einer Station übertragenen Werten versorgt.

fpSpacemouseNode sorgt lediglich für das Übertragen der aus der

Spacemausgerätedatei ausgelesenen Daten an eine verknüpfte Station. Dazu

werden die Werte für die Rotationen und für die Translationen in entsprechende

Rotations- und Tranlationsmatritzen übertragen. Die Ergebnismatrix, die an die

Station weitergegeben wird, ergibt sich dann aus der Multiplikation aller

Matrizen miteinander.

Da fpTouchpadNode keine Rotationsdaten ausliest, müssen hier nur

Translationsdaten in eine Matrix übertragen und an die Station weitergeleitet

werden. Darüber hinaus wird in fpTouchpadNode eine Interpretation der

empfangenen Gerätedaten in Form der Gestenerkennung vorgenommen. Dabei

wird zuerst auf die Kreisfigur geprüft. Bei einem Fehlschlagen, d.h. es konnte

keine Kreisgeste erkannt werden, werden die Gestendaten auf eine mögliche

Gerade hin untersucht.

Wird eine Gerade als Geste identifiziert, wird mittels einer Netzwerkanfrage

vom Server die Liste mit den angeschlossenen Workstations angefordert und in

einer internen Datenstruktur zwischengespeichert. Anhand der

Workstationnummern findet eine Zuordnung zwischen dem Touchpad und der

damit verbundenen Workstation statt. Dabei wird überprüft ob eine Workstation

an dem Platz zu dem das Touchpad gehört, überhaupt vorhanden ist. Dadurch

wird vermieden, dass Anfragen bearbeitet werden, die von einem Gerät gemacht

werden, das sich an einem unbesetzten Platz befindet. Anschließend wird

überprüft, ob die Workstation mit der Nummer zu der gesendet werden soll,

angeschlossen ist. Beides wird dadurch erreicht, dass von der Serversoftware die

Liste mit den im Netzwerk angeschlossenen Workstations angefordert wird. Da

sich diese Liste jederzeit ändern kann, erfolgt das Anfordern jedes Mal, wenn ein

Dokument über eine Geste verschickt werden soll.

Sind sowohl Ausgangs- als auch Zielworkstation identifiziert und als vorhanden

registriert, erfolgt das Verschicken des Dokumentes mittels eines Signals an die

Serversoftware. Das Signal beinhaltet die Art der auszuführenden Aktion:

34 Ein fpDCS-Objekt ist die unterste Instanz eines Avango-Knotens, aus denen ein Avango-Scene-Graph aufgebaut wird.

Page 99: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

99

Das Übertragen der Datensätze im Shared Workspace an die eigene, eine andere

als die eigene oder alle Workstations gleichzeitig.

Page 100: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

100

Kapitel 7

Ergebnis

In diesem Kapitel sollen die in dieser Diplomarbeit erzielten Ergebnisse

ausgewertet und interpretiert werden. Dabei werden Vorteile und Schwachstellen

der Lösungen aufgezeigt und gegebenenfalls Verbesserungsvorschläge gemacht.

Grundlage für die Bewertung sind die nachfolgend vorgestellte

Beispielapplikation, sowie die Erfahrungswerte, die während der Ausarbeitung

der einzelnen Lösungsschritte gesammelt wurden.

7.1 Die Beispielapplikation zur Demonstration der

erzielten Ergebnisse

Die Bestandteile der Beispielapplikation an der die Funktionalität der

gefundenen Lösungen demonstriert werden kann, wurden als Schemeskripte

implementiert. Der erste Teil ist im File SampleApplikation.scm codiert

und kann mit der Befehlszeile

exec $AV_HOME/build/bin/aview.sh–v –o device:mon –f

SampleApplikation.scm

aus einem Shellskript heraus aufgerufen werden. Alternativ können die in

SampleApplikation implementierten Befehle auch einzeln in die Avango-Shell

eingegeben werden. Durch Aufrufen der oben genannten Befehlszeile wird die

Avango-Shell auf dem Visualisierungsserver gestartet und es werden zwei

Grafikobjekte auf dem Bildschirm dargestellt, ein dreidimensionales Objekt in

Form eines Würfels und ein zweidimensionales Objekt in Form eines

Textdokumentes. Die Darstellung auf dem Bildschirm steht hierbei

stellvertretend für die Darstellung von Grafikobjekten, die in Zukunft auf der

Projektionsfläche des OfuturO-Tisches erfolgen soll. Die Grafikobjekte Würfel

und Textdokument entsprechen dabei Daten, die im Shared Workspace lagern.

Page 101: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

101

Um die Objekte mit Hilfe von Spacemaus und Touchpad steuern zu können,

muss noch der av-daemon gestartet und diesem das zweite Teil der

Beispielapplikation in Form des Schemeskriptes ofuturo-devices.scm

übergeben werden. Das Skript erstellt und konfiguriert Avango-Objekte vom

Typ Device, welche die Touchpad- und Spacemausgerätedateien auslesen und an

den av-daemon weiterleiten. Damit die Daten aus den Gerätedateien ausgelesen

werden können muss der SMTP-Treiber geladen sein. Wenn mindestens eine

Magellan Spacemouse Plus und ein Cirque Easy Cat Touchpad am USBus des

Visualisierungsservers angeschlossen sind, kann der dargestellte Würfel mit der

Spacemaus und das dargestellte Textdokument mit dem Touchpad gesteuert

werden. Die Spacemaus ermöglicht dabei Rotationen um alle Raumachsen des

Würfels und Translationen entlang aller Achsen. Das Touchpad ermöglicht die

Steuerung des Textdokumentes auf dem Bildschirm entlang der X- und Y-

Achse. Sind mindestens noch eine weitere Spacemaus und ein weiteres

Touchpad angeschlossen, kann der Eingabefokus durch einen Buttondruck auf

der momentan den Fokus besitzenden Spacemaus gewechselt werden. Der

Wechsel erfolgt dabei auf das Gerätepaar mit der Nummer, die dem gedrückten

Button entspricht. Die Gerätepaarnummer wird von der Anschlussreihenfolge

der Geräte bestimmt (siehe auch 5.2 für Details).

Ist der GVM Server aktiviert, kann ein Touchpad eingesetzt werden, um im

Shared Workspace gelagerte Daten mit Hilfe von Gesten zu versenden.

Voraussetzung ist dabei, dass zumindest zwei Workstations am Server

angemeldet sind. Besitzt ein Touchpad den Eingabefokus und ist es einer der

Workstations zugeordnet (siehe 6.4 für das Verfahren der Zuordnung zwischen

Workstations und Eingabegeräten) können die Daten im Shared Workspace an

eine andere Workstation verschickt werden. Durch das Ausführen einer

diagonalen Bewegung von links unten nach rechts oben kann der Anwender die

Daten an die von seiner Workstation aus gesehen rechte Nachbarworkstation

senden. Durch das Ausführen einer diagonalen Bewegung von rechts unten nach

links oben kann der Anwender die Daten an die von seiner Workstation aus

gesehen linke Nachbarworkstation senden. Durch das Ausführen einer

Kreisbewegung im Uhrzeigersinn kann der Anwender die Daten an alle im

Netzwerk angeschlossenen Workstations, inklusive seiner eigenen senden.

Page 102: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

102

Da die Beispielapplikation nicht wirklich Daten darstellt und steuern lässt, die

sich im Shared Workspace befinden, kann es sich bei den Daten die aus dem

Shared Workspace versendet werden, um andere Daten handelt, als die welche

auf dem Bildschirm visualisiert sind.

7.2 Betrachtung der Lösung zum Einbinden der

Eingabegeräte in OfuturO

Die Beispielapplikation zeigt, dass die gestellten Anforderungen an die

Eingabeverarbeitung in OfuturO erfüllt sind. Sowohl 2D- als auch 3D-Daten

können mit den Eingabegeräten gesteuert werden. Die Eingabe ist dabei auf

einen bestimmten Benutzer beschränkt, der die Eingabemöglichkeit

weiterreichen kann.

Der SMTP-Treiber arbeitet dazu praktisch indem er eine ganze Reihe von

einzelnen Geräten zu einem Gerät abstrahiert. Dieses SMTP-Gerät stellt die

kombinierten Eingabemöglichkeiten von einem Touchpad für Bewegungen in

der Ebene und von einer Spacemaus für Bewegungen im Raum zur Verfügung.

Es erlaubt dazu eine exklusive Eingabe über bis zu acht Gerätepaare und den

Wechsel des Fokus’ für die Eingabe.

Dabei werden die Flächenbewegungsdaten und die Raumdaten in jeweils

gesonderte Gerätedateien umgeleitet. Eine Anwendung die auf diese

Gerätedateien zugreift bekommt von der paarweisen Zuordnung einzelner Geräte

ebenso nichts mit wie von einem Wechsel des Eingabefokus. Dadurch

beschränkt sich die Aufgabe der Anwendung im Auslesen der Raum- und

Flächenbewegungsdaten aus den beiden Gerätedateien um diese dann nach

eigenem Ermessen zu verarbeiten. Da der SMTP-Treiber als eigenständiges

Kernelmodul implementiert ist, benötigt er im Gegensatz zu vielen anderen

Eingabegerätetreibern weder das Modul input noch das Modul hid.

Der SMTP-Treiber ist allerdings speziell auf die Anforderungen der

Eingabeverarbeitung in der OfuturO-Umgebung ausgelegt. Das macht einen

universellen Einsatz unmöglich. Will man flexibler mit der Verarbeitung von

Page 103: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

103

Eingabedaten umgehen, empfiehlt sich eher der Einsatz einzelner Gerätetreiber

für jeden Gerätetyp. Obwohl viele Treiber durchaus mehrere Geräte behandeln,

ist die im SMTP-Treiber gewählte Vorgehensweise zwei Gerätearten zu Paaren

zu verknüpfen für Treiber unüblich. Normalerweise beschränken sich diese

allein auf das Übertragen der Gerätedaten, sowie auf Konfigurationsfunktionen.

Bei der hier gefundenen Lösung war vor allem die Vorgabe einer

Eingabeverarbeitung über einen Fokus ausschlaggebend dafür, dass sowohl

Spacemaus als auch Touchpad von nur einem Treiber behandelt werden.

Es mag Anwendungen im Bereich der Konferenzszenarien oder der Virtual

Reality allgemein geben, in der 2D- und 3D-Daten ähnlich wie beim OfuturO-

Projekt durch kombinierte 2D- und 3D-taugliche Eingabegeräte bearbeitet

werden sollen. Für diese Anwendungen stellt der SMTP-Treiber eine

Beispiellösung dar, wie man Geräte unterschiedlicher Art innerhalb eines

Kerneltreibers behandeln und miteinander wechselwirken lassen kann. In den

meisten Fällen dürfte es aber einfacher sein ein Wechselwirken von Geräten

untereinander, außerhalb eines Kerneltreibers zu implementieren. Die Erfahrung

mit dem SMTP-Treiber zeigt, dass die Problematik der race conditions, die in

Kerneltreibern sowieso schon besteht, massiv zunimmt, wenn auch noch

Abhängigkeiten der Geräte untereinander beachtet werden müssen.

So findet sich eine Schwachstelle in der Lösung der race conditions Problematik

innerhalb der Read-Funktion (siehe 5.5). Eine kritische Situation tritt dabei auf,

sobald der Eingabefokus gewechselt wird. Der Fokuswechsel wird immer durch

einen Buttondruck auf der Spacemaus ausgelöst, die momentan den

Eingabefokus besitzt. Der Wechsel, sowohl für die Spacemaus als auch für das

dazugehörige Touchpad, findet somit im Read- Prozess, welcher der Spacemaus-

Gerätedatei zugewiesen ist, statt (rot beschrifteter Bereich in Abbildung 5.3). Zu

diesem Zeitpunkt hat Read aber schon die Kontrolle über das globale Mutex

wieder zurückgegeben. Ein Prozess, der die Touchpad- Gerätedatei ausliest,

könnte jetzt bereits parallel die Nummer des Eingabefokus besitzenden

Gerätepaares auslesen, obwohl diese kurze Zeit danach vom Spacemaus

auslesenden Read samt der URB- Zuweisung geändert wird. Die Folge ist, dass

der Touchpad auslesende Prozess versucht Daten von einem Gerät zu lesen,

Page 104: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

104

dessen URB gar nicht mehr mit dem USB- Subsystem verlinkt ist. In diesem Fall

wird einer Touchpad- Gerätedatei auslesenden Applikation anstatt der

Gerätedaten einmal eine Fehlübermittlung angezeigt, bevor die Daten wieder

korrekt ausgelesen werden.

Da dies in der Praxis jedoch selten auftreten, bzw. falls doch, für den Anwender

unbemerkt bleiben dürfte und zudem keine schwerwiegenden Fehler dadurch

ausgelöst werden, wurden hier keine weiteren Koordinierungsmaßnahmen

getroffen.

Alternative Lösungsmöglichkeit

Ein Einbinden der Eingabegeräte in die OfuturO-Umgebung ist auch anders

denkbar:

Statt die gesamte Logik zur paarweisen Verknüpfung von Spacemäusen und

Touchpads sowie dem Eingabefokuswechsel direkt im Treiber zu

implementieren, könnte sie auch in die die Gerätedateien auslesenden

Avangoklassen verlagert werden. Die Aufgabe der Klasse fpSpacemouse bzw.

fpTouchpad wäre dann das Auslesen von nicht nur einer, sondern mehrerer

Gerätedateien, da normalerweise jedem am USBus angeschlossenen Gerät eine

eigene Datei zugewiesen wird. Es würden dann zwei Treiber benötigt, (ein

Spaceaustreiber sowie ein Touchpadtreiber) deren Aufgabe lediglich im

Übertragen der Daten von den Geräten in die entsprechenden Dateien und

eventueller Gerätekonfigurationsfunktionen bestünde. Die paarweise Zuweisung

von Spacemouse und Touchpad müsste in diesem Fall in den Avangoklassen

implementiert werden, ebenso wie die Funktion zum Fokuswechsel. Innerhalb

der Klassen müsste dann entschieden werden von welchem der angeschlossenen

Geräte die Daten über den av-daemon weitergeleitet werden.

Ein Problem wäre bei dieser Lösung die Kommunikation zwischen der Klassen

die die Spacemauseingabe und der Klasse welche die Touchpadeingabe

behandelt. Eine Kommunikation wäre nötig um einen Eingabefokuswechsel zu

koordinieren, da die Touchpadklasse über jeden Fokuswechsel informiert

werden müsste den die Spacemausklasse registriert. Beim SMTP-Treiber fällt

Page 105: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

105

dieses Problem weg, da Spacemaus- und Touchpadgeräte von globalen

Strukturen behandelt werden und sich über diese Strukturen koordinieren

können.

Eine weitere Alternative ergibt sich bezüglich der Rolle des SMTP-Treibers als

Kernelmodul: Anstatt einen Treiber als eigenständiges Modul zu implementieren

besteht besonders für Eingabegerätetreiber die Möglichkeit auf bereits

vorhandenen Module aufzubauen. Das Modul hid stellt zu diesem Zweck schon

viele Funktionen für die Behandlung von Mensch-Computer-Schnittstellen unter

Linux zur Verfügung, die durch das Modul input für die Behandlung von

Eingabeschnittstellen noch spezialisiert werden können. Viel

Implementierungsarbeit, die bei der Programmierung des SMTP-Treibers

erforderlich war, wird durch Verwenden dieser Module schon

vorweggenommen. Allerdings geht der verringerte Programmieraufwand zu

Lasten der Kontrolle über die Geräteverwaltung. Da der SMTP-Treiber ein sehr

spezialisierter Treiber ist, der zwei Geräte in einem ganz bestimmten Konsens

zueinander behandelt, erschien es einfacher auf vorgefertigte Module zu

verzichten, die eher darauf ausgelegt sind einzelne Geräte auf herkömmliche

Weise zu behandeln.

Verbesserungsmöglichkeiten

Der SMTP-Treiber stellt in seiner jetzigen Form noch keine Möglichkeiten zu

einer Konfiguration der Geräte zur Verfügung. Damit fehlt dem Treiber eine der

grundlegenden Funktionen die ein Kerneltreiber gewöhnlich übernimmt.

Insbesondere die Spacemäuse verfügen über eine große Zahl von

Konfigurationsmöglichkeiten (siehe 4.2.2). Diese Funktionen könnten mit Hilfe

des control-endpoints implementiert und über die ioctl-Schnittstelle zugänglich

gemacht werden. Damit wäre die Möglichkeit gegeben die in der Hardware

implementierten Funktionen beispielsweise über Auswahlmenus auf der GUI der

Workstations zu steuern.

Eine weitere Konfigurationsmöglichkeit könnte darin bestehen den

Eingabefokus steuern zu können. In der momentanen Implementierung ist dies

Page 106: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

106

nur durch den Buttondruck auf einer Spacemaus möglich, die gerade den

Eingabefokus besitzt.

7.3 Betrachtung der Lösung zum Versenden

visualisierter Daten über die Gesten

7.3.1 Die Gestenerkennung auf den Touchpads

Die Beispielapplikation zeigt, dass das Versenden von visualisierten Daten über

Gesten, die Diagonalen von links unten nach rechts oben, bzw. von rechts unten

nach links oben, darstellen, in der Praxis ohne größere Schwierigkeiten

funktioniert. Defizite treten allerdings beim Beschreiben der Kreisgeste auf. Hier

wird nicht jede Kreisbewegung als solche erkannt, was vor allem darauf

zurückzuführen ist, dass das Beschreiben eines Kreises mehr Sorgfalt erfordert

als das Beschreiben einer Diagonalen.

Die unter 6.1 angeführte Problematik zeigt außerdem, dass die in OfururO

eingebundenen Touchpads nur bedingte Möglichkeiten bieten um auf der

Sensorfläche beschriebene Figuren abzufragen. Das Hauptproblem liegt hierbei

in der unter 6.1 angeführten Problematik, dass die in Touchpads verwendete

Technologie keine Ausgabe von Bewegungsdaten als Absolutwerte, sondern nur

in Form von Relativwerten erzielt. Eine Figureninterpretation ist dadurch in

erster Linie durch Analyse von Änderungen in den Bewegungsabläufen durch

Betrachten von Vorzeichenwechseln in der Folge der übermittelten Werte

möglich. Dadurch kann in der Regel zwar der grobe Bewegungsablauf, nicht

jedoch die exakte Figur die auf der Sensorfläche ausgeführt wurde, erfasst

werden. So erkennt die in fpTouchpad implementierte Funktion zum

Registrieren einer Kreisfigur, eine solche in jedem Gestenverlauf, der einen

dreimaligen, zwischen X- und Y-Werten alternierenden Vorzeichenwechsel nach

sich zieht. Dies ist jedoch nicht nur beim Beschreiben eines Kreises der Fall.

Jede Geste, die eine konvexe Fläche umschreibt erfüllt diese Bedingungen. Als

Beispiel seien hier ein Dreieck oder ein Rechteck genannt.

Page 107: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

107

Hinzu kommt, dass keine Zeigevorrichtung durch das Touchpad gesteuert wird,

anhand der ein Benutzer die von ihm gemachte Geste verfolgen kann. Dieser

Umstand dürfte eine Implementierung komplexerer Gesten erschweren.

Es muss jedoch zwischen dem exakten Nachvollziehen einer Figur und einer

Geste unterschieden werden. Eines der unter 6.1 angeführten Kriterien für die

Implementierung der Gestenerkennung ist, eine gewisse Freiheit in der

Gestenausführung zu erlauben.

Verbesserungsmöglichkeiten

Um eine genauere Gestenausführung und komplexere Gesten zu ermöglichen,

wäre es von Vorteil wenn der Gestenverlauf durch eine Zeigevorrichtung auf der

Projektionsfläche der OfuturO-Plattform nachvollzogen werden könnte. Die

Zeigevorrichtung könnte eingeblendet werden, sobald auf dem Touchpad der

Button gedrückt und somit der Beginn einer Gestenbewegung signalisiert wird.

Der Zeiger könnte dabei die zurückgelegte Spur auf der Projektionsfläche

markieren, so dass der Benutzer jederzeit weiß, wo er sich relativ zum

Ausgangspunkt der Gestenbewegung befindet. Auf diese Weise könnten die

Relativwerte, die vom Touchpad ausgegeben werden zu einer Reihe von

Koordinaten zusammengesetzt werden, die eine Figur darstellt, welche exakt der

auf der Projektionsfläche beschriebenen Figur entspräche. Die so konstruierte

Figur könnte dann in fpTouchpadNode mit vorgegebenen Figuren auf

Übereinstimmung verglichen werden.

7.3.2 Die Zuordnung der Workstations zu den Gerätepaaren

Das Ausführen der durch die Gesten bezweckten Aktionen wird dadurch

erschwert, dass die Geräte auf denen die Gesten ausgeführt werden nicht mit den

einzelnen Workstations der Benutzer verbunden, sondern zentral am

Visualisierungsserver angeschlossen sind. Die Problematik die sich daraus

ergibt, sowie die Lösung wurden unter 6.1 bzw. 6.2 erläutert. Die in 6.2

gefundene Lösung hat den Nachteil, dass jedem Platz am OfuturO-Tisch eine

Page 108: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

108

feste Nummer zugewiesen werden muss. Dadurch müssen die Gerätepaare der

Reihenfolge ihrer Platznummern entsprechend angeschlossen werden, damit die

interne Nummernzuweisung denen der Plätze entspricht. Ein Teil der

Flexibilität, die im SMTP-Treiber realisiert wurde, indem Spacemouse-

Touchpad-Gerätepaare auch ohne bestimmte Vorgaben in der

Anschlussreihenfolge gebildet werden, geht dadurch wieder verloren. Dies kann

die Arbeit innerhalb von OfuturO allerdings als nicht allzu bedeutend angesehen

werden, da hier für die Eingabegeräte eine permanente Verbindung am

Visualisierungsserver geplant ist, wodurch die Anschlussprozedur nur bei einem

Systemneustart wiederholt werden muss.

Schwerwiegender ist die Tatsache, dass zu dem eigentlichen Login des OfuturO-

Konferenzteilnehmers an der GUI seiner Workstation der zusätzliche

Arbeitsschritt der Platznummerneingabe erfolgen muss. Hier liegt es in der

Verantwortung des Benutzers die richtige Platznummer einzugeben. Eine

fehlerhafte Eingabe kann von der Serversoftware, die sowohl Platz- als auch IP-

Nummer der Workstation speichert, in der Regel nicht erkannt werden.

Wie beschrieben musste den Datenbytes der Touchpadgeräte ein zusätzliches

Byte innerhalb des SMTP-Treibers zugefügt werden, um die Zuordnung

zwischen den Gerätepaaren und den angeschlossenen Workstations zu

realisieren. Dies stellt in gewisser Hinsicht einen Bruch in der klaren

Abgrenzung zwischen den Aufgaben des SMTP-Treibers und den Aufgaben der

Applikationsklasse fpTouchpadNode dar. Der Treiber, dessen Aufgabe auf das

Übertragen von Daten eines Gerätepaares beschränkt bleiben sollte, übernimmt

damit bereits einen Teil der Aufgabe, zur mit der Gestenerkennung realisierten

Dokumentenübertragung.

Page 109: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

109

Literaturverzeichnis [Ade03] Homepage Heinz Ade, Touchpad Technologie, 2003 URL:

http://www.heinz-ade.de/texte/technologie-1.htm [Axe99] Jan Axelson, USB Handbuch für Entwickler, 1.Aufl., Bonn,

MITP-Verlag, 2001 [Boh99] G. Bohmann, Virtual Reality, Drantum 1999, URL:

http://www.uni-vechta.de/studium/homepages/bohmann.guido/VR.doc

[Cir03] Homepage Cirque, Technologie/ GlideTechnologie®,2003

URL : http://www.cirque.com/tech/glide.html [FIT03] Fraunhofer FIT. KoKoBel Homepage. April 2003. URL: http:

//www.fit.fraunhofer.de/projekte/kokobel/index.xml. [Fli00] Detlef Fliegl, URL: http://usb.cs.tum.edu/download/usbdoc, 2000 [Gal03] Goran Galunic, Office Of The Future- Einbettung virtueller

Hilfsmittel in Arbeitsumgebungen am Beispiel der Entwicklung einer Visualisierungs- und Kommunikationsschnittstelle für ein Mixed Reality Conferencing System, Diplomarbeit FH Köln, 2003

[GKG+03] G. Goebbels, E. Kruij, G. Galunic, T. Orthey, A. Ivanovic, L.

Sanfilippo. OfuturO - A Mixed Reality Desk Environment for Supporting Creativity Methods, In Proceedings of 5th SBC Symposium on Virtual Reality (SVR 2003) Riberao Preto, Sao Paulo, Brazil 2003.

[Goe01] G. Goebbels. Team work in Distributed Collaborative Virtual

Environments, Dissertation University of Pretore, South Africa, 2001.

[GTB+02] G.Goebbels, K.Troche, M.Braun, A.Ivanovic, A.Grab, K.von Lübtow, H.F.Zeilhofer, R.Sader, F.Thieringer, K.Albrecht, K.Praxmarer, E.Keeve, N.Hanssen, Z.Krol, F.Hasenbrink, Arsys-Tricorder - Entwicklung eines Augmented Reality Systems für die intraoperative Navigation am Beispiel des individuellen Transplantatdesigns in der Mund-Kiefer-Gesichtschirurgie, Proceedings der BMBF Statustagung, 05. -06.11.2002, Leipzig, Germany

[Gui03] Homepage vom Linux USGuide, URL:http://linuxusbguide.sourceforge.net

Page 110: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

110

[Her03] Helmut Herold, Linux/Unix- Systemprogrammierung, 2. Aufl., München: Addison- Wesley, 2003

[IMK03] Fraunhofer IMK. Avango Homepage. April 2003. URL:

http://www.avango.org. [IU97a] Hiroshi Ishii and Brygg Ullmer. Tangible Bits: Towards

Seamless Interfaces between People, Bits and Atoms. ACM Press, Chi 1997.

[IU97b] Hiroshi Ishii and Brygg Ullmer. The metaDESK: Models and

Prototypes, for Tangible User Interfaces. ACM Press, Banff, Alberta, Canada, 1997.

[KR98] M. Kohlhaas, H. Regenbrecht, Virtual Reality- Virtual Reality

Aided Design, URL: http:// www.uni-weimar.de/architektur/InfAR/lehre/Course01/index.html

[Lin03] Homepage vom Linux USB Projekt, URL: http://www.linux-

usb.org, 2003 [Log99] Magellan/ Space Mouse Programming Guide, Version 2.1,

LogiCad3D, Seefeld, Germany, 1999 [MC99] Paul Milgram, Herman Colquhoun, A Taxonomy of Real and

Virtual World Display Integration, o.O.,1999. [Mic03] Sun Microsystems. Java 3D API Homepage. Juni 2003. URL:

http://java.sun.com/products/java-media/3D. [Phi03] N. Philippsen, Virtuelle Realität, URL: http://www.it.fht-

esslingen.de/~schmidt/vorlesungen/vr/seminar/ ws9899/virtuellerealitaet.html

[RC02] Allesandro Rubini, Jonathan Corbet, Linux Gerätetreiber,

2.Auflage, Köln: O’ Reilly Verlag, 2002 [RL01] Ramesh Raskar and Kok-Lim Low. Interacting with Spatially

Augmented Reality. ACM Press, o.O., 2001. [RWC+98] Ramesh Raskar, Greg Welsh, Matt Cutts, Adam Lake, Lev

Stesin, and Henry Fuchs. The Office of the Future: A Unified Approach to Image-Based Modeling and Spatially Immersive Displays, o.O., 1998.

[SGH98] Norbert A. Streitz, Jörg Geissler, and Torsten Holmer.

Roomware for Cooperative Buildings: Integrated Design of Architectural Spaces and Information Spaces. Springer Verlag, o.O.,1998.

Page 111: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

111

[Sut65] I.E. Sutherland, The Ultimate Display, New York, 1965

[Sut68] I.E. Sutherland, A Head- Mounted Three- Dimensional Display, New York ,1968

[Tra98] Henrik Tramberend. Avango: A Distributed Virtual Reality Framework, ACM, 1998.

[Vie03] Homepage Viewtec, Virtual Reality, 2003, URL: http://www.viewtec.ch/techdiv/vr_info_d.html

[Wel93] Pierre Wellner. Interacting with Paper on the DigitalDesk. ACM Press, New York, 1993.

Page 112: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

112

Anhang

1. Die Datei SampleApplikation.scm

1 (define tp-service (make-instance-by-name “fpDeviceService“)

2 (-> tp-service ‘register-service “DeviceService”)

3 (-> tp-service ‘connect-daemon)

4 (define tpsensor (make-instance-by-name “fpDeviceSensor”))

5 (-> (-> tpsensor ‘Station) ‘set-value “touchpad”))

6

7 (define textdocument (make-instance-by-name “fpLoadFile”))

8 (-> (-> textdocument ‘Name) ‘set-value “Document”)

9 (-> (-> textdocument ‘Filename) ‘set-value “document.iv”)

10 (-> (-> textdocument ‘Matrix) ‘connect-from (-> mysensor ‘Matrix))

11 (-> (-> av-root ‘Children) ‘add-1value textdocument)

12

13

14 (define sm-service (make-instance-by-name “fpDeviceService“)

15 (-> sm-service ‘register-service “DeviceService”)

16 (-> sm-service ‘connect-daemon)

17 (define smsensor (make-instance-by-name “fpDeviceSensor”))

18 (-> (-> smsensor ‘Station) ‘set-value “spacemouse”))

19

20 (define cube (make-instance-by-name “fpLoadFile”))

21 (-> (-> cube ‘Name) ‘set-value “Cube”)

22 (-> (-> cube ‘Filename) ‘set-value “cube.iv”)

23 (-> (-> cube ‘Matrix) ‘connect-from (-> mysensor ‘Matrix))

24 (-> (-> av-root ‘Children) ‘add-1value cube)

2. Die Datei ofuturo-devices.scm

1 (add-device “device1“ “fpTouchpadNode“)

2 (config-device “device1“ “tty“ “/dev/usb/touchpad“)

3 (add-station “device1” “touchpad” 1)

4 (start-device “device1”)

5

6

7 (add-device “device2“ “fpSpacemouseNode“)

8 (config-device “device2“ “tty“ “/dev/usb/spacemouse“)

9 (add-station “device2” “spacemouse” 1)

10(start-device “device2”)

Page 113: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

113

Um die Beispielapplikation zu starten muss zuerst der av-daemon gestartet

werden. Mit der Option –f kann der av-daemon direkt mit ofuturo-

devices.scm aufgerufen werden:

�AV_HOME/bin/av-daemon.sh –f usb-devices.scm �

Danach muss die Avango-Shell gestartet werden, damit sie das File zum

Erstellen der Grafikobjekte einliest:

$AV_HOME/build/bin/aview.sh -v -o device:mon -f SampleApplikation.scm Damit die Gerätedaten in die richtigen Gerätedateien umgeleitet werden, muss außerdem der SMTP-Treiber geladen sein: $ insmod smtp-driver.o

Page 114: Einbinden von Eingabegeräten zur Manipulation ... · 5.1 Analyse der Problemstellung ... 6.5 Die Klassen fpTouchpadNode und fpSpacemouseNode ... 3.3 Arbeitsplatz mit Laptop 35 3.4

114

Erklärung

Ich versichere, die von mir vorgelegte Arbeit selbständig verfasst zu haben. Alle

Stellen, die wörtlich oder sinngemäß aus veröffentlichten oder nicht

veröffentlichten Arbeiten anderer entnommen sind, habe ich als entnommen

kenntlich gemacht. Sämtliche Quellen und Hilfsmittel, die ich für die Arbeit

benutzt habe, sind angegeben. Die Arbeit hat mit gleichem Inhalt bzw. in

wesentlichen Teilen noch keiner anderen Prüfungsbehörde vorgelegen.

Ort, Datum Unterschrift