PR: Programmier-Praktikum II (SS99) Rug Warrior Communcation

Noisternig Michael

michael.noisternig@sbg.ac.at

Obermair Christoph

cober@cosy.sbg.ac.at

Schmidbauer Josef

jschmid@cosy.sbg.ac.at

Stieglbauer Gerald

gstiegl@cosy.sbg.ac.at

Version 1999-4-14

Gruppe 2

Zeit: Mittwoch, 17.00 - 17.30 Lehrveranstaltungsleiter: Schwaiger Roland

Inhaltsverzeichnis

1 Einleitung 2 1.1 Was sind Rug Warriors? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Rechnersystem der Rug-Warriors . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Sensoren des Rug-Warriors . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.1 Infrarotemitter/dekoder . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.2 Pyroelektrischer Sensor . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.3 Fotowiderstände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.4 Stoß-Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.5 Mikrofon/Lautsprecher . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.6 Shaft-Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Rug Warrior Communication . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.1 Grundlegende Betrachtungen . . . . . . . . . . . . . . . . . . . . . 6 1.4.2 Infrarot Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.3 Akustische Kommunikation . . . . . . . . . . . . . . . . . . . . . . 8 1.4.4 Mechanische Kommunikation . . . . . . . . . . . . . . . . . . . . . 9 1.4.5 Funk-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Planungsphase 10

2.1 Überlegungen zur Auswahl eines Übertragungsprotokolls (Kanalcodierung) 10 2.1.1 Kanalcodierung zur Fehlerbehandlung . . . . . . . . . . . . . . . . 10 2.1.2 Kanalcodierung zur Erreichung bestimmter Signaleigenschaften . . 11 2.1.3 Einige Formen der Leitungskodierung . . . . . . . . . . . . . . . . . 12 2.1.4 IR Kommunikation: Übertragungsprotokoll RC 5 . . . . . . . . . . 13

2.2 Beispielszenarien zur Kommunikation . . . . . . . . . . . . . . . . . . . . . 16 2.2.1 Kommunikation Rug Warrior mit Rechner . . . . . . . . . . . . . . 16 2.2.2 Kommunikation Rug Warrior mit Rug Warrior . . . . . . . . . . . . 18

A Programme 20

A.1 Infrarot-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 A.1.1 Test Programm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

B Protokolle 21

B.1 Besprechungsprotokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 B.1.1 10.03.1999 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 B.1.2 17.03.1999 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 B.1.3 24.03.1999 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Zusammenfassung

In diesem Dokument wird das Problem Kommunikation zwischen Robotern behandelt. Dabei werden zu Versuchszwecken sogenannte Rug Warriors verwendet, wobei unterschiedliche Übertragungsarten betrachtet werden. Weiters soll ein Demonstrationsprogramm entwickelt werden, um Kommunikationsmöglichkeiten zu veranschaulichen.

Kapitel 1

Einleitung

1.1 Was sind Rug Warriors?

Die Rug Warriors sind einfache, frei programmierbare Roboter. Sie verfügen über eine große Anzahl an Sensoren und besitzen als Aktoren unter anderem zwei Elektromotoren mit dessen Hilfe sie sich fortbewegen können. Die Roboter wurden am Massachusetts Institute of Technology (MIT) als Übungsmaterial für das Buch Mobile Robots, Inspiration to Implementation[1] entwickelt. Die Rug Warriors werden als kompletter Bausatz nach den Vorgaben des genannten Buches angeboten und sind einfach aufzubauen. Daher sind sie eine ideale Plattform für erste Experimente mit Robotik. Durch die freie Programmierbarkeit des verwendeten Mikrokontrollersystems und der hohen Anzahl an Sensoren sind sie jedoch auch leistungsfähig genug für weiterführende Experimente.

1.2 Rechnersystem der Rug-Warriors

Zur Programmierung der Rug-Warriors besitzen diese einen Microcontroller mit der Bezeichnung MC68HC11A0. Dieser Controller besitzt folgende Eigenschaften:

• 2 MHz Taktfrequenz

• 16 Bit Adreßbus

• 256 Bytes RAM

• 5 memory-mapped Ports mit den Bezeichnungen A - E von der Adresse $1000 weg Als externer Speicher dient der Chip mit der Bezeichnung HM62256LP-12 und einer Größe von 32K. Er wird von $8000 - $FFFF adressiert.

Der Port A

Er besitzt • 3 Input-Leitungen (PA0 - PA2): können verwendet werden, um Ereignisse abzufangen

• 1 Input/Output-Leitung (PA3)

• 4 Output-Leitungen (PA4 - PA7): können externe Ereignisse auslösen Die Ports B und C

Bei Verwendung externen Speichers und ohne zusätzlichem Chip (MC68HC24, port replacement unit) werden diese Ports zur Ansteuerung des Speichers verwendet (expanded multiplexed mode). Andernfalls (single-chip mode) ist Port B ein digitaler Output-Port und Port C entweder ein digitaler Output- oder Input-Port (konfigurierbar).

Der Port D

Er kann zum einen vollständig als I/O-Port verwendet werden. Zum anderen können die Leitungen PD0 - PD1 verwendet werden, um eine Verbindung mit einem Terminal oder einem Host-Computer zu erstellen, und auch PD2 - PD5 können zur Datenuebertragung verwendet werden.

Der Port E

Er kann entweder als Input-Port mit 8 Leitungen verwendet werden oder als A/D-Converter, wobei jede Leitung eine Auflösung von 8 Bit hat.

1.3 Sensoren des Rug-Warriors

Unterteilung der Sensoren laut [1] in

• aktive Sensoren

– Infrarotemitter

– Piezo-Lautsprecher

– 4 LEDs

– Motor-Treiber

• passive Sensoren

– Infrarotdetektor

– 3 Stoß-Sensoren

– Mikrofon

– 2 Radsensoren (Shaft Encoders)

– Pyroelektrischer Sensor

– 2 Fotowiderstände

Außerdem stehen noch 5 weitere Port-Pins (2 digitale Eingänge, 1 digitale Ausgang, sowie 2 analoge Eingänge) für etwaige Erweiterungen zur Verfügung.

1.3.1 Infrarotemitter/dekoder

Dienen dazu um etwaige z.B. im Weg stehende Objekte zu erkennen. Derartige Sensoren können Strahlung im Bereich von ca. 880 nm erkennen. Im Zuge unseres Projektes wird geprüft, ob diese Sensoren auch zu Kommunikation zwischen Rug-Warriors verwendet werden können. Beide IR-Dioden (Emitter) werden durch einen digitalen Port angesteuert (PD2, PD3). Die IR-Detektor-Spezifikation [2] verlangt ein 40 kHz Trägersignal, auf dem das tatsächliche Ausgangssignal moduliert werden muß. Dies geschieht über einen speziellen Schwingkreis. Das Signal selbst hat eine Frequenz von 1667 Hz (d.h. logisch 1 bzw. 0 muß 600μs anliegen, um vom Detektor als solches erkannt zu werden). Die geometrische Anordnung der Sensoren am Rug-Warrior sieht folgendermaßen aus: Der Detektor ist vorne in der Mitte angeordnet und geradeaus gerichtet, die Infrarot-Dioden jedoch sitzen links und rechts und sind seitlich gerichtet um dem Roboter sowohl links-, als auch rechtsseitiges ”sehen“ mit nur einem Detektor zu ermöglichen. In A.1.1 ist ein einfaches Demoprogramm in Interactive C (IC) abgedruckt, das die Ansteuerung der IR-Hardware zeigen soll.

1.3.2 Pyroelektrischer Sensor

Dient ebenfalls zur Objekterkennung; im Gegensatz zu den IR-Sensoren wird die IR-Strahlung des Objektes selbst zur dessen Erkennung verwendet. Eine typische Anwendung wäre ein Bewegungsmelder (Menschen senden IR-Strahlung von 8-10μm aus). Der am Rug-Warrior verwendete Sensor ist am analogen Port PE5 angeschlossen. Auf diesem Sensor befinden sich zwei Kristalle, aus deren Temperaturunterschied sich das Ausgangssignal ergibt, das anschließend im A/D-Konverter des Mikrocontrollers ausgewertet wir. Ist die Temperatur der beiden Kristalle identisch, so liegt am Ausgang des Sensors eine Spannung von 2.5V an. Nähert sich nun ein Objekt von links nach rechts, so steigt die Spannung um ca. 1V an, sich anschließend wieder bei 2.5V einzupendeln. Nähert sich ein Objekt von rechts nach links, so geschieht das Umgekehrte: Die Spannung fällt im 1V ab und stellt sich anschließend wieder bei 2.5V ein.

1.3.3 Fotowiderstände

Der Rug Warrior ist mit zwei Fotowiderständen ausgerüstet, die mit Port PE1 und PE0 verbunden sind. Diese Sensoren verändern in Abhängigkeit der umgebenden Lichtstärke ihren Widerstandswert. Dieser Wert wird in Form eines proportionalen Spannungswertes von ca. 0 bis 5V an den A/D-Konverter geschickt, um somit vom Prozessor ausgewertet werden zu können.

1.3.4 Stoß-Sensoren

Der Rug Warrior besitzt weiters 3 Stoß-Sensoren die gleichmäßig rund um den Roboter verteilt sind. Bei diesen Sensoren handelt es sich um nichts anderes als um Mikroschalter die bei direkten Kontakt des Roboters mit einem fremden Objekt ein entsprechendes Signal zum Prozessor senden sollen. Dabei gibt es zwei Verschaltungsstrategien:

• Jeder Sensor wird direkt mit einem Port-Pin verbunden (PE7, PE6, PE3 - Achtung, da dieser Port u.a. zur A/D-Konvertierung genützt wird, das Signal aber von digitaler

Natur ist, muß der Port entsprechend konfiguriert werden).

• Die Mikroschalter werden so verschaltet, daß jeder Schalter bei Betätigung einen anderen Spannungswert liefert, der dann vom A/D-Konverter umgewandelt und entsprechend ausgewertet werden kann. Der Vorteil dieser Verschaltung liegt darin, daß nur ein Port-Pin benötigt wird (PE3).

1.3.5 Mikrofon/Lautsprecher

Das im Rug Warrior verwendete Mikrofon mit nachgeschaltetem Verstärker liefert Analogsignal im Bereich von 0 bis 5V das anschließend vom A/D Konverter (Pin PE2) in einen digitalen Wert umgewandelt wird. Bei der Verwendung des Mikrofons ergeben sich zwei Probleme:

• Um Signale nicht zu überhören, müssen vom Prozessor entsprechend viele Samples genommen werden. Besonders bei kurzen Signalen, wie z.B. ein Händeklatsch, kann dies leicht zu einer Prozessorüberlastung führen (Laut Abtasttheorem [3] muß der Prozessor mindestens mit der doppelten Frequenz, welche am Eingang des Mikrofon erwartet wird, abtasten). Eine Lösung wäre ein unabhängiger Schaltkreis, der dem Mikrocontroller diese Arbeit abnimmt.

• Das zweite Problem sind die Eigengeräusche des Roboters wie z.B. Motorengeräusche, die sich mit den tatsächlichen auszuwertenden Signalen vermischen. Hier würde die Einführung eines Schwellenwertes Abhilfe bringen, indem man nur Geräusche ab eines gewissen Lautstärkepegels für die Auswertung zuläßt.

Um charakteristische Eigenschaften unterschiedlicher Signale besser unterscheiden zu können, besteht die Möglichkeit einer Fouriertransformation die das Signal von dem Zeitbereich in den Frequenzbereich abbildet. Diese Aufgabe könnte vom Prozessor übernommen werden, ist aber verhältnismäßig zur Prozessorleistung relativ aufwendig. Der verwendete Lautsprecher basiert auf Piezo-Technik und ist mit Port-Pin PA3 verbunden. Eine weitere Möglichkeit zur Interaktion mehrerer Rug Warriors würde in der Kombination Lautsprecher - Mikrofon bestehen. Der Nachteil ist aber eine sicher nicht zu unterschätzende Fehleranfälligkeit durch Nebengeräusche.

1.3.6 Shaft-Encoder

Dieser Sensor dient zur Positionserkennung und Orientierung des Rug Warriors. Dazu sind an den Rädern kreisförmig angeordnete Schwarz/Weiß-Streifen vorhanden. Durch ein IR-Emitter/Dekoder Paar wird die aktuelle Reflektion gemessen. Durch eine Bewegung der Räder ergibt sich daraus ein Puls aus dem sich proportional zur Frequenz desselbigen die Geschwindigkeit bzw. die relative Positionsänderung des Robotors berechnen lassen. In Abhängigkeit der Anzahl der Streifen auf den Rädern steht die Genauigkeit der berechneten Daten (bei Verwendung einer 64-Segment-Scheibe läßt sich ththeoretisch eine Genauigkeit von ca. 2mm erreichen). Einer der beiden Shaft-Encoder ist mit dem Puls-Akkumulator-Pin (PA7) vebunden, währenddessen der andere am dritten Capture Register des Ports (PA7) angeschlossen ist, was zu unterschiedlichen Auswertungsstrategien führt.

1.4 Rug Warrior Communication

Um Kommunikation in sogenannten Multi Agenten Systeme (MAS) in der Praxis realisieren zu können ist ein Informationsaustausch zwischen den einzelnen Teilnehmern notwendig. Damit mit den Rug Warriors ein MAS realisiert werden kann ist es daher nötig, daß die Rug Warriors untereinander kommunizieren können. Idealerweise sollte eine Kommunikation zwischen ihnen ohne zusätzlichen Hardwareaufwand möglich sein.

1.4.1 Grundlegende Betrachtungen

Aufgrund der vorhandenen, oben erwähnten, Sensoren und Aktoren sind folgende Kommunikationsmöglichkeiten denkbar:

1. via Infrarot Signale,

2. via akustischer Signale,

3. via mechanischer Signale.

Optional ist aufgrund noch vorhandener, freier Ein- und Ausgänge des verwendeten Mikrokonrollersystems auch eine Erweiterung für andere Kommunikationswege möglich. Diese ist jedoch mit einem zusätzlichen Hardwareaufwand verbunden und macht die Kommunikationslösung stark systemabhängig. Denkbar wäre hierbei vor allem eine Funk-Kommunikation zwischen den Rug Warriors.

Im folgenden werden die Vor- und Nachteile der einzelnen Methoden erläutert.

1.4.2 Infrarot Kommunikation

Die Roboter besitzen zwei Infrarot-Dioden und einen Infrarot-Detektor. Die vorhanden Infrarot-Sensoren und Aktoren werden zur Erkennung von Hindernissen verwendet [1]. Für diese Aufgabe ist es zweckmäig eine geringe Strahlungsleistung zu verwenden. Daher, und um möglichst wenig Hardware zu verwenden, werden die Infrarot-Dioden des Rug Warriors direkt und ohne Treiber angesteuert [1]. Die deshalb sehr geringe Sendeleistung dürfe nur eine Kommunikation erlauben wenn sich die Roboter frontal gegenüberstehen. Als Protokoll sollten idealerweise die Protokolle der IrDA (Infrared Data Association) zum Einsatz kommen. Diese Protokolle werden weit verbreitet eingesetzt. Damit wäre eine einfache Kommunikation mit Notebooks, eventuell sogar mit Druckern und Mobiltelefonen möglich. IrDA verwendet als physikalisches Übertragungsmedium kodierte Infrarot-Signale. Bei Kommunikationsraten unter 115.2\frac{kBit}{s} kommt dabei eine NRZI (Non-Return-to-Zero-Inverted) Kodierung zum Einsatz [4]. Das bedeutet, daß eine logische NULL als Infrarot Impuls und eine logische EINS als kein-Intrarot-Impuls kodiert werden. Als Protokoll auf dem Layer 1 nach dem ISO Refernzmodell [3] wird das gängige serielle Protokoll der 16550 kompatibelen Bausteine mit einem Startbit, acht Datenbits und einem Stopbit benutzt [4]. In [4] wird die verwendete, nominale Impulsbreite mit \frac{3}{16} der Bit-Dauer festgelegt. Weiters wird eine minimale Geschwindigkeit von 9600\frac{Bit}{s} gefordert. Damit ergibt sich eine Impulsdauer von \frac{1}{9600} \frac{3}{16} = 19.53μs. Die minimale Impulsdauer, die ein entsprechender Empfänger auswerten können muß, beträgt sogar nur 1.41μs [4]. Der auf den Rug Warriors eingesetzte IR-Empfänger/Demodulator GP1U52X reagiert nur auf ein, mit 40kHz moduliertes Infrarotsignal [2] wie es z.B. bei Fernsteuerungen in der Unterhaltungselektronik verwendet wird. Aufgrund des integrierten Tiefpasses benötigt der Sensor mehrere Schwingungen des modulierten Signales und spricht daher nicht auf einzelne IR-Impulse an (siehe Sensorbeschreibung). Dies entspricht den Verfahren die bei IR-Fernsteuerungen verwendet werden (z.B. RC 5 Kodierung). Deshalb ist es mit diesem Sensor nicht möglich ein, nach der IrDA Spezifikation [4] kodiertes Signal zu empfangen.

Damit ergeben sich für die IR-Kommunikation zwei mögliche Alternativen:

1. Verwendung eines alternativen Übertragungsprotokolls (z.B. RC 5)

2. Abänderung der Hardware um den IrDA Standard zu unterstützen

Alternative Übertragungsprotokolle

Um eine Infrarot Kommunikation ohne eine Änderung der Hardware zu ermöglichen müßen Verfahren verwendet werden die auf einen 40kHz modulierten Träger aufsetzen. Grob kann man dabei folgende Verfahren unterscheiden:

• Kodierung mit verschiedenen Signalpegeln,

• Kodierung mit verschiedenen Signallängen,

• Kodierung mit verschiedenen Signalflanken (z.B. RC 5).

Modifizierte Hardware

Durch eine einfache Änderung der Hardware (Deaktivierung des vorhandenen RC-Oszillators) wäre es möglich via Software eine IrDA konforme Informationsübertragung zu ermöglichen. Ebenfalls wäre es durch Abänderung der Empfanghardware (IR-Photodiode statt IR-Demodulator) möglich das IrDA Signal zu empfangen. Allerdings ist hierbei eine sehr hohe Abtastfrequenz seitens der Software erforderlich. Um auch Impulse mit einer Mindestimpulsdauer von den oben genannten 1.41μs zu erkennen müßte die Abtastfrequenz \frac{1}{2} \frac{1}{1.41} = 2.82MHz betragen. Da der verwendete Mikrokontroller maximal 1 Million Befehle pro Sekunde verarbeiten kann [1], ist es nicht möglich das IrDA Protokoll auf diese Weise zu verarbeiten. Eine Implementierung des IrDA Protokolls ist somit nur mit erhöhten Hardwareaufwand möglich.

Zusammenfassung

Zusammenfassend ergeben sich zwei realistische Möglichkeiten einer Infrarot-Kommunikation zwischen den Rug Warriors bzw. den Rug Warriors und einer Basisstation:

1. Alternatives Protokoll Verwendung eines, zur verwendeten 40 kHz Modulation kompatiblen, Übertragungsprotokolls. Beispielsweise RC 5. Vorteile:

• Keine Modifikation der Hardware erforderlich.

• Einfache Realisierung der Software.

• Kompatiblität zu handelsüblichen Fernbedienungssystemen für Unterhaltungselektronik.

Nachteile:

• Geringe Übertragungsgeschwindigkeit

• Wird in der Computertechnik überlicherweise nicht eingesetzt.

2. Änderung der Hardware Veränderung der Hardware der Rug Warriors um die Modulations- und Demodulationsaufgaben des Layer 1 im ISO 7-Schichten Modell [3] für eine IrDA konforme Übertragung mittels geeigneter ICs zu realisieren und damit den Mikrokontroller der Roboter zu entlasten. Vorteile:

• IrDA konformes Übertragungsprotokoll möglich.

• Kommunikation mit einer großen Anzahl von Geräten möglich.

• Wesentlich höhere Übertragungsraten möglich.

• Geringer Hardwareauslastung.

Nachteile:

• Größere Veränderung der Hardware erforderlich.

• Höherer finanzieller Aufwand.

• Sehr hoher Programmieraufwand, alleine um das Protokoll zu implementieren.

• Damit verbundener sehr hoher Speicherplatzbedarf (nur 32 kByte RAM verfügbar).

Aufgrund des sehr beschränkten Arbeitsspeichers ist noch nicht abschätzbar inwieweit der IrDA Protokollstack implementiert werden kann.

1.4.3 Akustische Kommunikation

Neben einer Infrarot-Kommunikation ist auch eine Kommunikation über akustische Signale möglich. Töne können über den, in den Rug Warriors eingebauten, Piezo Summer erzeugt werden. Da der Piezo Summer direkt über einen I/O Port des Mikrokontrollers angesteuert wird, können mittels entsprechender Software verschiedene Tonfrequenzen erzeugt werden. Die vom Mikrofon aufgenommenen Tonsignale werden auf dem Rug Warriors mittels eines Operationsverstärkers verstärkt und dann über einen Analog Port des Mikrokontrollers eingelesen. Eine einfache akustische Kommunikationsmöglichkeit wäre eine Kodierung von Binärdaten in Ton/Nicht-Ton Folgen (Einfacher Fall von Amplitudenmodulation, ASK [3]). Durch Erweiterung des Verfahrens auf verschiede Lautstärken kann man die Übertragungskapazität erhöhen, gleichzeitig steigt aber besonders bei aktustischen Störgeräuschen (im speziellen auch Motorgeräuschen) die Fehlerrate an. Zur Synchronisation des Empfängers sowie zur leichteren Erkennung von Fehlern ist es dabei sinnvoll eine der in 2.1 aufgeführten Kanalkodierungsverfahren zu verwenden.

Eine mögliche Verbesserung des Verfahrens wäre eine Nutzung von verschiedenen Tonhöhen zur Kodierung der Daten (Frequenzmodulation, FSK [3]) zu verwenden. Dabei kann unter anderem die Übertragungskapazität erhöht werden. Weiters ist dadurch auch eine leichtere Erkennung von Übertragungsfehlern möglich [3]. Zur Realisierung einer frequenzmodulierten Übertragung muß beim Sender nur die Software angepaßt werden, aber beim Empfänger muß eine Fouriertransformation des akustischen Signales durchgeführt werden. Damit kann man die einzelnen Frequenzen unterscheiden. Bei Verwendung des FFT (Fast Fourier Transformation) benötigt man einen Rechenaufwand proportional zu n log(n) (O(FFT)= n log(n)). Als Alternative ist auch eine Frequenzerkennung durch digitale Filter möglich. Der Aufwand für die Berechnung eines digitalen Filters ist zur Laufzeit proportional zu n. Damit ist bei einer kleinen Anzahl von zu unterscheidenden Frequenzen eine Frequenzerkennung mittels digitaler Filter (je nach Implementierung) weniger Rechenaufwendig als die Verwendung der Fast Fourier Transformation. Eine Anbindung an eine Basisstation (PC, Workstation) ist hierbei unter Verwendung verbreiteter Soundkarten denkbar.

Zusammenfassung

Vorteile:

• Keine Sichtverbindung notwendig.

• Einfache Realisierung des Senders.

• Gute Medienwirksamkeit.

Nachteile:

• Geringe Übertragungsgeschwindigkeit.

• Im Vergleich zu Infrarot höhere Reichweite.

• Aufwendige Realisierung des Empfängers (Software).

• Höhere Störanfälligkeit.

1.4.4 Mechanische Kommunikation

Durch die auf den Rug Warriors vorhandenen Microschalter (Bumper) und durch Verwendung der Antriebsmotoren ist auch eine mechanische Kommunikation zwischen den Robotern denkbar. Aufgrund der, in diesem Fall sicherlich sehr geringen, Kanalkapazität des Übertragungskanals ist jedoch eine komplexe Kommunikation unter den Robotern nicht sinnvoll. Sinnvoll kann es jedoch sein nach einem mechanischen Kontakt einen Kommunikationsversuch über ein anderes Kommunikationsmedium zu unternehmen, für den Fall das der Kontakt durch einen anderen Rug Warrior ausgelöst wurde. Durch diese Kontaktaufnahme können unter anderem Positionsdaten ermittelt werden.

1.4.5 Funk-Kommunikation

(Genauere Behandlung zu einem späteren Zeitpunkt.)

Kapitel 2

Planungsphase

2.1 Überlegungen zur Auswahl eines Übertragungsprotokolls (Kanalcodierung)

Die Aufgabe der Kanalcodierung ist eine zu übertragende Nachricht und ihre Signaldarstellung möglichst optimal an die Eigenschaften der Übertragungskanals anzupassen. Dazu gehört z.B. die gezielte Veränderung bestimmter Signaleigenschaften oder die mehr oder weniger gute Sicherung der Nachricht gegen Störungen. Im Bezug auf die Datenübertragung zwischen Rug Warriors sind zwei Punkte wesentlich:

• Fehlererkennung und -korrektur

• Synchronisation der Rug Warriors bei der Datenübertragung

2.1.1 Kanalcodierung zur Fehlerbehandlung

Hier wird redundanter Code neu in die Nachrichtenfolge eingebaut, und zwar so, daß trotz möglichst sparsamer Verwendung von Redundanz eine hohe Erkennungs- und Korrekturrate von Übertragungsfehlern erreicht wird. Man unterscheidet:

• Deterministische Codes. Bei diesen Codes besteht eine eindeutige Beziehung zwischen Ein- und Ausgabe. Wichtige Vertreter sind:

– Blockcodes: Eingabe in Blöcke zerlegt; jedem Block wird (unabhängig vom Inhalt früherer Blöcke) ein Ausgabeblock zugeordnet.

– Rekurrente Codes: Jeder Codeblcok hängt auch vom Inhalt früherer Blöcke ab (z.B. sogenannte konvolutionelle Codes).

• Stochastische Codes. Hier liegt der Codevorschrift eine Wahrscheinlichkeitsbeziehung zugrunde. Derzeit aber eher von geringerer Bedeutung.

Ein Beispiel für einen deterministischen Blockcode ist die Bildung einer sogenannten Checksumme über einen Block bestimmter Länge. Hierbei fast man in einer Bitfolge zum Beispiel 7 Bits zusammen und wendet darauf eine logische Operation (z.B. Exklusives Oder) an. Als Ergebis erhält man nun ein achtes Bit (redundante Information), das nun zusammen mit den anderen 7 Bits einen neuen Block bildet. Dieser Block kann nun auf der Senderseite über eine entsprechende Schnittstelle zum Empfänger übertragen werden. Auf der Empfängerseite muß nun das empfangene Signal wieder dekodiert werden. Es wird wiederum eine logische Verknüpfung, die der auf der Senderseite entsprechen muß, über den empfangenen Block gebildet. Je nach ob eine EVEN-Checksumme (Ergebnis der Verknüpfung muß logisch 1 sein) oder eine ODD-Checksumme (Ergebnis ist logisch 0) gebildet wurde, kann nun das empfangene Signal auf seine fehlerfreie Übertragung überprüft werden. Diese Methode beinhaltet aber zwei entscheidende Nachteile:

• Ein Fehler bei der Übertragung kann nur erkannt werden wenn eine ungeradzahlige Anzahl von Bits ihren Wert ändern, da sich im geradzahligen Fall der Fehler bedingt durch die logische Verknüpfung Exklusiv-Oder der Fehler scheinbar wieder ”aufhebt“. Die Fehlererkennungsrate liegt also nur bei 50%. Abhilfe würde die Bildung einer ”mehrbitigen“ Checksumme bieten, welche die Wahrscheinlichkeit, daß ein Fehler nicht erkannt wird erheblich minimiert.

• Weiters kann bei dieser Methode der Fehlererkennung nicht festgestellt werden, welches Bit seinen Wert geändert hat. So muß in Fall eines Übertragungsfehlers der Empfängereinheit eine weitere Verbindung zum Sendeeinheit aufbauen, um diesen die fehlerhafte Übertragung mitzuteilen. Eine andere Möglichkeit wäre eine permantente bidirektionale Verbindung, bei der die Sendeeinheit nach jedem Verschicken einer Nachricht auf ein ”Acknowledge“ für korrekte Übertragung von Seiten der Empfängereinheit wartet. Es gibt aber auch Kodierungen, die eine Ermittlung des fehlerhaften Bits ermöglichen. Als Beispiel wäre hier der Hammingcode zu nennen.

2.1.2 Kanalcodierung zur Erreichung bestimmter Signaleigenschaften

Prinzipiell bestehen bei der digitalen Datenübertragung zwei Probleme, die sich im speziellen beim Übertragen einer langen 0- bzw. 1-Folge ergeben:

• Durch die gleichbleibende Bitfolge entstehen sehr tiefe Frequenzen (im Extremfall sogar Gleichstrom). Da z.B. auf Kabelstrecken in der Regel Übertrager notwendig sind (Potentialtrennung, Stromversorungsweichen usw.), wird häufig die Forderung an die Leitungskodierung (Kanalkodierung) gestellt, diese tiefen Frequenzen zu vermeiden. Auch bei Funkübertragung treten bei bestimmten Modulationsverfahren (z.B. Amplitudenmodulation) ähnliche Probleme auf. Bei einer zusätzlichen Verwendung einer Funkübertragung zur Kommunikation zwischen den Rug Warriors (würde eine Hardwareerweiterung benötigen) wären diese Umstände zu beachten. Bei der reinen IR-Kommunikation besteht dieses Problem nicht.

• Das zweite Problem, das sich mit den langen 0- bzw. 1-Folgen ergibt ist das Problem der Synchronisation zwischen Sender- und Empfängereinheit. Selbst wenn man sich zu Beginn jeder Datenübertragung auf ein Handshakeprotokoll einigt, können Phasenverschiebungen auftreten, die eine falsche Interpretation des gesendeten Signals zur Folge haben. Dieses Problem besteht prinzipiell bei jeder digitalen Übertragung, bei der nicht ständig (d.h. auch während der Übertragung) die Sende- und Empfangseinheit aufeinander abgestimmt werden. Diese Synchronisation kann im allgemeinen durch die zeitliche Feststellung einer Wertänderung (positive oder negative Flanke) erfolgen. Gerade aber bei einer langen gleichbleibenden Bitfolge treten keine solchen Flanken auf. Auf mögliche Lösungen wird nun im Folgenden etwas genauer eingegangen.

2.1.3 Einige Formen der Leitungskodierung

Hier werden nun einige gängige Kodierungsformen aufgelistet, um das oben erwähnte Synchronisationsproblem zu lösen. Prinzipiell ist noch zu sagen, daß die Sende- und Empfangseinheit immer aufeinander abgestimmt sein müssen, d.h. die Empfangseinheit muß die im Sendesignal zusätzliche, der fehlerfreien Übertragung dienenden Information interpretieren können.

• Alternate mark inversion (AMI): Bei diesem Verfahren wird der binäre Code (0 und 1) in einen quasiternären Code (0, 1, -1) umgewandelt, indem die Einsen abwechselnd als +1 und -1 gesendet werden. Dieses Verfahren schafft aber keine Abhilfe bei langen 0-Bit-Folgen. Eine mögliche Lösung wäre eine für den Empfänger durchschaubare Verletzung der AMI-Regeln, d.h. daß an einer bestimmten Stelle statt einer 0 eine 1 bzw. -1 gesendet wird (siehe Bit-Stuffing). Bei der Kommunikation zwischen den Rug Warriors mittels IR-Übertragung kann diese Methode nicht angewendet werden, da nur zwischen Signal an (IR-LED leuchtet) und Signal aus (IR-LED leuchtet nicht) unterschieden wird.

• Bit-Stuffing:

Hier wird folgende Konvention sowohl auf der Sender-, als auch auf der Empfängerseite eingeführt: Falls die Länge einer gleichbleibenden Bitfolge einen bestimmten Wert n erreicht, so wird ein zu dem aktuellen Boolschen-Wert inverses Bit in die Übertragungssequenz eingefügt (dieses Bit wird wiederum bei der Berechnung der Länge n miteinbezogen). Die so erzeugte ”künstliche“ Flanke kann nun zur Synchronisation der Empfangs- und Sendeeinheit verwendet werden. Auf der Empfangsseite muß allerdings dieses zusätzliche Bit wieder herausgefilter werden. Der Vorteil dieser Methode liegt in der nur geringfügigen Verlängerung der Codelänge und in der gleichbleibenden Taktrate (vgl. dazu Conditioned Diphase und Manchester Code).

• Conditioned Diphase:

Bei diesem Verfahren gilt die Konvention, daß jedes Bit mit einer positiven oder negativen Flanke (je nach aktuellem boolschen Wert) abgeschlossen werden muß. Ist weiters der boolsche Wert 0 zu üebertragen so wird noch eine zusätzliche Flanke eingefüegt (siehe Abbildung). Dieses Einfügen bewirkt somit eine Frequenzunterschied zwischen logisch 0 und logisch 1 um den Faktor 2. Als Entscheidungskriterium beim Empfänger ob eine 0 oder 1 am Eingang anliegt, wird daher die Frequenz und nicht mehr die Amplitude verwendet. Der Vorteil dieser Methode liegt darin, daß unabhängig von der logischen Bitfolge immer ein alternierendes Singal anliegt und somit eine dauernde Synchronisation erfolgen kann. Der Nachteil des Conditioned Diphase Verfahrens besteht allerdings darin, daß die maximal auftretende Frequenz ebenfalls um den Faktor 2 erhöht wird bzw. die Bitrate aufgrund Hardwareeinschränkungen gesenkt werden muß.

• Manchester Code:

Hier wird das Vorzeichen der Flanken als Kriterium dafür angewendet, welcher Boolsche Wert anliegt (z.B. positive Flanke → 1, negative Flanke → 0). Hier ist wesentlich, daß nur jene Flanken bewertet werden, die sich innerhalb des ursprünglichen Taktes befinden (siehe Abbildung). Auch hier ergibt sich somit immer ein alternierendes Signal, allerdings ebenfalls die bereits beim Conditioned Diphase Verfahren erwähnten Nachteile. Da sich bei dieser Kodierung systembedingt im Vergleich mit den anderen hier beschriebenen Verfahren die kürzesten Zeiten zwischen zwei Flanken ergeben, kann somit hohe Datensicherheit garantiert werden, weshalb wir vorläufig diese Kodierung zur IR-Übertragung zwischen den Rug Warriors in Betracht ziehen.

2.1.4 IR Kommunikation: Übertragungsprotokoll RC 5

Für die Kommunikation via Infrarot wurde das Üebertragungsprotokoll RC 5 gewählt. Dieses Protokoll wird unter anderem von der Fa. Philips in der Unterhaltungselektronik verwendet.

Begründung der Auswahl

• Aufgrund der vorhergehenden Überlegungen wurde dieses Übertragungsprotokoll ausgewählt, weil es die Vorteile des Manchester Codes nutzt.

• Der verwendete IR-Detektor [2] reagiert auf 40kHz modulierte IR Signale. Die 3dB Bandbreite des Detektors liegt bei 40kHz ± 4kHz. Da RC 5 eine IR Modulation mit einer Frequenz von 36kHz verwendet sollten Signale von RC 5 Geräten vom Detektor erkannt werden können.

• Die minimale Ansprechzeit beim IR-Detektor zwischen zwei Flanken liegt bei 600μs. Das Protokoll RC 5 schreibt eine Zeit von 889μs als IR Sende bzw. Pausenzeit vor. Der Detektor spricht in dieser Zeit laut Datenblatt [2] sicher an.

• Das RC5-Protokoll ist relativ einfach aufgebaut und leicht zu implementieren (Speicherplatzersparnis).

Protokollbeschreibung

Die Dauer eines Bits ist beim RC 5 Code immer gleich lang. Eine Flanke in der Mitte des Intervalls bestimmt um welchen logischen Zustand es sich handelt. Logisch 0 ist definiert durch eine negative Flanke. Logisch 1 ist durch eine positive Flanke beschreibbar. Daher wird eine zusätzliche Flanke am Beginn eines Bit-Intervalls benötigt, falls eine Serie gleicher Bits auftritt. Diese Flanke wird nicht benötigt falls ein zum vorhergenden Zustand komplementäres Bit auftritt.

Wie sind die Befehle wie Lautstärke oder Kanalwahl kodiert? Jeder Befehl wird mit eine Länge von 14 Bits kodiert. Die ersten beiden Bits werden als Startbits verwendet, um dem Empfänger zu synchronisieren. Das nächste Bit ist ein sogenanntes Toggle-Bit, dessen logischer Zustand bei jedem neuen Tastendruck negiert wird. Anschließend folgt kodiert mit 5 Bits das Gerät, das angesprochen werden soll. Schlieliche werden die letzten 6 Bits für den eigentlichen Befehl verwendet.

Die Abbildung

oben zeigt das übertragene IR Signal. Die mittlere Abbildung zeigt das vom IR-Detektor [2] gelieferte Ausgangssignal. Dieses Signal wird vom Prozessor über eine I/O Leitung eingelesen.

Die untere Abbildung zeigt das logische Signal nach der Verarbeitung durch die Software.

Adresse: Gerät: Befehl:

0  TV1  0...9  Numbers 0...9 (channel select)
1  TV2  12  Standby
5  VCR1  16  Master Volume +
6  VCR2  17  Master Volume -
17  Tuner  18  Brightness +
18  Audio Tape 19  Brightness -
20  CD Player  50  Fast rewind

52 Fast run forward 53 Play 54 Stop 55 Record

Einige wichtige Adressen und Befehle

2.2 Beispielszenarien zur Kommunikation

2.2.1 Kommunikation Rug Warrior mit Rechner

Durch einen Kommunikationskanal zwischen Rug Warrior und Rechner sind verschiedenste Informationen austauschbar. Einige Möglichkeiten sind:

• Übertragen von neuen Programmen auf die Rug Warriors

• Überwachen von Rug Warrior Programmen während der Ausführung (Statusinformationen)

• Übertragen von Steuersignalen zum Rug Warrior (z.B. Fernsteuern des Rug Warriors)

• Komplexere Aufgaben wie z.B. das Evolvieren eines ANNs

Voraussetzung für diese Punkte ist das auf den Rug Warriors ein Programm läuft welches den entsprechenden Kommunikationskanal implementiert und via standardisierter Schnittstellen den anderen Programmen zur Verfügung stellt. Dieses Programm muß folgende Funktionen erfüllen:

• Hardwareansteuerung für den entsprechenden Kommunikationskanal (Layer 1)

• Implementierung des entsprechenden Übertragungsprotokolls (wie z.B. RC 5 bei IR Kommunikation, ISO Layer 2)

• Kapselung des physikalischen Übertragungsprotokolls in Unterprogrammen mit, vom verwendeten Transportmedium unabhängigen, standardisierten Schnittstellen

• Bereitstellung einfacher Netzwerkfunktionen zum gezielten Ansteuern einzelner Kommunikationspartner (ISO Layer 3)

• Funktionen zur Überprüfung einer korrekten Übertragung und gegebenenfalls einer erneuten Übertragung (ISO Layer 4)

• Funktionen zum automatischen Auswählen eines verfügbaren, geeigneten Übertragungsmedium eventuell in Verbindung mit einer Type Of Service Unterscheidung

• Allgemeine Fehlerüberprüfung und Korrektur (siehe 2.1.1) für obige Punkte

Im folgenden werden die einzelnen Möglichkeiten näher behandelt.

Übertragen von neuen Programmen auf die Rug Warriors

Hierfür muß auf den Rug Warriors neben dem oben erwähnten Kommunikationsprogramm auch ein kleines Monitorprogramm laufen. Dieses Programm muß Funktionen wie

• Übertragen von Programmen vom und zum Rug Warrior

• Starten und Beenden von Programmen

• Gegebenenfalls übertragen von Debug Informationen

Überwachen von Rug Warrior Programmen während der Ausführung

Überwachen von Programmen z.B. durch die Möglichkeit das Programme Statusinformationen wie Ladezustand, Position, Landkarten, etc. auf den Rechner übertragen können. Diese Informationen werden am Rechner durch einsprechendes Programm ausgewertet und angezeigt.

Übertragen von Steuersignalen zum Rug Warrior

Senden von Anweisungen (Befehlen) vom Rechner an die Rug Warriors um aktiv in das Handeln des Rug Warrior eingreifen zu können. Beispielsweise die Fernsteuerung eines Rug Warriors bei Problemsituationen.

Komplexere Aufgaben wie z.B. das Evolvieren eines ANNs

Beispielsweise das Koppeln eines Systems zur Evolution von ANNs am Rechner mit den Rug Warriors welche die Fitness der generierten Netze in einer realen Umgebung bestimmen. Dies könnte wie folgt realisiert werden:

1. Generierung eines neuronalen Netzes am Rechner

2. Übertragung des Netzes auf den Rug Warrior Wenn sich ein Rug Warrior in der Ladestation befindet, kann diese Zeit verwendet werden um ein neues, vom Rechner generiertes neuronales Netz auf den Rug Warrior zu übertragen. Damit kann die Zeit sinnvoll genutzt und Leerlaufzeiten in der Ladestation minimiert werden. Hierbei ist eine Kommunikation via Infrarot sinnvoller als eine akustische Kommunikation, da bei einer akustischen Kommunikation immer nur eine Übertragung gleichzeitig stattfinden kann und damit den anderen Rug Warriors die Möglichkeit zu dieser Kommunikation während des, relativ lange andauernden, Ladevorganges genommen wird. Optional ist natürlich auch eine Datenübertragung durch elektrische Kontakte in der Ladestation denkbar. Ein Vorteil wäre eine schnelle Datenübertragung. Nachteilig wirkt sich der höhere Hardwareaufwand sowie die Tatsache das die Positionierung des Rug Warriors in der Ladestation sehr genau erfolgen muß, um eine Datenübertragung zu gewährleisten aus.

3. Anwenden des neuronalen Netzes in einer realen Umgebung Steuern des Rug Warriors durch das neue ANN. Laufende Berechnung der Fitness aufgrund verschiedener Faktoren wie z.B. Fläche der erkundeten Umgebung, Ladezustand, etc.

4. Rückkehr zur Ladestation Rückkehr des Rug Warriors zur Ladestation wenn ein entsprechend geringer Ladezustand erreicht ist und Übertragung der Fitness an den Rechner.

5. Evolvierung der ANNs Evolvierung der Netze durch ein entsprechendes System am Rechner und Übertragung eines neuen Netzes an den Rug Warrior.

2.2.2 Kommunikation Rug Warrior mit Rug Warrior

Zwischen den Rug Warriors bestehen, wie bereits in 1.4 erwähnt, drei verschiedene Kommunikationsmöglichkeiten woraus sich verschiedenste Anwendungsszenarien entwickeln lassen. Wie in 2.2.1 ist auch hier ein Programm nötig welches die Kommunikationskanäle implementiert. Einige denkbare Szenarien sind:

• Übertragung von erfolgreichen ANNs auf andere Rug Warriors

• Abgleichen von Positionsinformationen und Landkarten

• Fernsteuern von anderen Rug Warriors durch einen Rug Master

• Organisation von Treffen

• Morsesignale mittels Stoßsensoren

Übertragung von erfolgreichen ANNs auf andere Rug Warriors

Durch die Möglichkeit zum Austausch von ANN-Informationen können sich Rug Warriors gegenseitig verbessern. Insbesondere besteht eine Anwendung in der Bildung von Gruppen mit unterschiedlichen Strategien. Dabei müssen allerdings zusätzlich zur Fitness, Kriterien eingeführt werden nach denen sich die verschiedenen Rug Warriors entscheiden können welches Netz sie übernehmen (Charakter).

Abgleichen von Positionsinformationen und Landkarten

Mehrere Rug Warriors durchstreifen gleichzeitig ein Gebiet und organisieren nach einiger Zeit ein Treffen, um die gesammelten Informationen abzugleichen.

Fernsteuern von anderen Rug Warriors durch einen Rug Master

Hat ein Rug Warrior eine höhere Fitness als die anderen Rug Warriors, so ist er für die Evolution wichtiger. Deshalb hat er das Recht in für ihn ungünstigen oder gefährlichen Situationen andere Rug Warriors zu kommandieren. Ein Beispiel wäre das Erkunden eines unbekannten Gebietes durch fernsteuern eines anderen Rug Warriors (Rug Scout).

Organisation von Treffen

Treffen zwei Rug Warriors zufällig aufeinander (Erkennung durch Stoßsensoren) so wissen sie in diesem Moment die Position des jeweils anderen. Trifft nun ein dritter Rug Warrior auf einen der beiden, so kann dieser nun die Position des anderen erfragen, um sich mit ihm zu treffen.

Morsesignale mittels Stoßsensoren

Morsesignale sollen vor allem der ersten Kontaktaufnahme dienen, um anschließend eine andere Kommunikationsform zu wählen. Die Information welche Form ausgewählt wird, kann unter anderem im Morsesignal enthalten sein.

Anhang A

Programme

A.1 Infrarot-Kommunikation

A.1.1 Test Programm

Folgendes Unterprogramm sendet ein permanentes 40 kHz moduliertes Infrarot-Signal aus.

int ir_send()
{
  write_port(port_d,ir_maskl + ir_maskr, ir_mask);
  while(1);
}
int ir_rec()
{
  int status;
  while(1)
  {
    status=peek(port_e) & ir_detect_mask;
    if (status)
      printf("Kein IR Signal\n");
    else
      printf("IR Signal\n");
  }
}

Anhang B

Protokolle

B.1 Besprechungsprotokolle

B.1.1 10.03.1999

Teilnehmende Personen: Schwaiger Roland Noisternig Michael Obermair Christoph Schmidbauer Josef Stieglbauer Gerald

Protokollführer: Obermair Christoph Ort: Büro Herr Schwaiger Zeit: 17.00 - 17.15 Einführende Besprechung über das Projekt und erste Aufgabenstellung Spezifikation des abzugebenden Projektberichtes

• Zu verwendendes Satzsystem: L^{A}TEX

• Eigene Titelseite

• Abstract (Übersicht)

• Einleitung (Um was geht es?)

• Literaturübersicht

• Literaturverzeichnis Abgabe der Projektberichte jeweils bis Dienstag 13.00 Uhr Erste Fragestellungen:

• Was sind Rug Warriors?

• Was ist Sensorik?

• Inter Rug Warrior Communication + Kommunikation mit Rechnern

Vorläufiges Projektziel sind prototypische Anwendungen für die Kommunikation falls diese möglich ist.

B.1.2 17.03.1999

Teilnehmende Personen: Schwaiger Roland Noisternig Michael Obermair Christoph Schmidbauer Josef Stieglbauer Gerald

Protokollführer: Noisternig Michael Ort: Büro Herr Schwaiger Zeit: 17.00 - 17.20

Fragestellungen:

• Genauere Betrachtung der akustischen Kommunikation.

• Behandlung einer “motorischen” Kommunikation, sowie die Kombination derselbigen mit anderen Kommunikationsarten.

• Inter Rug Warrior Communication + Kommunikation mit Rechnern.

• Einfaches Protokoll für IR-Kommunikation entwickeln.

• Einfaches Beispielprogramm für IR-Kommunikation.

B.1.3 24.03.1999

Teilnehmende Personen: Schwaiger Roland Noisternig Michael Obermair Christoph Schmidbauer Josef Stieglbauer Gerald

Protokollführer: Obermair Christoph Ort: Büro Herr Schwaiger Zeit: 17.00 - 17.25

Vorzunehmende Verbesserungen am Paper:

• Literaturverweis auf Multi-Agenten-Systeme notwendig • Literaturverweis auf ISO-7-Schichten-Modell notwendig

• Den Begriff EXOR durch den Begriff Exklusives Oder ersetzen

• Die Abkürzung sh. für siehe nicht mehr verwenden

• Wieviele Prozesse können auf einem Rug Warrior gleichzeitig ausgeführt werden? Aufgaben bis zum 14.4.1999:

• Auf Kommunikationsbeispiele näher eingehen

• Hat Rug Warrior eine bestimmte Signatur?

• Auseinandersetzung mit dem RC5-Standard

Literaturverzeichnis

[1] J. L. Jones and A. M. Flynn, Mobile Robots - Inspiration to Implementation. A. K. Peters, Ltd., first ed., 1993.

[2] Radio Shack, GP1U52X Infrared Receiver/Demodulator Technical Data Sheet. Radio Shack Nr. 276-137.

[3] E. Herter and W. Loercher, Nachrichtentechnik. Carl Hanser Verlag, seventh ed., 1994.

[4] “Serial infrared physical layer specification,” Specification Version 1.3, Infrared Data Association, Intrared Data Association, P.O. BOX 3883, Walnut Creek, California, U.S.A. 94598, Oct. 1998.