Bachelorarbeit, 2012
72 Seiten, Note: 1,3
1 Einführung in Idee und Aufbau der Arbeit
2 Details des Roboters
2.1 Grundsätzliche Strukturen eines C-Programms für Mikrocontroller
2.2 Controllersysteme mit einem Master und Slave(s)
2.3 Die Basiseinheit des RP
2.3.1 Aktoren
2.3.2 Sensoren
2.3.3 Programm
2.4 Die Erweiterung „M32“
2.4.1 Aktoren
2.4.2 Sensoren
2.4.3 Programm
2.5 Die Erweiterung „M128“
2.5.1 Aktoren
2.5.2 Sensoren
2.5.3 Programm
2.6 Andere Module als Master
2.7 Mechanische und elektronische Erweiterungen
2.7.1 Stoßstange hinten
2.7.2 Scheinwerfer
2.7.3 Bluetooth-Modul BTM
2.7.4 Akkuanzeige
2.7.5 Das Snake Vision Modul
2.7.6 2D- IR- Abstandssensor auf Servomotoren
2.7.7 Funkkamera auf Servomotoren
2.7.8 Ultraschall-Abstandssensor SRF
2.7.9 Neue Erweiterungsplatine „M64“
2.7.10 Das Gehäuse
2.8 Das Gesamtkonzept des Roboters
3 Das LabView-Programm
3.1 Die LabView-Entwicklungsumgebung
3.2 Grundaufbau des Programms
3.3 Senden und Empfangen von Daten
3.4 Befehlsverwaltung
3.5 Hauptschleife
3.5.1 Fernsteuerung durch Tastatur
3.5.2 Fernsteuerung mittels einer TV-Fernbedienung
3.5.3 Umherfahren und Ausweichen
3.5.4 Wärmequellensuche
3.5.5 Lichtquellensuche
3.5.6 Einhalten von Abständen
3.5.7 Direkteingabe von Befehlen
3.5.8 Aktivieren von Routinen durch Taster am RP
3.6 Tongeber
3.7 Abstandserkennung
3.8 LEDs und I/Os
3.9 Einbinden eines Kamerabildes
3.10 Frontpanel
3.11 Probleme und Lösungen
4 Anwendungsmöglichkeiten in der Nanostrukturierung
4.1 Das Rasterkraftmikroskop
4.2 Verwendete Proben und Methoden
4.3 Bildverarbeitungsalgorithmen
4.4 Das LabView-Programm
5 Resümee und Ausblick
6 Anhang
6.1 Hauptprogramme auf den Mikrocontrollern
6.1.1 Das Slave-Programm auf dem Basismodul
6.1.2 Das Slave-Programm auf dem Erweiterungsmodul M32
6.1.3 Das Master-Programm auf dem Erweiterungsmodul M128
6.2 Befehlsparameter
6.3 Schaltplan des M64-Moduls
6.4 Der Vision Assistant – eine Anleitung
6.4.1 Graustufenformatierung
6.4.2 Image-Bearbeitung
6.4.3 Die Machine Vision
6.5 Probenpräparation
6.6 Bilder des RP6
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
"Aber ... wozu soll er gut sein?" (Ein IBM-Ingenieur über die Idee des Mikroprozessors, 1968)
[1]
Die Robotik befindet sich seit vielen Dekaden in einem Aufwärtstrend [2]. Anfänglich vorwiegend in Science-Fiction-Filmen, wird die Anwesenheit von Automatisierungstechnik und technischen Helfern aller Art zunehmend realer; sie begleitet uns bereits in der industriellen Fertigung [3], in der Unterhaltungstechnik und immer öfter auch in Küchengeräten, Smartphones und anderen Utensilien des täglichen Lebens [4, 5, 6, 7]. In Fahrzeugen haben dabei die Systeme im Gegensatz zu vielen anderen, oft der Unterhaltung gewidmeten Bereichen, die Aufgabe, den Fahrer nicht nur mehr Komfort, sondern auch mehr Sicherheit zu bieten. Dabei kommen Fahrerassistenzsysteme zum Einsatz, welche in erster Linie Abstände zu vorausfahrenden Fahrzeugen, aber auch seitlich oder hinter dem Fahrzeug überwachen, das Einparken vereinfachen oder sogar selbst durchführen [8]. Doch auch der Fahrzeugführer, unter Anderem seine Aufmerksamkeit, wird mittlerweile durch Sensoren überwacht [9]. Dafür befinden sich in heutigen Fahrzeugen eine große Bandbreite von Mikrocontrollern und Prozessoren, welche die Sensoren überwachen, Aktoren schalten und miteinander kommunizieren oder dem Fahrer wichtige Informationen gegliedert und übersichtlich darstellen.
Doch in der Robotik wird auch in ein anderes Gebiet immer weiter vorgestoßen: in den Bereich von Atomen und Molekülen [10, 11]. Die Robotik wächst gewissermaßen in immer kleinere Bereiche, wobei hier die Fertigung von Nanostrukturen im Vordergrund steht [12, 13, 14].
In der vorliegenden Arbeit wird ein kommerzielles Robotersystem, bestehend aus drei Modulen mit je einem eigenen Mikrocontroller der Atmel-Familie vorgestellt. Dieses System wird durch einige Komponenten – Sensoren und Aktoren – erweitert und mittels Bluetooth von einem PC (Personal Computer) überwacht. Das hierfür verwendete Programm wird in LabView erstellt und übernimmt die Aufgaben der Visualisierung aller Sensordaten, ermöglicht die Fernsteuerung des Roboters durch den Benutzer, sowie die Durchführung und Koordination automatisierter Routinen.
Des Weiteren wird eine dieser Routinen, welche eine Bildverarbeitung beinhaltet, auf ein Gebiet der Nanostrukturierung angewandt: Es sollen mittels Rastertunnelmikroskopie Kohlenstoffmonoxydmoleküle (CO-Moleküle) auf einer Kupferoberfläche automatisiert gefunden und deren Positionen ausgegeben werden.
Die weiterführende Idee dabei ist, dass diese Moleküle einmal aufgenommen und zu ganzen Schaltungen und Gattern zusammengefügt werden können [10, 11, 15, 16].
Damit beginnt der Schritt von der Automatisierungstechnik eines Roboters zur automatisierten Strukturierung in der Nanometerskala.
Zunächst sollen Routinen und das Verarbeiten von Befehlen in LabView an einem makroskopischen Modell, einem Robotersystem „RP6“ der Firma Arexx Engineerings, erprobt und angewendet werden.
Dieses System wird gewählt, da die darauf befindlichen Mikrocontroller aus der ATmega-Reihe stammen und daher in den Programmiersprachen „C“ und „CompactC“ beschrieben werden können. Die Systeme sind auch an ein I²C genanntes Kommunikationssystem angeschlossen. Dieser serielle Datenbus bildet die Hauptverkehrsader für alle Sensor- und Befehlsdaten zwischen den Mikrocontrollern. Außerdem bieten die drei zum RP6 gehörenden kommerziellen Plattformen umfangreiche Hardware, Sensoren und vorbereitete Anschlussmöglichkeiten, sowie eine umfangreiche Bibliothek zum Ansteuern der Aktoren, zum Auslesen der Sensordaten und zur Verwendung serieller Schnittstellen und des Bussystems I²C.
Ein weiteres Merkmal dieses Robotersystems ist der modulare Aufbau: Jedes weitere Modul kann ohne weitere Umstände auf das Vorhergehende gesteckt werden. Die Verbindung wird dabei durch zwei getrennte Bussysteme gewährleistet, den XBUS und den USRBUS [17]. Während der XBUS (von Expansion Bus, dem Erweiterungsbus) vom Hersteller Arexx bereits belegt ist mit den Leitungen des I²C, mit der Betriebs- und der Batteriespannung sowie mit einigen weiteren, für die kommerziellen Module wichtigen Leitungen, steht der USRBUS (von User Bus, dem Benutzerbus) mit seinen 14 Leitungen vollständig dem Anwender frei.
Im Folgenden wird der Roboter in Hard- und Software erläutert, Aktoren und Sensoren werden beschrieben und die auf die einzelnen Mikrocontroller geschriebenen Programme werden erklärt.
Danach werden eigene mechanische wie elektronische Erweiterungen aufgezeigt.
Es soll darauf hingewiesen werden, dass die auf den Mikrocontrollern befindlichen Programme grundsätzlich sogenannte „Open Source Software“ sind, also öffentliche, nicht durch Rechte geschützte Programme, welche teilweise vom Hersteller des RP6 selbst veröffentlicht werden. Sie sind den Anforderungen dieser Arbeit angepasst und erweitert sowie teilweise umstrukturiert worden.
Zunächst soll eine allgemeine Struktur eines auf einem Mikrocontroller befindlichen Programms erläutert werden.
Ein Programm besteht aus einem Hauptteil, den Bibliotheken, dem Makefile und dem Hexfile. Der Hauptteil (das sogenannte Mainfile) sowie die Bibliotheken sind hier in den Hochsprachen „C“ und „CompactC“ geschrieben. In den Bibliotheken werden häufig verwendete Funktionen ausgelagert, wodurch eine einzige Funktion an einer Vielzahl von weiteren Ereignissen beteiligt sein kann. Das Makefile beinhaltet alle für das Beschreiben eines Mikrocontrollers wichtigen Argumente. Dies sind unter Anderem die Mikrocontrollerklasse, die Taktrate und die verwendeten Bibliotheken. Diese Kenntnisse sind wichtig, wenn das Programm kompiliert wird zu einem für den Mikrocontroller verständlichen Maschinencode, welcher in einem Hexfile gespeichert wird. Dieses Hexfile wird dann in den Hauptspeicher des Mikrocontrollers geladen.
Den wichtigsten Programmabschnitt stellt dabei der sogenannte Mainloop dar, eine Schleife, welche bis zum Zurücksetzen des Programms ununterbrochen abläuft. Sie kann folgendermaßen aussehen:
while (1) {…Programmfunktionen…}
Diese Schleife nennt sich while-Schleife und wird solange ausgeführt, bis ihr Argument, hier (1), nicht mehr wahr ist, also Null ist. Da die Eins stets verschieden von Null ist, wird die Schleife immer von Neuem ausgeführt.
In dieser Schleife werden alle wichtigen Programmfunktionen aufgerufen, welche dann abgearbeitet werden. Bei den hier verwendeten Programmen sind dies vorwiegend Funktionen zum Lesen oder Beschreiben der seriellen Schnittstelle und der Kommunikationssysteme zwischen den Mikrocontrollern, zum Auslesen von Sensordaten und zum Schalten von Aktoren wie den Motoren, den LEDs oder den Servomotoren.
Dabei können die im Mainloop aufgeführten Funktionen natürlich ihrerseits selbst Funktionen aufrufen, wobei die Funktionen sowohl im Mainfile als auch in den Bibliotheken stehen können [18, 19, 20].
Werden in einem System mehrere Mikrocontroller verwendet, gibt es verschiedene Formen, um diese miteinander agieren zu lassen. Das am häufigsten verwendete Modell, welches auch hier seine Anwendung findet, ist das hierarchisch aufgebaute Master-Slave-Modell [21]. Dabei wird ein Mikrocontroller als Kopf, also Master, des Systems bestimmt, während alle weiteren Mikrocontroller als ausführende Organe, also Slaves, fungieren.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1 – Eine typische Master-Slave-Hierarchie
Die Slaves können dabei auch in vielen Teilbereichen autonom handeln, sind aber auf Anordnungen des Masters angewiesen und geben ihre ermittelten Daten in der Regel an ihn weiter. Es muss erwähnt werden, dass es auch Mischformen gibt, wenn etwa ein Mikrocontroller als Knoten- und Angelpunkt eines Masters fungiert und alle weiteren Datenkommunikationen über ihn laufen. Somit ist er – aus Sicht der ihm angegliederten Mikrocontroller – ein Master, der jedoch seinerseits einem anderen System unterstellt ist.
Diese Situationen sind in Abbildung 1 vereinfacht dargestellt, wobei die Verzweigungen in realen Systemen oft stark erweitert sein können.
Auch das hier verwendete System entspricht einer solchen, erweiterten Master-Slave-Beziehung. Der Computer übernimmt die Rolle des Masters, welcher mit nur einem Mikrocontroller, dem Master-Slave, kommunizieren kann. Dieser Mikrocontroller regelt dann jede weitere Aktion des Roboters, trägt alle Sensordaten zusammen und sorgt für eine funktionierende Kommunikation mit seinem Master (siehe Abbildung 2).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2 – Hier verwendete Master-Slave-Architektur: den Kopf des Systems bildet der Computer; diesem sind zwei Slaves unterstellt (Roboter und eine in 2.7.7 erläuterte Kamera), wobei sich der Roboter in zwei Slaves mit Untereinheiten und dem Master-Slave gliedert
Schon die Basiseinheit des RP6 bietet viele Sensoren und Aktoren. Als Controller kommt ein ATmega32 der Firma Atmel zum Einsatz, betrieben bei einer Taktrate von 8MHz; dies entspricht einer Instruktionenrate von acht Millionen pro Sekunde. Die Basiseinheit besteht nicht nur aus der Platine mit den elektronischen Komponenten, sondern besitzt ein Fahrgestell. In diesem ist Platz für Batterien und für zwei Getriebemotoren. An das Fahrgestell sind zwei Kettenräder montiert [17].
Einen Überblick über die Basiseinheit des RP6 verschafft Abbildung 3.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3 – Überblick über das Basismodul des RP6; Quelle: [22]
Die Basiseinheit stellt acht freie I/Os (digitale Ein- bzw. Ausgänge) zur Verfügung, von denen zwei auch als ADCs (Analog-Digital-Wandler, analoge Eingänge) verwendet werden können. Die verbleibenden sechs I/Os sind zur Visualisierung an LEDs angeschlossen. Vier weitere IR-LEDs können zur Kommunikation oder zur Abstandswahrnehmung verwendet werden.
Die Basiseinheit besitzt zwei Getriebe-Gleichstrommotoren, welche unabhängig voneinander die beiden Ketten antreiben können.
Als Sensoren kommen vorwiegend Spannungsteiler zum Einsatz. Solche Spannungsteiler bestehen meist aus zwei in Reihe geschalteten Widerständen, siehe Abbildung 4.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4 – Spannungsteiler mit zwei Widerständen
Die resultierende Spannung nach R1 entspricht dem Verhältnis des zweiten Widerstandes zum Gesamtwiderstand [23]:
Das Modell des Batteriespannungssensors verdeutlicht dies. Die maximale Akkuspannung, welche die Spannungsregelung des RP6 verwenden kann, beträgt 10V; jedoch darf der ADC des Mikrocontrollers nicht mehr als 5V erhalten. Somit ergibt sich ein Verhältnis , die Widerstände und müssen also gleich groß sein. Es werden zwei 100kΩ Resistoren verwendet, da bei diesen Größenordnungen die Leistung, welche durch die Widerstände verbraucht wird, gering ist: [23].
Darüber hinaus gibt es zwei Helligkeitssensoren und zwei Motorstromsensoren, welche als Spannungsteiler aufgebaut sind. Außerdem kann die Kettendrehzahl jeder Kette durch Reflexlichtschranken und Codierscheiben bestimmt werden, wodurch eine einfache Odometrie – eine Bestimmung von Ortsdaten anhand des Antriebssystems – möglich wird [7, 24, 25, 26].
Ein IR-Sensor kann zusammen mit zwei nach vorne gerichteten IR-LEDs zur Abstandserkennung – dem sogenannten ACS, Anti Collision System – genutzt werden, aber auch zur IR-Kommunikation mit anderen Systemen oder mit einer TV-Fernbedienung, solange diese im Phillips-Standard RC5 sendet [17]. Zuletzt besitzt die Basiseinheit vorne zwei Stoßstangen-Taster, sogenannte Bumper, um Anschläge zu registrieren.
Das auf dem ATmega32 des Basismoduls befindliche Programm ist ein einfaches Slave-Programm, welches neue Sensordaten in ein Register des I²C schreibt und von dort Befehle erhält. Dieses Programm wird fast vollständig vom Hersteller Arexx Engineerings übernommen und lediglich an die Anforderungen angepasst. Das Mainprogramm kann in Anhang 6.1.1 angesehen werden.
Diese erste Erweiterung des RP6 enthält einen weiteren ATmega32, jedoch kann dieser durch eine Taktfrequenz von 16MHz doppelt so viele Instruktionen pro Sekunde abarbeiten, wie der Mikrocontroller der Basiseinheit [17, 27].
Neben der Möglichkeit, ein LC-Display anzuschließen, ist des Weiteren ein Piezo-Tongeber (Beeper) vorhanden, vier LEDs, fünf Taster sowie 14 frei zu verwendende I/Os, wovon 6 als ADCs verwendet werden können.
Die Erweiterung M32 bietet zwar viele Möglichkeiten für eigene Erweiterungen, hat jedoch nur eine Sensoreinheit, ein Mikrofon mit sogenanntem Peak-Detektor. Dabei wird für ein festes Zeitintervall die Amplitude gemessen, jedoch wird nur der Maximalwert in einem Kondensator gespeichert und kann über einen ADC eingelesen werden.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 5 – Das Erweiterungsmodul M32; erkennbar ist der Mikrocontroller (Mitte), die vier LEDs (unterer Bildrand) und die fünf Taster (links); Quelle: [27]
Wie die Basiseinheit, ist auch das Modul M32 ein Slave und wird verwendet, um die Zustände der Taster und die Werte des Mikrofons über den I²C-Bus an den Master weiter zu geben und vom Master Befehle zur Ausführung entgegen zu nehmen. Sämtliche I/Os können als Ausgänge für Servomotoren verwendet werden. Das Hauptprogramm ist in Anhang 6.1.2 einzusehen.
Als zweite Erweiterung steht ein Modul mit einem ATmega128 bei 14,7456MHz zur Verfügung. Da dieser Mikrocontroller durch seine hohe Speicherkapazität und seine Leistungsfähigkeit den beiden anderen Mikrocontrollern weit überlegen ist, wird er als Master eingesetzt [28].
Diese Einheit ist, wie die Erweiterung M32, mit einem Piezo-Tongeber und einer Anschlussmöglichkeit für ein LC-Display ausgestattet, bietet zusätzlich 19 frei zur Verfügung stehende I/Os, wovon acht auch als ADCs genutzt werden können, sowie fünf an weitere I/Os gekoppelte LEDs. Drei der I/Os können hier zur Ansteuerung von drei Servomotoren verwendet werden.
Auch dieses Erweiterungsmodul hält nur eine Sensoreinheit, einen an den I²C-Bus angeschlossenen Temperatursensor TCN75 der Firma Microchip, bereit [29].
Der große Nutzen solcher Erweiterungseinheiten liegt jedoch in ihren vielfältigen Verwendungsmöglichkeiten, welche durch eine große Anzahl vorgefertigter Sensoren eingeschränkt werden würde.
Das auf dem ATmega128 installierte Programm wird, anders als bei der Basiseinheit oder dem M32-Modul, nicht in der Programmiersprache „C“, sondern in „Compact C“ beschrieben (siehe 6.1.3). Es kann sowohl als Master, wie auch als Slave dargestellt werden: das Modul sammelt alle eigenen Daten, sowie solche, die über den I²C-Bus von den Slave-Einheiten kommen und gibt den beiden Slavemodulen Steuerbefehle wie Fahrbefehle oder neue Servomotorpositionen. Jedoch ist es, aus Sicht des eigentlichen Masters – des PCs – ein Slave, da der Controller alle gesammelten Daten über die serielle Schnittstelle an den PC weitergibt und von ihm Befehle erhält.
Der Roboter sendet dabei seine Daten in Form eines Endlosstrings. Jeder Sensorwert nimmt Zahlen von 0..1023 für analoge oder 0 bzw. 1 für boolesche Werte an und wird durch einen Doppelpunkt von einem Buchstabenkürzel, welches den betreffenden Sensor charakterisiert, getrennt. Nach jedem Datensatz eines Sensors findet ein Zeilenumbruch statt. Der Doppelpunkt zusammen mit dem Zeilenumbruch ermöglicht später wiederum das Auftrennen des Strings in seine einzelnen Komponenten und das Zuordnen von Werten zu seinem Sensor. Ein solcher String kann wie folgt aussehen:
…
BumpL: 1
BumpR: 0
Bat:901
…
In diesem Fall ist also der linke Bumper (BumpL) gedrückt (1), der rechte (BumpR) jedoch nicht (0). Der Ladezustand der Batterie (Bat) befindet sich bei 901 von möglichen 1023, also bei 88%.
Insgesamt muss der Mikrocontroller jedoch 36 Sensorwerte übermitteln, zeitgleich aber auch Befehle erhalten und eigene Aufgaben wie das Stellen von Servomotoren oder die Weitergabe von Steuerbefehlen an die Slaveeinheiten erledigen. Daher werden die Daten zunächst in eine weitere Variable „old SensorX “ geschrieben. Weicht ein neuer Sensorwert von dem alten ab, wird er gesendet. Handelt es sich um den gleichen Wert, wird er verworfen. Diese Vorgehensweise entlastet den Mikrocontroller und die Übermittlungseinheit (siehe 2.7.3) erheblich.
Das Empfangen von Daten des Computers funktioniert ähnlich. Er wird durch eine Raute (#) eingeleitet und durch einen Stern (*) beendet. Dazwischen stehen mindestens zwei, höchstens fünf durch einen Doppelpunkt getrennte Parameter. Der erste Wert kennzeichnet die Art des Befehls; so trägt ein Fahrbefehl die Ziffer „1“, ein Befehl für Servomotoren die Ziffer „2“, der Stoppbefehl die Ziffer „7“ und so fort (vergleiche Anhang 6.2). Die letzte Komponente ist eine nach jedem Befehl inkrementierte Befehlszahl Modulo 100. Sie zeigt dem Mikrocontroller, ob der Befehl aktuell ist oder ob ein Befehl mehrfach gesendet oder empfangen wurde. Außerdem kann so vermieden werden, dass ein im Mikrocontroller angekommener und gespeicherter Befehl mehrfach ausgeführt wird.
Alle weiteren Parameter sind Werte, welche der jeweiligen Aktion zuzuordnen sind. So braucht ein Fahrbefehl auch für jede Kette eine Geschwindigkeit und eine Fahrtrichtung. Ein typischer Befehlsstring könnte folgendermaßen aussehen:
#1:50:25:0:87*
Diesen Befehl überprüft nun der Mikrocontroller der M128 auf Richtigkeit, also auf Anfang (#) und Ende (*) sowie auf Korrektheit der Befehlszahl (87). Danach wird über den I²C-Bus an das Basismodul der Fahrbefehl gegeben, sich vorwärts (0, der vierte Parameter) mit einer Geschwindigkeit von 50 Zähleinheiten (von 200 möglichen) mit der linken Kette und mit 25 Zähleinheiten auf der Rechten zu bewegen. Der Roboter wird also eine Kurve nach rechts fahren.
Durch diese Programmierung wird jede Reaktion auf Sensorwerte an den Computer abgegeben, was Vorteile durch die hohe Rechenleistung eines Computers hat, jedoch auch Nachteile bringt. Diese sind in der Reaktionszeit unter anderem nach Bumper-Anschlägen zu bemerken. Vom Anschlag bis zum Stoppen der Motoren vergehen 240ms. Dies ist nicht viel, jedoch würde sich diese Zeitspanne deutlich verringern, wenn man schon in den Controllern auf gewisse Ereignisse reagieren könnte. In diesem Projekt wird jedoch explizit darauf verzichtet, da das LabView-Programm auf dem Computer weiterhin jede Aktion bestimmen soll. Das Mainprogramm kann in Anhang 6.1.3 eingesehen werden.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 6 – Das Erweiterungsmodul M128, hier ohne Mikrocontroller dargestellt; Quelle: [28]
Es soll hier noch angemerkt werden, dass das Modul M128 nicht unbedingt der Master sein muss. Bei Abwesenheit dieser Erweiterung liegen auch Programme vor, welche das M32-Modul oder auch die Basiseinheit als Hauptmodul initialisieren würden. Das würde an dem in Kapitel 3 beschriebenen LabView-Programm nichts ändern, es könnten lediglich nicht alle Sensorwerte und Aktoren dargestellt respektive gesteuert werden. Dennoch werden in den Masterprogrammen für die M32 und für die Basis die gleichen Befehls- und Sensorstrukturen verwendet, wie in der hier beschriebenen Version mit dem Modul M128 als Master. Somit wird auch in dem LabView-Programm die Modularität des RP6 umgesetzt.
Der RP6 ist dazu gedacht, eigene Sensorschaltungen zu entwickeln; es handelt sich also nicht um ein fertiges Produkt zur reinen Anwendung, sondern um eines mit weitreichendem, individuellem Potenzial. Die hier verwendeten, teilweise selbst konstruierten Module werden im Folgenden näher beschrieben.
Um auch bei Rückwärtsfahrten auf Anstöße an Gegenständen reagieren zu können, sind am Heck des RP6 zwei Bumper angebracht und an zwei der freien I/Os der Basiseinheit angeschlossen. Diese Stoßstange wird mit EAGLE (Einfach Anzuwendender Graphischer Layout Editor) realisiert [30, 31].
Es sollte dennoch auch schon vor einem Anstoßen auf Objekte reagiert werden können, weswegen den Bumpern zwei IR-Abstandssensoren GP2D12 der Firma Sharp hinzugefügt sind [32]. Diese bieten eine sehr einfache Installation durch einen analogen 0..5V-Ausgang, welcher direkt an einen ADC eines Mikrocontrollers angeschlossen werden kann. Der ADC-Wert verläuft dann nahezu linear mit dem Abstand [32]. Jedoch ist auch ein Nachteil der IR-Abstandserkennung zu nennen: da hier mit Licht im infraroten Bereich gearbeitet wird, können Störungen durch das Umgebungslicht zwar durch periodische Modulation der IR-Diode unterdrückt werden, aber die Reflektivität der Oberfläche eines Objekts hängt stark von dessen Beschaffenheit und der Farbe ab [32]. So können weiße Oberflächen besser, das heißt früher detektiert werden als schwarze, bei glänzenden oder durchsichtigen Oberflächen treten vermehrt Probleme auf. Darüber hinaus benötigen die IR-LEDs sehr viel Strom. Eine Lösung für diese Probleme würden Ultraschall-Abstandssensoren liefern, die sogar eine deutlich höhere Reichweite besitzen und weniger Strom verbrauchen. Nachdem die Kosten von solchen Ultraschall-Abstandssensoren jedoch diejenigen der Sharp GP2D-Reihe bei Weitem übersteigen und die obigen Probleme für diese Arbeit nicht essentiell sind, wird weiterhin die IR-Abstandserkennung verwendet. Ein einzelner Ultraschall-Abstandssensor wird in 2.7.8 beschrieben.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 7 – EAGLE-Schaltplan der hinteren Stoßstange mit den beiden Sharp GP2D12-Sensoren und den beiden Bumpern (graue Rechtecke am unteren Bildrand); die LEDs 1 und 2 visualisieren Bumper-Anschläge
Das Problem des hohen Stromverbrauchs kann durch die Abschaltbarkeit der Sensoren durch einen BUZ11-Transistor (npn-Typ) eingedämmt werden (siehe Abbildung 8).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 8 – EAGLE-Schaltplan für die Abschaltbarkeit der Sharp GP2D12-Abstandssensoren durch einen BUZ11
Im Fernsteuerungsprogramm kann die Abstandserkennung manuell (de-)aktiviert werden; sie kann aber auch automatisch bei Rückwärtsfahrten an- und ansonsten abgeschaltet werden. Außerdem wird der Strom durch einen Zweitakku eingespeist, also nicht durch den Hauptakku, welcher durch das Antriebssystem und die IR-Abstandserkennung am vorderen Fahrzeugteil schon hoch belastet ist.
Die Basiseinheit wird mit ultrahellen weißen und roten LEDs für Scheinwerfer ausgestattet. Um die Abstrahlcharakteristik der vorderen LEDs zu verbessern, werden sie in Parabolspiegel gefasst. Da ihr Stromverbrauch sehr hoch ist, werden sie durch einen BUZ11-Transistor (npn-Typ) schaltbar installiert (siehe Abbildung 9).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 9 – Schaltplan der Scheinwerfer; LEDs 1 und 2 sind ultrahelle, weiße LEDs; 3 und 4 sind rote LEDs; ein Leistungsstarker BUZ11 schaltet die LEDs
Der RP6 bietet durch seine Hard- und Software die Möglichkeit, über eine serielle Schnittstelle zu kommunizieren [17]. Der Vorteil einer seriellen Schnittstelle liegt dabei in der dualen Übertragung, wodurch gleichzeitiges Senden und Empfangen von Daten möglich ist. Da jedoch eine Übertragung via Kabel für ein mobiles Gerät keine Alternative darstellen kann, wird auf ein kostengünstiges und dabei leistungsstarkes (sogenanntes Class1-Modul) Bluetooth-Modul BTM222 der Firma Rayson zurückgegriffen [33]. Dieses bietet eine ebenso einfache Übertragung mit gleichzeitigem Senden und Empfangen wie eine Kabelverbindung und ist dabei in seiner Bauform sehr kompakt, ausgestattet mit einer leistungsstarken Chipantenne im SMD-Format und niedrig im Stromverbrauch. Drei Nachteile müssen genannt werden. Zum Einen verwendet das BTM222 einen 3,3V-Pegel, wogegen die Mikrocontroller der Atmel ATmega-Reihe mit einem 5V-Pegel arbeiten. Diesem Problem wird durch ein Aufnahmemodul mit eigener Spannungsregelung und einem Pegelwandler Rechnung getragen [34]. Zum Anderen liegt der Sendebereich von Bluetooth bei 2,4GHz – einem Bereich, auf dem auch jedes Wireless-LAN, Mikrowellenherde, aber auch die in diesem Projekt verwendete Funkkamera (siehe 2.7.7) senden. Dabei kann es in seltenen Fällen zu Fehlübertragungen kommen. Dieses Problem ist nicht gravierend und die Auswirkungen kurzzeitig fehlerhafter Parameter könnten bei Bedarf durch Integration über mehrere Messwerte schnell gemindert werden. Zuletzt muss die im Vergleich mit anderen Funksystemen relativ geringe Reichweite genannt werden. Sie beträgt – je nach Umgebung – zwischen 10 und 30 Metern und ist damit durchaus für ein solches Projekt ausreichend.
Daher wird nach Abwägung von Vor- und Nachteilen und wegen der äußerst geringen Kosten gegenüber vergleichbaren Funksystemen auf dieses Bluetooth-Modul zurückgegriffen.
Das Programm auf dem Computer ist ausgestattet mit einer Anzeige für die beiden Akkus. Dennoch soll auch direkt am Roboter der Ladezustand beider Akkus ersichtlich sein, weswegen zwei Anzeigen mit EAGLE realisiert werden (siehe Abbildung 10). Diese besitzen je eine LED-Zeile mit sieben grünen und drei roten LEDs, sowie je einen zehnfachen LED-Treiberbaustein LM3914 [35], welcher hier als Komparator dient. Der Anzeigebereich des Moduls kann über ein Potentiometer und weitere Widerstände eingestellt werden. In diesem Projekt liegen die Grenzen der Anzeige bei 10V und 5V, der rote Anzeigebereich beginnt ab etwa 6,5V.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 10 – Schaltung der Akkuzustandsanzeige mit einer 10-LED-Leiste (rechts im Bild). Das Potentiometer (links, oben) erlaubt eine Feinjustage auf den maximalen und minimalen Spannungswert, welche hier bei 10V und 5V liegen.
Ein weiteres Element in diesem Projekt bildet das mit zwei Pyrosensoren der Firma PerkinElmer [36] ausgestattete „Snake Vision Modul“ der Firma Arexx Engineerings, welches zwei 0..5V-Analogausgänge besitzt und es somit ermöglicht, die Wärmestrahlung vor dem Roboter zu detektieren [37]. Dadurch können Gegenstände, die eine deutlich höhere Wärmestrahlung als ihre Umgebung haben – also Kerzen, Glühbirnen oder auch eine Hand – registriert werden und es wird erkannt, ob sich dieses Objekt links oder rechts vor dem Sensor befindet. Das Modul enthält dabei alle wesentlichen elektronischen Komponenten wie Operationsverstärker und eine eigene 5V-Regelung, welche hier jedoch aufgrund der konstanten Versorgungsspannung durch den RP6 nicht benötigt wird. Das Modul besitzt auch einen Taster [38].
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 11 – Das Snake Vision Modul der Firma Arexx Engineerings; vorne sind die beiden Pyrosensoren erkennbar sowie der Operationsverstärker und der Taster (Mitte); Quelle: [22]
Das Snake Vision wird auf zwei Servomotoren am Heck des RP6 angebracht, wodurch nicht nur die Wärmestrahlung hinter dem RP6 beobachtet werden kann, sondern auch je 80 links und rechts des Roboters sowie über ihm.
Es wird ein fertiges Modul zur zweidimensionalen IR-Abstandserkennung der Firma Dagu Hi-Tech Electronic angebracht [39]. Dieses besteht im Wesentlichen aus vier leistungsstarken IR-LEDs und vier kreisförmig um die IR-LEDs angeordneten Paaren von IR-Transistoren, welche ein Ausgangssignal von 0..5V haben, je nach Abstand eines Objekts vom Sensor. Außerdem besitzt dieses Modul bereits einen Transistor (PN100, npn-Typ), um das gesamte Modul bei Bedarf zu deaktivieren.
Der Vorteil dieses Systems gegenüber dem in 2.3.2 und 2.7.1 beschriebenen ACS liegt in der flächendeckenden Abtastung der Sensoren. Sie detektieren nicht nur Gegenstände direkt vor dem Sensormodul, sondern auch seitlich sowie über und unter dem Modul und können damit unter Anderem die Orientierung einer Fläche gegenüber dem Sensor messen.
Neben dem Effekt, Abstände messen zu können, wirken die vier IR-LEDs für die in 2.7.7 beschriebene Funkkamera auch als Nachtsichtgerät, da die Kamera auch IR-Licht detektieren kann. Dieses Modul wird ebenfalls auf zwei Servomotoren installiert.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 12 – Der 2D-IR-Abstandssensor; erkennbar sind die vier IR-LEDs sowie die in Paaren angeordneten acht IR-Sensoren; links unten befindet sich der Transistor PN100; Quelle: [40]
Es muss erwähnt werden, dass dieses Modul im Gegensatz zu den Sharp-Sensoren aus 2.7.1 durch Umgebungslicht gestört werden kann. Die IR-LEDs sind nicht in einer festen Frequenz moduliert, wodurch unter Anderem direktes Sonnenlicht sehr hohe Messwerte liefert. Da der Roboter stets in Räumen benutzt und getestet wird, ist dieses Problem jedoch nicht entscheidend und findet daher keine weitere Beachtung.
Eine in Aufbau und Programmierung aufwendigsten der hier verwendeten Sensoren bildet eine Funk-Farbkamera der Firma Pollin mit einem 2,4GHz-USB-Empfänger [41]. Dadurch wird es ermöglicht, dass Live-Bilder des Roboters von dem PC dargestellt und vor allem ausgewertet werden können. Dabei bietet eine Kamera umfangreiche Möglichkeiten wie Objekt-, Farb- oder Konturenerkennung.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 13 – Die Funk-Farbkamera mit USB-Empfänger; Quelle: [42]
Wegen des großen Stromverbrauchs wird sie an die Batterieeinheit des Zusatzmoduls M64 (siehe 2.7.9) angeschlossen und durch das Programm abschaltbar gemacht.
Da auch die Kamera schwenkbar sein soll, ist sie auf zwei Servomotoren angebracht.
Die Abstandssensoren, welche infrarotes Licht verwenden, haben – wie in 2.7.1 beschrieben – gewisse Nachteile, sind jedoch kostengünstiger. Dennoch wird ein einzelner Ultraschall-Abstandssensor des Typs SRF02 (Sonic Range Finder) der Firma Devantech Ltd. an die Kamera montiert. Dieser Sensortyp erlaubt es, mit nur einer Komponente abwechselnd zu senden und zu empfangen, wogegen ältere Modelle einen gesonderten Sender neben dem Empfänger benötigen. Somit ist die Bauform sehr klein und leicht. Die Reichweite ist mit 15 bis 6000mm überragend, wobei die Stromaufnahme mit nur 4mA äußerst gering ist [43]. Das SRF02 kann sowohl über den I²C-Bus angesprochen und ausgelesen werden, als auch über eine serielle Schnittstelle. In diesem Projekt wird das Modul über den I²C-Bus betrieben. Dem Sensor wird zunächst die gewünschte Längeneinheit (mm, Inch oder uS) mitgeteilt, woraufhin der Sensor 65ms für eine Messung benötigt. Danach wird das Messergebnis im angegebenen Längenmaß zurückgegeben.
Da einige Sensoren wie die Sharp-IR-Sensoren oder eine Funkkamera durchaus einen hohen Stromverbrauch aufweisen, wird eine Zusatzplatine mit EAGLE geplant und umgesetzt. Ihr Layout ist dabei an das des RP6 angeglichen. Im Folgenden werden die einzelnen Komponenten beschrieben (siehe Abbildung 14).
Die Erweiterung enthält einen eigenen Anschluss für einen Akku inklusive Kurzschluss- und Verpolungsschutz sowie einen Spannungssensor für diese Stromversorgung und eine eigene 5V-Spannungsregelung (a), einen Verteiler für die elf möglichen Servomotoren mit eigener, abgesicherter und durch einen npn-Transistor mit genügend Strom aufbereitete 6,6V-Spannungsregelung (d) und eine Aufnahme für ein Bluetoothmodul zur Datenkommunikation (e). Ebenso sind die in Kapitel 2 beschriebenen Bussysteme des RP6 enthalten (c und g).
[...]
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!
Kommentare