Lade Inhalt...

Entwicklung und Programmierung einer Robot Remote Control in LabVIEW: Anwendungen in der Nanostrukturierung

©2012 Bachelorarbeit 74 Seiten

Zusammenfassung

Der Mikrocontroller findet sich mittlerweile in einer Vielzahl von Systemen und ist aus dem täglichen Leben nicht mehr wegzudenken - vom Wecker am Morgen über die Sensoren in den heutigen Automobilen bis hin zu den leistungsstarken Prozessoren in Computern, Tablets und Smartphones.
Auch in der Robotik werden Mikroprozessoren eingesetzt, um einerseits präzise, statische Abläufe zu koordinieren, andererseits dynamische Anpassungen am Verhalten des Roboters vorzunehmen und auf Umwelteinflüsse zu reagieren.
Diese Arbeit entstand in einer Kooperation zwischen der Physikalischen Fakultät der Universität Regensburg und der Technischen Fakultät der Hochschule Regensburg und richtet sich an jeden, der sich der Roboterprogrammierung und -kommunikation widmen möchte. Sie erklärt kompakt die Grundprinzipien der LabVIEW-Programmierung und ausführlich die Verwendung des Vision Assistants von LabVIEW.
Als Experimentierplattform wird das kommerzielle, modulare Robotersystem RP6 der Firma Arexx Engineering verwendet und um diverse Aktoren und Sensoren erweitert. Der Roboter wird von drei Mikrocontrollern gesteuert, welche in einer Master-Slave-Hierarchie kommunizieren. Um dieses System von einem Personal Computer via Bluetooth zu überwachen und fernzusteuern, wird ein umfassendes Programm in der Programmierumgebung LabVIEW erstellt. Dieses visualisiert sämtliche Sensordaten, sendet Befehle an den Roboter und dient der Koordinierung automatisierter Routinen. Dabei können durch die erhöhte Rechenleistung des Personal Computers aufwendige Algorithmen angewendet werden. Unter Anderem wird in einer festgelegten Routine mit dem Vision Assistant ein vom Roboter übertragenes Kamerabild ausgewertet und verarbeitet.
Dieser Prozess wird dann auf ein Gebiet der Nanostrukturierung angewandt. Mittels Rastertunnelmikroskopie können Kohlenstoffmonoxydmoleküle auf einer Kupferoberfläche durch Bildverarbeitungsalgorithmen automatisiert gefunden und deren Positionen ausgegeben werden.
Dies dient als Basis, um künftig Moleküle automatisiert einzeln aufnehmen und zu ganzen elektrischen Schaltungen und Gattern im Nanometermaßstab zusammenfügen zu können.
Damit beginnt der Schritt von der Automatisierungstechnik eines Roboters zur automatisierten Strukturierung in der Nanometerskala.

Leseprobe

Inhaltsverzeichnis


1.3.3 Programm

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 5.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 1.5.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 5.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 5.1.3 eingesehen werden.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 6 – Das Erweiterungsmodul M128, hier ohne Mikrocontroller dargestellt; Quelle: [28]

1.4 Andere Module als Master

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 2 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.

1.5 Mechanische und elektronische Erweiterungen

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.

1.5.1 Stoßstange hinten

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 1.5.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.

1.5.2 Scheinwerfer

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

1.5.3 Bluetooth-Modul BTM222

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 1.5.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.

1.5.4 Akkuanzeige

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.

1.5.5 Das Snake Vision Modul

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.

1.5.6 2D- IR- Abstandssensor auf Servomotoren

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 0 und 1.5.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 1.5.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 1.5.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.

1.5.7 Funkkamera auf Servomotoren

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 1.5.9) angeschlossen und durch das Programm abschaltbar gemacht.

Da auch die Kamera schwenkbar sein soll, ist sie auf zwei Servomotoren angebracht.

1.5.8 Ultraschall-Abstandssensor SRF02

Die Abstandssensoren, welche infrarotes Licht verwenden, haben – wie in 1.5.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.

1.5.9 Neue Erweiterungsplatine „M64“

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).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 14 – Belegungsplan der Erweiterung M64. a: Spannungsversorgung mit Ladegerät-Buchse, 5V-Regler mit LED, Pinherausführungen für Masse, Batterie- und Versorgungsspannung; die über eine Sicherung auf Masse laufende Diode gewährleistet einen verpolungsischeren Akkuanschluss sowie einen Schutz vor Kurzschlüssen. b: Feuchtigkeitssensor. c: Bussystem XBUS des RP6. d: Verteiler für bis zu elf Servomotoren; eigener 5V-Regler, durch eine LED gegen Masse auf 6,6V gehoben; der Transistor versorgt die Servomotoren darüber hinaus mit genügend Strom; der Kondensator schützt vor kurzzeitigen Spannungspulsen. e: Aufnahme für Bluetoothmodul BTM222. f: Anschlussmöglichkeit für größere Verbraucher wie der Kamera; abschaltbar durch BUZ11-Transistor. g: Bussystem USRBUS; enthält 14 frei zu verwendende Pins. h: der LED-Treiberbaustein ULN2803 kann acht kleinere Verbraucher bis 600mA schalten. Die USB-Buchse oben links dient nur als Aufbewahrung für den Bluetooth-USB-Sender des Computers.

Um hohe Verbraucher, aber auch kleinere Schaltungen abschaltbar zu machen, kommen zum Einen mechanische Jumper zum Einsatz, zum Anderen auch npn-Transistoren, um momentan unnötige Verbraucher durch den Mikrocontroller zu deaktivieren (h und f).

Da neben der Temperatur und der Helligkeit eine weitere Komponente der Umwelt gemessen werden soll, wird ein einfacher Feuchtigkeitssensor (b) der Firma Sencera eingebaut [44].

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 15 – Platine M64; in der Mitte ist das BTM222 erkennbar, darüber liegen Sicherung, I/O-Erweiterung sowie die 5V-Regelung; links und rechts sind die Bussysteme erkennbar; unten links liegt der Transistor für größere Verbraucher; unten rechts befindet sich der Verteiler für elf Servomotoren

In Anlehnung an die beiden kommerziellen Module „M32“ und „M128“ lautet der Name für das neue Modul „M64“. Es ist ein passives Modul, da es keinen eigenen Mikrocontroller beinhaltet. Der Schaltplan ist im Anhang unter 5.3 auf Seite VII aufgeführt.

1.5.10 Das Gehäuse

Zur leichteren Anbringung mechanischer Komponenten wie LC-Display, Akkuanzeige und Servomotoren, sowie zum Schutz der elektronischen Elemente, wird ein aus Aluminium und dünnem Plexiglas bestehendes Gehäuse um den RP6 gebaut (siehe Abbildung 17). Dadurch wird der gesamte Roboter zwar schwerer, was den Strombedarf der Motoren erhöht, jedoch sind die Verkabelung und die Elektronik geschützt. Das kommt vorwiegend den Mikrocontrollern zu Gute, da sie ansonsten vor kapazitiven Lasten, welche durch Berührung entstehen können, nicht abgeschirmt sind.

1.6 Das Gesamtkonzept des Roboters

Wie in 2.2 beschrieben und in Abbildung 16 ersichtlich, handelt es sich bei dem Roboter um eine Zusammensetzung vieler unterschiedlicher Komponenten.

Der Computer stellt in diesem System die oberste Hierarchiestufe dar und kommuniziert lediglich mit dem passiven Empfangsmodul M64, welches die direkte Verbindung zum Mikrocontroller des Moduls M128 herstellt. Ihr unterstellt sind parallel beide Erweiterungen M32 und Basis. An jede Modulkomponente sind weitere Einheiten wie Servomotoren, das Antriebssystem und andere angegliedert.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 16 – Struktur des Roboters RP6 und seiner Komponenten

Die Funkkamera stellt eine eigene Rubrik dar, da sie parallel zum Subsystem RP6 Daten an den Computer sendet, jedoch nicht weiterhin von ihm oder durch den Roboter beeinflusst werden kann.

Den RP6 und alle seine hier beschriebenen Komponenten zeigt Abbildung 17.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 17 – Der RP6 mit allen Komponenten; im Hintergrund ist das Snake Vision Modul erkennbar sowie die Kamera mit dem SRF02 und der aktivierte 2D-IR-Abstandssensor, je auf zwei Servomotoren; der RP6 ist von einem Gehäuse aus Plexiglas und Aluminium umgeben; erkennbar sind auch die beiden Scheinwerfer mit ultrahellen weißen LEDs

2 Das LabVIEW-Programm

Die gesamte Datenauswertung wird durch den Computer geleistet. Alle Sensorwerte sollen graphisch dargestellt werden; der Roboter soll zum Einen fernsteuerbar sein, zum Anderen soll das Programm die Möglichkeit besitzen, den Roboter automatisiert etwa einer Licht- oder Wärmequelle folgen zu lassen. Das zeigt die hohen Anforderungen, die das Programm auf dem Computer erfüllen muss. Daher wird auf das im Laboralltag bekannte Software-Entwicklungswerkzeug LabVIEW der Firma National Instruments zurückgegriffen.

2.1 Die LabVIEW-Entwicklungsumgebung

LabVIEW ermöglicht es, über eine Vielzahl von Schnittstellen der Computerperipherie Daten zu erhalten und mit Hilfe graphisch aufbereiteter Werkzeuge zu bearbeiten. Auch das Darstellen von Daten anhand analoger, boolescher oder numerischer Anzeigen gelingt mit LabVIEW sehr unkompliziert und ohne Umwege über lange Codezeilen mancher nichtgraphischer Programmiersprachen [45].

Die Programmieroberfläche gliedert sich dabei in ein Blockdiagramm und ein Frontpanel, welches dem Benutzer später nur die für ihn wichtigen Informationen und Messinstrumente darstellt. Der eigentliche Programmablauf wird in dem Blockdiagramm programmiert. Dieses enthält alle nötigen Hintergrundinformationen, Konstanten und Funktionen, über welche die Elemente des Frontpanels und die Schnittstellen des Computers verknüpft sind.

Funktionen bestehen vorwiegend aus vorgefertigten Unterprogrammen, sogenannten SubVIs, aber auch aus eigenen Unterfunktionen, welche zu einem SubVI zusammengefasst werden können. Sie erleichtern die Programmierung erheblich, da eine oft verwendete Funktion so einmalig geschrieben werden, aber an vielen Bereichen des Programms teilhaben kann. Ebenso kann die Programmieroberfläche des Blockdiagramms durch SubVIs deutlich bereinigt werden, was der Lesbarkeit zugute kommt. SubVIs entsprechen den in 2.1 beschriebenen Bibliotheken.

Weitere wichtige Elemente des Blockdiagramms sind while-Schleifen, for-Schleifen, Sequenzen, Case-Strukturen und Ereignisstrukturen (siehe Abbildung 18). While-Schleifen laufen solange von Neuem ab, bis sie durch einen Stoppbefehl beendet werden. For-Schleifen funktionieren ähnlich wie while-Schleifen, allerdings nur für eine vordefinierte Anzahl von Wiederholungen. Sequenzen bestehen aus mehreren Rahmen, welche immer nacheinander in definierter Reihenfolge ablaufen. Eine Case-Struktur frägt den eingehenden Wert nach booleschen, numerischen oder Stringwerten ab. Eine Ereignisstruktur kann auf beliebige Ereignisse wie Tastatur- oder Mauseingaben reagieren.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 18 – Die fünf Hauptelemente eines Blockdiagramms; von links: while-Schleife; for-Schleife für 10 Wiederholungen; Sequenz mit drei Rahmen 0, 1 und 2; Case-Struktur, hier für boolesche Werte True (wahr) und False (falsch); Ereignisstruktur.

2.2 Grundaufbau des Programms

Das Programm gliedert sich in drei Abschnitte, wie in Abbildung 19 zu sehen ist. Zunächst wird eine Initialisierungsroutine aktiviert, welche im Wesentlichen verschiedene Parameter auf vordefinierte Werte setzt und die zweite Programmphase, also den Hauptteil, einleitet. Somit wird gewährleistet, dass alle Abschnitte des Hauptprogramms zeitgleich gestartet werden. Dieses besteht aus mehreren while-Schleifen, welche vom Rechner annähernd parallel ausgeführt werden können. Werden die while-Schleifen beendet, folgt eine Routine, welche alle Messinstrumente zurücksetzt, dem Roboter einen letzten Stopp-Befehl übermittelt und danach die Serielle Schnittstelle schließt.

Die einzelnen while-Schleifen werden im Folgenden näher erläutert.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 19 – Grundstruktur des LabVIEW-Programms; links ist die Initialisierungsphase erkennbar; rechts eine Routine zum Beenden aller Schleifen, zum Stoppen des Roboters und zum Zurücksetzen aller Anzeigen und der seriellen Schnittstelle; in der Mitte befinden sich die verschiedenen while-Schleifen des Hauptprogramms

2.3 Senden und Empfangen von Daten

Wie in 1.3.3 aufgezeigt, erwartet der RP6 Befehle in einer definierten Form und sendet seine Daten ebenfalls in einer festen Struktur.

Zunächst wird in der obersten while-Schleife die serielle Schnittstelle einmalig in einem SubVI „COM öffnen.vi“ initialisiert. Es folgt das Auslesen der empfangenen Daten und das Senden der Befehle in einem weiteren SubVI „Rx-Tx.vi“. Rx und Tx stehen dabei für die in der seriellen Datenkommunikation üblichen Begriffe receive data (Daten empfangen) und transmit data (Daten übermitteln).

Nur, wenn Daten Empfangen werden, also der Roboter bereit ist, wird der Mauszeiger aktiviert und zusätzlich signalisiert eine LED die Bereitschaft. Dies kann einfach durch die Länge des empfangenen Strings überprüft werden; hat sie eine von Null verschiedene, positive Länge, wird die Bereitschaft des Roboters angenommen (links in Abbildung 20).

Die empfangenen Daten müssen nun entschlüsselt und auf numerischen Instrumenten dargestellt oder weiterverarbeitet werden. Dabei wird jede Zeile auf einen Doppelpunkt „:“ durchsucht. Es folgt eine Case-Struktur, welche den Abschnitt zwischen einem Zeilenanfang und dem Doppelpunkt nach Schlüsselbegriffen abfragt und dementsprechend den Wert nach dem Doppelpunkt in ein Anzeigeinstrument schreibt (rechts unten in Abbildung 20).

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 20 – Senden und Empfangen von Daten; das SubVI „Rx-Tx.vi“ übernimmt das Senden und Empfangen von Daten; die Case-Struktur unten rechts stellt die Messwerte graphisch dar; die Struktur darüber setzt wenn nötig die Identifikationsnummer des Roboters und des Computers zurück; die Case-Struktur links übernimmt die Anzeige der Bereitschaft des Roboters

Ist ein Sensor deaktiviert, sollen die Anzeigeinstrumente nicht aktualisiert werden, da auch bei abgeschalteten Sensoren die analogen Messwerte durch magnetische oder elektrische Felder in der Umgebung schwanken können.

Alle Daten, welche der Computer erhält, werden zusätzlich zu einem Endlosstring zusammengefügt und im Frontpanel angezeigt.

Sollte die Befehlsidentifikationsnummer (vergleiche 1.3.3) des Computers nicht mehr mit der des Roboters übereinstimmen, wird eine Fehlermeldung an den Computer übermittelt. Es erfolgt ein Befehl an den Roboter, welcher ein Zurücksetzen der Identifikationsnummern im Mikrocontroller (rechts oben in Abbildung 20, Befehlsnummer 99) einleitet. Sie wird auch im Computer zurückgesetzt.

Die zu sendenden Daten werden in anderen while-Schleifen zusammengefügt und dann in eine lokale Variable „Tx Data“ geschrieben. Diese Variable übergibt den fertigen Befehl dann an das SubVI „Rx-Tx.vi“; zusätzlich werden alle gesendeten Befehle im Frontpanel dargestellt (Mitte unten in Abbildung 20).

2.4 Befehlsverwaltung

Ein Befehl, welcher an den Roboter gesendet wird, braucht eine vordefinierte Struktur (siehe 1.3.3). Zunächst werden alle für die Aktion nötigen Parameter zu einem String verknüpft und in die lokale Variable „Befehl“ geschrieben. Dies ist in Abbildung 21 gezeigt.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 21 – Zusammensetzung eines Befehls; dieser wird in die lokale Variable „Befehl“ geschrieben

In dieser Anwendung wird der Fahrtbefehl (1) mit der Geschwindigkeit (zweiter und vierter Parameter von oben) und dem Richtungsparameter (0, vorwärts) verknüpft. Die Parameter sind wieder durch einen Doppelpunkt getrennt. Die Geschwindigkeit wird in einem SubVI „Geschw_Einstellen.vi“ geregelt, welches den eingestellten Geschwindigkeitsparameter über die lokale Variable „Speed“ erhält. Hier soll eine linke Kurve gefahren werden, weswegen die rechte Kette mit der eingestellten Geschwindigkeit fahren soll, die linke jedoch nur mit der Halben.

Der so zusammengestellte Befehl wird an die zweite while-Schleife übergeben. Hier wird die Variable „Befehl“ um den fehlenden Identifikationsparameter sowie um die nötigen Strukturelemente (Raute und Stern) erweitert und an die lokale Variable „Tx Data“ abgegeben. Das Verknüpfen des Strings wird von einem weiteren SubVI „BefehlszahlenRechner.vi“ erledigt. Diese Situation ist in Abbildung 22 dargestellt.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 22 – Vervollständigen des Befehls in einem SubVI, welches die momentane Identifikationsnummer (Befehlszahl) und den verbleibenden Befehl erwartet; ausgegeben wird die neue Befehlszahl sowie der fertige Befehl

[...]

Details

Seiten
Erscheinungsform
Erstausgabe
Jahr
2012
ISBN (PDF)
9783863418069
ISBN (Paperback)
9783863413064
Dateigröße
7.3 MB
Sprache
Deutsch
Institution / Hochschule
Universität Regensburg
Erscheinungsdatum
2015 (Februar)
Note
1,3
Schlagworte
Robotik RP6 Fernsteuerung Nanoscience Molekül Robotersystem

Autor

Fabian Queck, B.Sc., wurde 1986 in Regensburg geboren. Sein Studium der Physik und der Nanoscience an der Universität Regensburg schloss er im Jahr 2012 mit dem akademischen Grad des Bachelor of Science erfolgreich ab. Bereits während des Studiums konnte er in vielen Kursen umfangreiches praktisches Wissen rund um die Robotik, die Mikrocontrollertechnik und die Programmierung sammeln. Dabei festigte sich sein Vorhaben, in diesem angewandten Zweig der Physik eine Abschlussarbeit über die Robotik zu schreiben. Fabian Queck wird 2012 sein Masterstudium in Physik in Regensburg fortsetzen.
Zurück

Titel: Entwicklung und Programmierung einer Robot Remote Control in LabVIEW: Anwendungen in der Nanostrukturierung
book preview page numper 1
book preview page numper 2
book preview page numper 3
book preview page numper 4
book preview page numper 5
book preview page numper 6
book preview page numper 7
book preview page numper 8
book preview page numper 9
book preview page numper 10
book preview page numper 11
book preview page numper 12
book preview page numper 13
book preview page numper 14
book preview page numper 15
74 Seiten
Cookie-Einstellungen