Re-Engineering eines LEGO Hochregallagers und Konzeption der Steuerung mit Hilfe von Mindstorms NXT-Modulen
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik Bachelorarbeit Re-Engineering eines LEGO Hochregallagers und Konzeption der Steuerung mit Hilfe von Mindstorms NXT-Modulen Jendrik Bertram 13. Dezember 2007 betreut von Michael Dohmen vorgelegt bei Prof. Dr. Johannes Magenheim Prof. Dr. Stefan Böttcher
Erklärung Ich versichere, dass ich die vorliegende Arbeit selbstständig und ohne unerlaubte Hilfe Dritter angefertigt habe. Alle Stellen, die inhaltlich oder wörtlich aus anderen Veröffentlichungen stammen, sind kenntlich gemacht. Diese Arbeit lag in gleicher oder ähnlicher Weise noch keiner Prüfungsbehörde vor und wurde bisher noch nicht veröffentlicht. Jendrik Bertram Paderborn, 13. Dezember 2007 i
Zusammenfassung In Hochregallagern sind oft viele tausende Palettenstellplätze vorhanden, welche durch schienengeführte Regalbediengeräte beladen werden. Diese Regalbediengeräte werden über Förderbandsysteme oder autonome Transportfahrzeuge mit den Paletten beliefert. Im Rahmen des MuSoft Projekts ist ein Model solch eines Hochregallagers mit Hilfe der LEGO Mindstorms entstanden, dessen Steuerung durch das Robotics Invention System (RIS) umgesetzt wurde. Hierbei wurde nicht auf die von LEGO entwickelte Mindstorms Programmierumgebung zurückgegriffen, sondern auf das OpenSource Projekt leJOS. Mit leJOS ist es möglich die programmierbaren Bausteine mit Hilfe von Java zu pro- grammieren. Dafür wurde eine Java Virtual Machine entwickelt, die auf diesen Bau- steinen funktioniert. Außerdem wurde eine Bibliothek zur Verfügung gestellt, die es ermöglicht, die Aktoren und Sensoren anzusprechen. Zusätzlich stellt leJOS Funktionen bereit, die es vereinfacht, oft benutzte Konzepte der Robotik umzusetzen. Die LEGO Mindstorms RCX Serie wurde mittlerweile von der LEGO Mindstorms NXT Serie abgelöst. Das leJOS Projekt hat mit der Arbeit begonnen, die Virtual Machi- ne und die Bibliothek zu portieren und zu erweitern, um von den neu hinzu gekommenen Funktionalitäten Gebrauch machen zu können. Diese Bachelorarbeit stellt die Neuerungen der Mindstorms NXT vor und zieht einen Vergleich zu den Mindstorms RCX. Dabei wird neben der grundsätzlich unterschiedli- chen Konstruktion, auf die neuen Sensoren und Aktoren, aber auch die Änderungen in der Programmierung eingegangen. Alle Elemente des bestehenden Hochregallagers werden mit den neuen NXT Bausteinen in der stud-less Bauweise neu aufgebaut, wobei versucht wird von den Neuerungen so weit wie möglich Gebrauch zu machen und Schwachstellen des alten Systems so weit wie möglich zu umgehen. Der Schwerpunkt liegt darin die störanfällige und langsame Infrarot-Kommunikation gegen eine Bluetooth-Kommunikation einzutauschen und die Steuerung mit Hilfe eines einfachen Menüsystems auf einem der programmierbaren NXT Bausteine umzusetzen. Zusätzlich werden Ansätze dargestellt, wie sich das System mit weiterer Funktionalität ausbauen lässt. Diese sind hauptsächlich darauf angesetzt, zu versuchen das Model einem wirklichen Hochregallager von der Funktionalität her ähnlicher zu machen. ii
Inhaltsverzeichnis 1 Einleitung 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Ziele der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Definitionen 4 3 RCX und NXT 7 3.1 Die programmierbaren Bausteine . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Die Aktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.1 Der RCX Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.2 Der NXT Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Die Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.1 Der Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.2 Der Licht Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.3 Der Sound Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.4 Der Ultrasonic Sensor . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.5 Der Rotations Sensor . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.6 Produkte anderer Hersteller . . . . . . . . . . . . . . . . . . . . . . 17 3.4 Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.1 NXT-G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.2 leJOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4 Konstruktion 24 4.1 Das Hochregal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.2 Das Regalbediengerät . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2.1 Die Fahreinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2.2 Die Hubeinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.3 Die Lastaufnahmeeinheit . . . . . . . . . . . . . . . . . . . . . . . 29 4.3 Die Übergabestation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.4 Das Autonome Transportfahrzeug . . . . . . . . . . . . . . . . . . . . . . 31 4.5 Die Fahrbahn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5 Implementierung 35 5.1 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.1.1 Die Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.2 Der Master Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 iii
Inhaltsverzeichnis Inhaltsverzeichnis 5.2.1 Das Menüsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2.2 Das Lagerverwaltungssystem . . . . . . . . . . . . . . . . . . . . . 42 5.3 Das Regalbediengerät . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.4 Die Übergabestation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.5 Das Transportfahrzeug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.5.1 Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.5.2 Linienverfolgung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.5.3 Positionsbestimmung . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.5.4 Anfahrt der Zielpositionen . . . . . . . . . . . . . . . . . . . . . . . 51 6 Erweiterungsmölichkeiten 53 6.1 ATF Erweiterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.2 UEG Erweiterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.3 Lagerverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7 Fazit und Ausblick 57 A UML Diagramme 58 A.1 Klassendiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 A.2 Sequenzdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 B Konstruktionsabbildungen 61 B.1 Anschlussbelegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 C Inhalt der beiliegenden CD 65 D Inbetriebnahme 66 Literaturverzeichnis 67 iv
Abbildungsverzeichnis 2.1 Ein Hochregallager mit Regalbediengerät . . . . . . . . . . . . . . . . . . 4 3.1 Der RCX Baustein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Der NXT Intelligent Brick . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 Der RCX Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Der NXT Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Der RCX Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.6 Der NXT Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.7 Der RCX Licht Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.8 Der NXT Licht Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.9 Der NXT Sound Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.10 Der NXT Abstands Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.11 Der RCX Rotations Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.12 Der HiTechnic Kompass Sensor . . . . . . . . . . . . . . . . . . . . . . . . 17 3.13 Die NXT-G Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . 19 4.1 Das RCX Hochregallager . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Das Hochregal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3 Die Fahreinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4 Die Hubeinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5 Die Übergabestation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.6 Das Autonome Transportfahrzeug . . . . . . . . . . . . . . . . . . . . . . 31 4.7 Der Initialisierungsbereich für das ATF . . . . . . . . . . . . . . . . . . . 33 4.8 Die Fahrbahn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.1 Sequenzdiagramm Einlagern . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2 Die Command Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.3 Klassendiagramm des Master Controllers . . . . . . . . . . . . . . . . . . 42 5.4 Klassendiagramm des Regalbediengerätes . . . . . . . . . . . . . . . . . . 44 5.5 Klassendiagramm der Übergabestation . . . . . . . . . . . . . . . . . . . . 45 5.6 Schema einer Positionsveränderung . . . . . . . . . . . . . . . . . . . . . . 49 5.7 Anfahrt der Zielposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 A.1 Klassendiagramm upb.hrl.comm . . . . . . . . . . . . . . . . . . . . . . . 58 A.2 Klassendiagramm des Autonomen Transportfahrzeuges . . . . . . . . . . . 59 A.3 Sequenzdiagramm Auslagern . . . . . . . . . . . . . . . . . . . . . . . . . 60 v
Abbildungsverzeichnis Abbildungsverzeichnis B.1 Das Regalbediengerät mit Hochregal . . . . . . . . . . . . . . . . . . . . . 61 B.2 Das Regalbediengerät . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 B.3 Die Lastaufnahmeeinheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 vi
1 Einleitung 1.1 Motivation Im Rahmen des MuSoft Projekts1 ist ein Hochregallager auf Basis des LEGO2 Mind- storms3 Robotics Invention System (RIS) entstanden, welches ein Modell des Avarto4 Hochregallagers von Bertelsmann in Bielefeld darstellt. Das System wird von insgesamt 10 RCX Bausteinen gesteuert, die auf autonome Trans- portfahrzeuge, Übergabestationen und Regalbediensysteme verteilt sind. Die RCX Mo- dule kommunizieren dabei über die eingebaute Infrarotschnittstelle mit einem speziell entwickelten Protokoll, welches einen Tokenmanager einsetzt. Obwohl LEGO eine grafische Programmierumgebung zur Erstellung von Programmen mitliefert, wurde sich dafür entschieden die Programmierung mit Hilfe der frei verfügbaren, auf Java basierenden, leJOS5 Bibliothek durchzuführen. Dadurch konnten einige elemen- tare Einschränkungen umgangen werden. Im Jahr 2006 wurde von LEGO eine neue Generation der programmierbaren Baustei- ne, welche das Robotics Invention System ablösen, in das Sortiment aufgenommen. Die neuen Mindstorms NXT Module sind deutlich leistungsfähiger als die alten RCX Mo- dule, aber leider nicht kompatibel. Die Programmierbausteine, sowie die Motoren und Sensoren, haben andere Dimensionen und werden mit Hilfe der neuen studd-less Technik zusammen gebaut. Außerdem unterscheiden sich die Komponenten teilweise deutlich in ihrer Funktionalität. Auch die alten leJOS Bibliotheken sind in der Form nicht weiter benutzbar. Das Open- Source Projekt arbeitet jedoch daran die Java Virtual Machine auf die neuen Bau- steine zu portieren und die dazugehörige Bibliothek anzupassen, um von den neuen Möglichkeiten, wie Bluetooth und neuartigen Sensoren, Gebrauch machen zu können. Zum aktuellen Zeitpunkt steht leJOS NXJ in der frühen beta Version 0.4 zur Verfügung. Somit bietet sich LEGO Mindstorms NXT, in Verbindung mit leJOS NXJ, dazu an, das Model des Hochregallagers umzurüsten und dessen Funktionalität zu erweitern. 1 http://www.musoft.org 2 http://www.lego.de 3 http://www.legomindstorms.com 4 http://www.arvato-systems.de 5 http://www.lejos.org 1
1.2. ZIELE DER ARBEIT KAPITEL 1. EINLEITUNG 1.2 Ziele der Arbeit In dieser Bachelorarbeit wird das bestehende LEGO Mindstorms RIS Hochregallager der FG Didaktik6 mit Hilfe der LEGO Mindstorms NXT neu aufgebaut. Die Steuerung soll von leJOS RCX nach leJOS NXJ portiert und alle Elemente mit Hilfe der stud-less Technik neu konstruiert werden. Dieses ist nötig, da weder die leJOS Bibliotheken, noch die Konstruktion der beiden Systeme miteinander kompatibel ist. Für die Konstruktion der überarbeiteten Elemente ist es notwendig die Möglichkeiten der mitgelieferten, aber auch anderweitig erhältlichen, Aktoren und Sensoren genauer zu betrachten, um diese bestmöglich einsetzen zu können. Es muss ein Regalbedien- gerät, eine Übergabestation und ein autonomes Transportfahrzeug konstruiert werden. Zusätzlich muss die vorhandene Fahrbahn angepasst werden. Die in Java implementierte Steuerung muss komplett überarbeitet werden, um von den neuen Möglichkeiten, vor allem der Motoren, Gebrauch machen zu können. Zusätzlich kann auf neue Funktionen der leJOS NXJ Bibliothek zurückgegriffen werden. Ein besonderes Augenmerk wird auf die neuen Möglichkeiten der Kommunikation zwi- schen den NXT Programmierbausteinen gelegt. Diese verfügen nicht mehr über die bis- her eingesetzte Infrarot Schnittstelle. Dafür steht aber Bluetooth Unterstützung zur Verfügung. Dementsprechend muss die Kommunikation mit dessen Hilfe, so weit es der aktuelle Entwicklungsstand von leJOS zulässt, neu implementiert werden. Die Steuerung des Gesamtsystems soll über ein dediziertes NXT Modul realisiert wer- den. Dieses soll die Möglichkeit bieten, grundlegende Tests des Systems durchzuführen und neue Aufträge zum Ein- und Auslagern von Paletten auszuführen. Dieses Modul soll auch die grundlegenden Aufgaben eines Lagerverwaltungssystems übernehmen. Ein zusätzliches Ziel der Arbeit ist es, mögliche Erweiterungen für das System her- auszuarbeiten und zu erläutern. Die Erweiterungen sollen darstellen, wie einzelne Kom- ponenten des Hochregallagers verbessert werden können, aber auch wie das gesamte System einem reellem Hochregallager, von dem Aufbau und der Funktion her, ähnlicher umgesetzt werden kann. Die Programmierung wird in Java 1.57 von Sun durchgeführt. Des weiteren soll die leJOS NXJ Bibliothek genutzt werden. Diese steht zum aktuellen Zeitpunkt in der Ver- sion 0.4 zur Verfügung, welche jedoch nicht alle benötigten Features, besonders die für die Bluetooth Kommunikation, unterstützt. Daher muss auf eine aktuellere Version aus dem Subversion8 Repository des Projektes zurückgegriffen werden. 6 http://ddi.uni-paderborn.de 7 http://java.sun.com 8 http://subversion.tigris.org 2
1.3. AUFBAU DER ARBEIT KAPITEL 1. EINLEITUNG 1.3 Aufbau der Arbeit Diese Bachelorarbeit versucht den Aufbau des Hochregallagers von Grund auf darzustel- len. Dazu wird in Kapitel 2 ein Überblick über den Aufbau eines Hochregallagers ge- schaffen und Definitionen der grundlegenden Begriffe, die im Verlauf der Arbeit häufig verwendet werden, gegeben. Dabei werden insbesondere die Funktionen der einzelnen Komponenten eines Hochregallagers veranschaulicht. Das darauf folgende Kapitel 3 beschreibt, welche Änderungen sich durch die Umstel- lung von RCX auf NXT Bausteine ergeben und wie diese sich auf den Aufbau und die Programmierung des Hochregallagers auswirken. Dabei wird sowohl auf die Programmierung als auch die mechanische Konstruktion ei- gegangen. Ein besonderes Augenmerk wird auf die von LEGO, und anderen Herstellern, verfügbaren Sensoren und deren Anwendungsmöglichkeiten gelegt. Es wird dabei be- sonders versucht Bezug darauf zu nehmen, wie die Sensoren in den Komponenten des Hochregallagers zum Tragen kommen. In Kapitel 4 wird für die einzelnen Elemente des Hochregallagers die neue Konstruk- tion beschrieben. Dazu wird der Aufbau der Komponenten beschrieben und darauf eingegangen, welche Techniken und welche der, im vorherigen Kapitel beschriebenen, Sensoren zum Einsatz kommen. Die detaillierten Aufbauanleitungen sind mit Hilfe entsprechender CAD Pro- gramme umgesetzt und auf der beiliegenden CD gesammelt. Das anschließende Kapitel 5 beschreibt die neu entstandene Implementierung der Steuerung. Es wird damit begonnen den Aufbau der neu entstandenen Kommunikation darzustellen, da diese von allen Elementen gemeinsam benutzt wird. Daraufhin wird die Implemen- tierung des zur Steuerung und als Lagerverwaltungssystem benutzen NXT Bausteins vorgestellt. Im Weiteren wird auf die Umsetzung der Steuerung der restlichen Komponenten des Hochregallagers eingegangen. In Kapitel 6 werden mögliche Erweiterungen des Hochregallagers und deren Nutzen vorgestellt. Es wird darauf eingegangen wie zusätzliche, von dritten Herstellern vertriebenen, Sen- soren dazu beitragen können, einzelne Komponenten des Hochregallagers weiter aus- zubauen. Desweiteren wird dargestellt, wie das Hochregallager mit einem komplexeren Lagerverwaltungssystem kombiniert werden kann, um so realistischer zu arbeiten. Das abschließende Kapitel 7 fasst die Ergebnisse der Arbeit und den erreichten Ent- wicklungsstand des Hochregallagers zusammen. 3
2 Definitionen Dieses Kapitel gibt einen Überblick über die grundlegenden Begriffe, die im Verlauf der Arbeit häufig verwendet werden. In Abbildung 2.1 ist der Aufbau eines Hochregallagers schematisch gezeigt. Es ist ein Regalbediengerät dargestellt, welches sich in einer Gasse zwischen zwei Regalen bewegt und gerade dabei ist eine Lagereinheit mit einer beladenen Palette zu bestücken. Abbildung 2.1: Ein Hochregallager mit Regalbediengerät Lagersysteme können anhand verschiedener Kriterien aufgeteilt werden. Darunter fal- len: • Art der Ladeeinheiten (Paletten, Gitterboxen, etc.). • Zum Einsatz kommende Regalkonstruktion. 4
KAPITEL 2. DEFINITIONEN • Zur Lagerbedienung verwendete Hilfsmittel. Das Hochregallager ist ein automatisiertes Palettenlager mit wahlfreiem Zugriff auf das Lagergut. In einem solchen Zeilenlager wird die Bedienung durch Regalförderzeuge (auch Regalbediengerät genannt) oder automatische Regalstapler durchgeführt. Da- durch, dass ein Hochregallager wahlfreien Zugriff auf das Lagergut gestattet, wird dieses hauptsächlich zur Lagerung von großen Artikelzahlen mit geringem bis mittleren Be- stand pro Artikel eingesetzt [lag83, SJ91]. Das in dieser Arbeit umgesetzte Lager entspricht einem Hochregallager mit Bedienung durch automatische Regalbediengeräte. Solche Lager werden seit den sechziger Jahren gebaut und haben die folgenden charak- teristischen Merkmale: • Die Ladeeinheiten (meist Paletten oder Gitterboxen) sind für die Aufbewahrungs- dauer ortsfest, da Hochregallager zu den statischen Lagersystemen zählen. • Die Regale sind meist zeilenförmig angeordnet und haben eine Höhe von mindes- tens 8m. • Auf die Lagereinheiten kann wahlfrei zugegriffen werden. • Die Lagerbedienung erfolgt mit Hilfe der automatischen Regalbediengeräte, welche sich in der Regel in den Gassen zwischen den Regalzeilen bewegen. Die für die Bestückung des Lagers zuständigen Regalbediengeräte können sich entlang drei Achsen bewegen: • x-Achse: Ganglängsrichtung (Fahreinheit) • y-Achse: vertikale Richtung (Hubeinheit) • z-Achse: Gangquerrichung (Lastaufnahmeeinheit) Die Bestückung der Lagereinheiten kann durch unterschiedliche Konstruktionen ge- schehen, meist wird jedoch auf eine Gabel, ähnlich der eines Gabelstaplers zurückgegriffen. Die Regalbediengeräte sind mit ausschlaggebend für die Umschlagleistung eines Hoch- regallagers. Von Wichtigkeit ist dabei deren mittlere Spielzeit für Einzel- und Doppel- spiel. Das Einzelspiel beschreibt die Summe aller Zeiten für eine Ein- oder Auslagerung. Das Doppelspiel beschreibt eine kombinierte Ein- und Auslagerung. Bevor die Paletten von dem Regalbediengerät eingelagert werden können, müssen sich diese in einer Position befinden, auf die das Regalbediengerät zugreifen kann. Dieser Bereich wird im Allgemeinen Ein- und Auslagerungsbereich genannt, wobei die beiden Bereiche nicht zwangsläufig miteinander übereinstimmen müssen. 5
KAPITEL 2. DEFINITIONEN Die Anlieferung zu diesem Bereich kann je nach externen Gegebenheiten unterschiedlich geschehen. Dieses kann z.B. von Kettenförderern, Rollenbahnen, Hub- und Drehtischen, Vertikalförderern oder fahrerlosen Transportfahrzeugen übernommen werden. In dem vorhandenen System wird dieses mit der Hilfe von autonomen Transportfahrzeu- gen (ATF) bewerkstelligt. Diese sind dafür zuständig die Ladeeinheiten in eine für die Regalbediengeräte erreichbare Position zu befördern. Ein ATF ist ein Fahrzeug mit Ladefläche für ein oder mehrere Ladeeinheiten, welches auf Befehle des Lagerverwaltungssystems reagiert und selbstständig vorgegebene Positio- nen anfahren kann. Die Wegfindung wird dabei von dem ATF selbst vorgenommen und kann mit Hilfe unterschiedlicher Systeme umgesetzt werden. Dieses kann zum Beispiel mit Hilfe einfacher Schienenführungen oder Induktionsführungen geschehen, bei welchen ein Leitdraht im Fußboden verbaut ist [hrl01]. Das ATF selbst bekommt die Ladeeinheiten von einer Übergabestation (UEG) auf- geladen. Der Aufbau einer solchen Übergabestation kann, entsprechend der benötigten Funktionen, unterschiedlich ausfallen. Die Hauptaufgabe liegt darin das ATF zu be- und entladen und die Ladeeinheiten, im Normalfall, auf einem anderen Transportmedium abzusetzen. Gesteuert wird ein solches Hochregallagersystem durch ein Lagerverwaltungssystem (LVS), und bei komplexeren Systemen zusätzlich einem Materialflussrechner (MFR), wobei diese Aufgabe auch von dem LVS übernommen werden kann. Die Lagerung erfolgt normalerweise nach dem Prinzip der Chaotischen Lagerhaltung. Dieses bedeutet, dass sich das System selbstständig einen freien Lagerplatz sucht, an wel- chem die Ladeeinheit eingelagert wird. Das Lagerverwaltungssystem ist dafür zuständig diese Positionen zu speichern [lvs07]. 6
3 RCX und NXT Die Portierung des Hochregallagers von RCX zu NXT Bausteinen bringt eine Reihe von neuen Möglichkeiten mit sich, birgt aber auch eine Menge Probleme. In diesem Kapitel wird einen Vergleich der beiden Mindstorms Serien angestellt und darauf eingegangen, wie die, für die Automatisierung notwendigen, Sensoren und Aktoren benutzt werden. Im Jahr 1987 begann am MIT Media Laboratory1 die von LEGO gesponsorte Entwick- lung eines programmierbaren Bausteines. Als Hauptentwickler entwarf Fred G. Martin2 zwischen 1987 und 1998 mehrere Versionen des programmierbaren Bausteines. Aus der endgültigen Version, einem roten Baustein mit 4 Eingängen und 6 Ausgängen, wurde das Robotics Invention System (RIS) entwickelt. Das Herz davon bildet der in Abbil- dung 3.1 dargestellte gelbe RCX Baustein, welcher allerdings nur 3 Eingänge (1-3) und 3 Ausgänge (A-C) besitzt. Abbildung 3.1: Der RCX Baustein 2004 begann LEGO, unter der Leitung von Søren Lund, mit der Entwicklung des Mindstorms NXT Kit. Dabei wurde darauf geachtet, möglichst geläufige Standards zu 1 http://www.media.mit.edu 2 http://www.cs.uml.edu/∼fredm/ 7
KAPITEL 3. RCX UND NXT verwenden. So kam es, dass der NXT Intelligent Brick über Bluetooth3 kommunizie- ren kann und die Sensoranschlüsse den Inter-Integrated Circuit4 Bus benutzen. Als die Entwicklung begann hing Lund ein Schild, mit dem Satz We will do for robotics what iPod did for music.“ ” in dem Entwicklungslabor auf. Der entstandene NXT Intelligent Brick (siehe Abbil- dung 3.2) hat tatsächlich von der Farbe und Menüführung Ähnlichkeiten mit dem iPod [Bag07]. Abbildung 3.2: Der NXT Intelligent Brick Die Mindstorms Komponenten werden, dank ihrer Einfachheit, Robustheit und Fle- xibilität, in vielen Schulen eingesetzt, um den Schülern Technologie näher zu bringen. Die Produkte werden aber auch, wie bei diesem Hochregallager, von vielen Universitäten genutzt, um komplexere Projekte umzusetzen. 3 http://www.bluetooth.com 4 http://www.i2c-bus.org 8
3.1. DIE PROGRAMMIERBAREN BAUSTEINE KAPITEL 3. RCX UND NXT 3.1 Die programmierbaren Bausteine Während die technische Ausstattung der programmierbaren RCX Bausteine noch relativ spartanisch war, hat sich dieses bei denen der NXT Generation deutlich geändert. Um die Leistungsmerkmale in Perspektive zu rücken, kann gesagt werden, dass die NXT Bau- steine mehr als zehn mal so viel Speicher haben und dank der Co-Prozessoren ungefähr sechs mal so schnell sind wie die RCX Bausteine. Ein genauer Vergleich der technischen Daten ist in Tabelle 3.1 aufgeführt [Bag02, Bag07, rcx07]. NXT RCX Prozessor 32-bit ARM7 48 MHz 8-bit 16 MHz Flash Memory 256 KB 16 KB RAM 64 KB 32 KB Co-Prozessor 8-bit AVR - Display 100 x 64 Pixel LCD Matrix 1-zeiliges Text Display USB 12 MBit/s - Infrarot mit optionalem Zubehör ja Bluetooth Bluetooth Class II V2.0 compliant - Sensoren 4 3 Aktoren 3 3 Tabelle 3.1: Leistungsmerkmale der programmierbaren Bausteine. Der NXT benutzt für die vier Eingänge das standarisierte, von Philips entwickelte Inter-Integrated Circuit (I2 C) Protokoll. Dieses ermöglicht es, dass, mit Hilfe eines Ex- panders, mehr als nur vier Sensoren benutzt werden können. Diese müssen dafür lediglich die Autodetecting Parallel Architecture (ADPA) benutzen. Besonders hervorzuheben ist der Klasse 2 Bluetooth Chip (IEEE 802.15.1) der NXT Bausteine. Dieser hat eine Reichweite von ungefähr 10m und ermöglicht es, dass zwei oder mehr Geräte mit Bluetooth Unterstützung auch ohne direkten Sichtkontakt, miteinander kommunizieren können. Dieses ist ein großer Vorteil gegenüber der Infrarotschnittstelle der RCX Bausteine. Trotzt einer, im Gegensatz zu USB und WiFi, relativ langsamen Geschwindigkeit ist Bluetooth für die meisten Anwendungsgebiete völlig ausreichend. Ein weiteres Highlight ist das, mit 26,0mm ∗ 40,6mm, deutlich größere LCD Display. Dieses ermöglicht es jetzt auch Menüs und sogar Icons darzustellen, während man vorher nur an die Darstellung von wenigen Zeichen gebunden war. Dieses hat es ermöglicht ein intuitives und einfach zu bedienendes Menüsystem für die Steuerung des Systems zu implementieren (siehe Kapitel 5.2). Da das Display eine Refresh Rate von fast 60 Hz hat, geht es so weit, dass sogar schon Spiele wie Tetris und Centipede auf den NXT Baustein portiert wurden [BDD+ 07]. 9
3.2. DIE AKTOREN KAPITEL 3. RCX UND NXT 3.2 Die Aktoren Die Motoren sind die einzigen in den Baukästen enthaltenen Aktoren. Für die neueren NXT Baukästen wird es jedoch in Zukunft noch andere Motoren geben, welche zur Zeit allerdings noch nicht verfügbar sind. Da es zwischen den beiden Generationen einige signifikante Unterschiede gibt, werden diese hier darstellt. 3.2.1 Der RCX Motor Der RCX Motor (siehe Abbildung 3.3) ist ein einfacher Motor, ohne besondere zusätzliche Funktionen. Zur Steuerung des Motors kann nur die Drehrichtung angegeben werden. Die Geschwindigkeit muss über eine entsprechende Umsetzung mit Hilfe von Zahnrädern geregelt werden. Die wirkliche Drehgeschwindigkeit hängt jedoch sehr stark von Typ und Ladezustand der benutzten Stromversorgung ab. Abbildung 3.3: Der RCX Motor Um genauere Informationen darüber zu erlangen, wie viele Umdrehungen der Motor durchgeführt hat, muss der, wie in Kapitel 3.3.5 beschriebene, Rotations Sensor zur Hil- fe genommen werden. Der große Nachteil dabei ist jedoch, dass bei der Benutzung von drei Motoren, in vielen Fällen, auch drei Rotations Sensoren verwendet werden müssen. Dadurch werden somit auch gleich alle Sensoreingänge verwendet und es bleibt keine Möglichkeit noch weitere Sensoren an den selben RCX Baustein anzuschließen, wodurch die Funktionalität der entstandenen Modelle oft deutlich eingeschränkt wird. 10
3.2. DIE AKTOREN KAPITEL 3. RCX UND NXT 3.2.2 Der NXT Motor Der neue NXT Motor (siehe Abbildung 3.4) hebt sich durch seine neuen Funktionen deutlich von der alten Version ab. Die neue Form mag zwar etwas ungewöhnlich ausse- hen, aber der Motor bringt, trotz einer deutlichen Vergrößerung, einige entscheidende Vorteile mit sich. Abbildung 3.4: Der NXT Motor Der Motor hat einen Tachometer, welcher mit Hilfe eines optischen Encoders umge- setzt wurde, und ein Getriebe für mehrere Geschwindigkeiten direkt eingebaut. Dieses ermöglicht es zum Einen, den Motor viele Umdrehungen in unterschiedliche Rich- tungen durchführen zu lassen, und trotzdem zu der exakten Ausgangsposition zurückzukehren. Die jeweils gewünschte Position kann auf das Grad genau angesteuert werden. Zum Anderen ist es möglich eine bestimmte Drehgeschwindigkeit in Grad pro Sekunde vorzugeben, wodurch oft auf komplizierte Kostruktionen mit vielen Zahnrädern ver- zichtet werden kann. Wird beispielsweise eine Geschwindigkeit von 720 festgelegt, so entspricht dieses 2 Umdrehungen pro Sekunde. Die maximale Geschwindigkeit liegt bei ungefähr 900 (2, 5 Umdrehungen pro Sekunde), ist aber stark abhängig von dem Lade- zustand der benutzten Batterien [Bag07]. Auf Basis der neuen Funktionen des Motors lassen sich beispielsweise Fahrzeuge mit Odometrie zur Positionsbestimmung umsetzten. Das autonome Transportfahrzeug macht von diesem Verfahren intensiven Gebrauch. In Kapitel 5.5.3 ist dieses Verfahren erläutert. Dadurch, dass es mit Hilfe der neuen Features möglich ist die wirkliche Drehgeschwindig- keit des Motors zu ermitteln, kann dieses in vielen Fällen als zusätzlicher Sensor benutzt werden. Weicht die wirkliche Drehgeschwindigkeit von der Gewünschten nach unten hin ab, kann davon ausgegangen werden, dass der Roboter gegen ein Hindernis gefahren ist. 11
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT 3.3 Die Sensoren Die Sensoren dienen dazu Informationen aus der Umwelt für die Roboter erfassbar zu machen. Die Sensoren haben innerhalb der Baureihen alle die selben Ausmaße, lediglich der Ul- trasonic Senor (siehe Abschnitt 3.3.4) weicht davon ab. Dadurch, dass auch die Befesti- gungsmöglichkeiten aller Sensoren übereinstimmen, lassen sich die Sensoren in den Mo- dellen auch leicht gegeneinander austauschen. So ist es z.B. manchmal hilfreich den Licht Sensor (siehe Abschnitt 3.3.2) gegen einen Farb Sensor von HiTechnic (siehe Abschnitt 3.3.6) auszutauschen, um Erweiterungen wie in Kapitel 6.3 beschrieben, zu ermöglichen. 3.3.1 Der Drucktaster Die Drucktaster (oder Touch Sensoren) sind in den Abbildungen 3.5 (RCX Drucktaster) und 3.6 (NXT Drucktaster) dargestellt. Sie sind die einfachsten, der in den Baukästen enthaltenen, Sensoren. Sie bieten lediglich eine Abfragemöglichkeit, ob der Taster akti- viert ist, oder nicht. Abbildung 3.5: Der RCX Drucktaster Außer einer Anpassung der Bauform auf das neue Format und der damit verbundenen Zunahme der Größe, sind diese beiden Sensoren weitgehend identisch. Der NXT Sensor bietet nur die zusätzliche Möglichkeit an dem orangenen Taster eine Achse zu befestigen, um andere Bauteile direkt mit dem Taster des Sensors zu verbinden. Die Drucktaster sind eine einfache Möglichkeit um zu erkennen, wann eine bestimmte Position eines beweglichen Bauteils erreicht wurde. Dieses wurde in dem Aufbau des neuen Hochregallagers zum Beispiel dazu benutzt, mit dem Regalbediengerät und der Übergabestation sicher eine Ausgangsposition für alle Achsen anfahren zu können. 12
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT Abbildung 3.6: Der NXT Drucktaster 3.3.2 Der Licht Sensor Die Licht Sensoren (siehe Abbildungen 3.7 und 3.8) messen die Intensität des Lichts, wel- ches durch eine kleine Öffnung an der Vorderseite eintritt. Die Sensoren sind zusätzlich mit einer roten LED ausgestattet, welche dazu benutzt werden kann, den Bereich vor dem Sensor auszuleuchten. Es ist mit den Sensoren auch möglich Licht, in für Menschen unsichtbaren Bereichen, wie zum Beispiel Infrarot, wahrzunehmen. Auch diese Sensoren wurden, außer der Anpassung der Bauform, keinen weiteren funk- tionalen Änderungen unterzogen. Abbildung 3.7: Der RCX Licht Sensor Die Sensoren können für viele verschiedene Bereiche eingesetzt werden. Besonders geläufig sind dabei die Folgenden: • Wenn man den Sensor auf den Untergrund richtet, kann er dazu benutzt werden dunklen Linien zu folgen. Dieses wurde bei dem Aufbau des ATF (siehe Kapitel 4.4) umgesetzt. • Der Sensor kann dazu benutzt werden Abgründe zu erkennen. Lässt man einen Roboter auf einer Tischplatte umherfahren, kann ein auf den Boden gerichteter 13
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT Licht Sensor diesen vor dem Abstürzen bewahren. Wenn der Roboter dem Rand des Tisches zu nahe kommt und der Licht Sensor schon über die Kante schaut, so ändert sich die, von dem Sensor wahrgenommene Helligkeit merklich. • Hellen Lichtquellen, wie etwa der Bewegung einer Taschenlampe, kann gefolgt wer- den. • Es kann die hellste bzw. dunkelste Stelle im Raum gefunden werden. Hierdurch lassen sich einfache Verhaltensweisen von Insekten nachbilden. • Unterschiedliche Objekte können anhand ihrer Farbintensität (nicht Farbe) erkannt werden. Dieses ist möglich, da dunkle Objekte weniger Licht reflektieren als hellere. Abbildung 3.8: Der NXT Licht Sensor Je nach Anwendungsbereich kann der Licht Sensor in zwei verschiedenen Modi betrie- ben werden: • Aktiver Modus - Die LED ist eingeschaltet. Dieser Modus wird benutzt, um Linien zu folgen und Objekte zu unterscheiden. • Passiver Modus - Die LED ist ausgeschaltet. Dieser Modus kann benutzt werden, um Umgebungslicht zu erkennen, aber auch wenn eine externe Lichtquelle zum Einsatz kommt. Die Licht Sensoren können einen Wert zwischen 0 und 1023 zurückgeben, die Werte schwanken aber normalerweise zwischen 145 (Dunkelheit) und 890 (Sonnenlicht). Zum einfacheren Umgang gibt es noch eine Methode, die Werte in einem normalisierten Bereich von 0 bis 100 zurückliefert. Dafür ist es jedoch sinnvoll, den Sensor zuerst für den aktuellen Einsatz und die Umgebungsverhältnisse zu kalibrieren. Dieses geschieht durch einfache Aufrufe je einer Methode für den minimalen und maximalen Wert. Diese Technik wurde bei dem autonomen Transportfahrzeug umgesetzt, so dass dieses, unabhängig vom Umgebungslicht, sicher den Führungslinien folgen kann. 14
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT 3.3.3 Der Sound Sensor Der Sound Sensor (siehe Abbildung 3.9) ist einer der neuen Sensoren in den NXT Mind- storms Baukästen. Obwohl dieser Sensor aussieht wie ein Mikrofon, wird nur die Lautstärke in Dezibel (dB) gemessen, deshalb ist es nicht möglich damit Tonaufnahmen zu machen. Der Sensor kann in zwei verschiedenen Modi betrieben werden. Im Standardmodus wird die Lautstärke in dB zurückgegeben. Im Zweiten wird sie als A-Bewerteter Schalldruckpegel (dBA) zurückgegeben, welcher den Frequenzgang des menschlichen Gehörs berücksichtigt. Abbildung 3.9: Der NXT Sound Sensor Der Sensor kann beispielsweise dazu benutzt werden Geräuschquellen zu finden oder auf Klatschen zu reagieren. 3.3.4 Der Ultrasonic Sensor Der Ultrasonic Sensor (siehe Abbildung 3.10) ist ein weiterer neuer Sensor in der NXT Mindstorm Serie, der viele interessante Anwendungen ermöglicht. Dieser Sensor wird dazu benutzt Entfernungen zu messen. Dazu wird ein, für Menschen nicht wahrnehmbarer Ton ausgesandt und dann gemessen, wie lange es dauert bis dessen Reflexion wieder empfangen wird. Da die Ausbreitungsgeschwindigkeit bekannt ist, kann daraus die zurückgelegte Distanz berechnet werden. Der Sensor ist dazu in der Lage Entfernungen bis zu 255 Zentimeter zu messen, die Werte sind jedoch in dieser Entfernung relativ ungenau. Die besten Ergebnisse werden zwischen 6cm und 180cm erlangt. Die Entfernung wird in einem kegelförmigen Bereich gemessen. Der Kegel öffnet sich in einem Winkel von ungefähr 30◦ , somit hat er bei einer Entfernung von 180cm einen Durchmesser von ca. 90cm. 15
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT Abbildung 3.10: Der NXT Abstands Sensor Eingesetzt wird dieser Sensor an der Front des Transportfahrzeuges, um den Bereich vor diesem auf Hindernisse zu überprüfen. Wird ein Hindernis in einem zu geringen Ab- stand zu einem ATF wahrgenommen, hat dieses so die Möglichkeit vor diesem zu stoppen. 3.3.5 Der Rotations Sensor Der Rotations Sensor (siehe Abbildung 3.11) ist einer der Sensoren, die in den NXT Baukästen nicht mehr vorhanden sind und auch nicht mehr benötigt werden, da die Funktionalität direkt in den neuen NXT Motoren integriert ist (siehe 3.2.2). Abbildung 3.11: Der RCX Rotations Sensor Eingesetzt wurde dieser Sensor, um Umdrehungen, der an diesen angeschlossenen Achsen, zu zählen. Die Auslösung beträgt 16 Schritte pro Umdrehung. Somit ist die Genauigkeit dieses Sensors deutlich geringer, als die des direkt in den NXT Motor eingebauten[Hur06]. 16
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT 3.3.6 Produkte anderer Hersteller HiTechnic HiTechnic5 war die erste Firma, die mit LEGO einen Vertrag zur Vermarktung weiterer Sensoren hatte. LEGO beliefert HiTechnic mit den Plastik Gehäusen, damit die Senso- ren aussehen wie die eigenen, und verkauft diese auch über die LEGO Webseite. Durch das selbe Aussehen sind diese die beliebtesten Sensoren von externen Herstellern. Um Verwechslungen mit den Original Sensoren zu vermeiden, haben diese ein leicht anderes Farbschema und sind an der Unterseite beschriftet. Abbildung 3.12: Der HiTechnic Kompass Sensor Zur Zeit umfasst die Palette der angebotenen Produkte: • Kompass Sensor (siehe Abbildung 3.12) • Color Sensor • Tilt Sensor • RCX Adapter Kabel • IR Link mit RCX • Infrarot Sucher • Port Expander • Motor Multiplexer • NXT Prototype Board Mindsensors Mindsensors6 bietet eine breite Palette an Sensoren an. Diese sind allerdings nicht in den üblichen Plastikformen, werden dafür aber mit extra Kabeln geliefert. 5 http://www.hitechnic.com 6 http://www.mindsensors.com 17
3.3. DIE SENSOREN KAPITEL 3. RCX UND NXT Mindsensors liefert zur Zeit die folgenden Produkte: • RCX zu NXT Kommunikations Adapter • Neigungs Sensor • RCX Motor Multiplexer • Kompass Sensor • Sony PS2 Controller Interface • Pneumatics Pressure Sensor • Infrarot Abstands Sensor • RCX zu NXT Anschluss Adapter • NXT Motor Multiplexer Vernier Vernier7 stellt Sensoren nicht speziell für Mindstorms her, bietet aber einen Adapter, um die Sensoren mit den NXT Bausteinen zu verbinden. Vernier vertreibt einige, für die Benutzung mit LEGO Mindstorms Produkten einzigartige, dafür aber oft recht teuere Sensoren. Es werden weit über 40 verschiedene Sensoren angeboten, darunter: • pH Probe • Low-g Accelerometer • Conductivity Probe • Dissolved Oxygen Sensor • UV Sensor • Temperature Probe • Magnetic Field Sensor 7 http://www.vernier.com/nxt/ 18
3.4. PROGRAMMIERUNG KAPITEL 3. RCX UND NXT 3.4 Programmierung Zur Programmierung der LEGO Mindstorms Module gibt es eine Reihe verschiedener Möglichkeiten. Die sicherlich Einfachste ist die Benutzung der mitgelieferten grafischen Entwicklungsumgebung NXT-G (siehe 3.4.1). Für fortgeschrittene Projekte ist es jedoch oftmals sinnvoll auf eine der vielen anderen Möglichkeiten, wie z.B leJOS (siehe 3.4.2) oder RobotC8 zurückzugreifen. 3.4.1 NXT-G Die texanische Firma National Instruments hat in Zusammenarbeit mit LEGO eine Ent- wicklungsumgebung für die LEGO Mindstorms NXT geschaffen, die auf der grafischen Entwicklungsplatform LabVIEW9 (Laboratory Virtual Instrumentation Engineering Workbench) basiert. Abbildung 3.13: Die NXT-G Entwicklungsumgebung 8 http://www.robotc.net 9 http://www.ni.com/labview/ 19
3.4. PROGRAMMIERUNG KAPITEL 3. RCX UND NXT Die NXT-G genannte Software wird in zwei verschiedenen Versionen ausgeliefert. Es gibt die normale Verkaufsversion und die in Abbildung 3.13 dargestellte Educational Version, welche speziell für den Gebrauch in Schulen angepasst ist. Die von LabVIEW benutzte grafische Programmiersprache wird ‘G’ genannt und ermöglicht es, Programme in Form von Datenflussgraphen darzustellen. Die Programmierung geschieht über das Ziehen von vorgefertigten Programmblöcken in den Programmierbereich. Jeder dieser Blöcke ist prinzipiell eine Funktion, für die der Benutzer mehrere Parameter mit Hilfe von Schiebereglern und Eingabefeldern festle- gen kann. Außerdem können so selbst komplexere Blöcke mit Hilfe der Software erstellt werden, wodurch es möglich ist viel Programmcode in einem kleinen grafischen Fenster darzustellen. Da die Software durchgängig gewartet wird, können neue Blöcke aus dem Internet heruntergeladen und importiert werden, wenn neue Sensoren und Aktoren für die LE- GO Mindstorms zur Verfügung stehen. Die grafische Programmierung ist relativ einfach zu verstehen und somit gut geeignet für Personen mit wenig Programmiererfahrung. Wenn man jedoch Programmiersprachen wie Java gewöhnt ist, sind einige der Paradigmen der Programmierumgebung schwer zu verstehen. Außerdem ist es problematisch mit Hilfe der grafischen Oberfläche Program- me zu erstellen, die eine gewisse Größe überschreiten. 3.4.2 leJOS leJOS ermöglicht es, Programme für die RCX und NXT Bausteine in Java zu entwi- ckeln. Dafür stehen unterschiedliche verschiedene Versionen der zu leJOS gehörenden Java Virtual Machine (JVM) und Bibliothek zur Verfügung. Zum Einen gibt es das, mittlerweile sehr ausgereifte, leJOS RXJ, welches aktuell in der Version 3.0 zur Verfügung steht und für die RCX Module bestimmt ist. Zum Anderen gibt es leJOS NXJ für die NXT Module, welches relativ neu ist und noch nicht alle Features der programmierbaren NXT Bausteine unterstützt. Dieses steht im Moment erst in der frühen Beta Version 0.4 zur Verfügung. Die Java Virtual Machine Die leJOS Java Virtual Machine basiert auf der in C geschriebenen TinyVM10 , bei der darauf geachtet wurde, die Codebasis möglichst plattformunabhängig zu halten. Dieses ermöglicht es der VM auf den RCX und NXT Bausteinen, so wie dem Nintendo Game- Boy Advance11 zu laufen. 10 http://tinyvm.sourceforge.net 11 http://www.gameboy.com 20
3.4. PROGRAMMIERUNG KAPITEL 3. RCX UND NXT Die leJOS NXJ Plattform ist essenziell eine Erweiterung derer für RCX. leJOS NXJ wird als eigenständiges Projekt weiterentwickelt, um nicht auf Kompatibilität für die RCX Bausteine achten zu müssen. Auf den RCX Bausteinen verbraucht die VM alleine ungefähr 16KB des Speichers, was nur noch 16KB für eigenen Programmcode übrig lässt. Dank des großzügigeren Speicher- ausbaus bleiben auf den NXT Bausteinen noch ungefähr 229KB verfügbar, obwohl die VM dort ganze 27KB Speicherplatz benötigt. Die leJOS VM unterstützt viele Features einer gewöhnlichen Java Virtual Machine, wie z.B. der von Sun12 . Darin enthalten sind: • Preemptive Threads - Die leJOS VM ermöglicht die Benutzung von Threads mit Unterstützung für Synchronisierung und Interrupts. Der dazugehörige Scheduler arbeitet auf eine denkbar einfache Weise und lässt jeden Thread 128 Instruktionen ausführen, bevor zum nächsten Thread gewechselt wird. Theoretisch können bis zu 255 Threads gleichzeitig benutzt werden, allerdings ist dafür der verfügbare Speicher nicht ausreichend groß genug. • Arrays - Es werden sogar multdimensionale Arrays. Macht man jedoch einen zu umfangreichen Gebrauch von multidimensionallen Arrays, dann verbrauchen diese zu viel Speicher und die VM stürzt ab. • Rekursion - Wie die meisten Programmiersprachen unterstützt auch Java Rekur- sionen. Die leJOS VM kann zur Zeit allerdings nur Rekursionen bis zu einer Tiefe von 10 ausführen. • Exceptions - leJOS unterstützt, wie jede andere JVM auch, den Gebrauch von Exceptions. • Event Model - Das Event Model von Java wird auch von leJOS unterstützt. Die- ses ermöglicht es auf, von Sensoren oder den Knöpfen an den NXT Bausteinen, ausgelöste Events zu reagieren. • float, long, String - leJOS unterstützt viele Java Typen. Um Speicher zu sparen wird jedoch darauf verzichtet, 64bit Typen wie double und long vollständig zu unterstützten. Die beiden Typen können benutzt werden, die VM verwaltet diese aber intern als 32bit floats. Allerdings hat die leJOS VM einige wichtige Einschränkungen, die umfangreichere Probleme noch deutlich verkomplizieren oder den Code einfach nur schwerer lesbar ma- chen: 12 http://java.sun.com 21
3.4. PROGRAMMIERUNG KAPITEL 3. RCX UND NXT • Garbage Collector - Eine JVM entfernt normalerweise Objekte aus dem Speicher, die nicht mehr benötigt werden. Dieses geschieht durch einen automatischen Gar- bage Collector. In der aktuellen VM von leJOS ist dieses noch nicht der Fall und führt, besonders bei längerer Programmausführung, zu Abstürzen. Dieser Punkt hat eine hohe Prio- rität auf der Liste der leJOS Entwickler und es kann davon ausgegangen werden, dass diese Funktion in einer der nächsten Versionen enthalten sein wird. • switch-Statements - die leJOS VM unterstützt keine switch Statements. Diese Un- zulänglichkeit kann durch den Gebrauch von if und else if umgangen werden, führt aber zu einer deutlich schlechteren Lesbarkeit des Programmcodes. • Klassen Größe - Java Klassen können zur Zeit eine maximale Größe von 64Kb haben. Diese Grenze ist sehr schnell erreicht und nicht immer elegant zu umgehen und hat vor allem bei der Entwicklung eines Menüsystems für die NXT Bausteine Probleme verursacht. Trifft man auf eine der angedeuteten Einschränkungen, wird man davon meist schon, bei dem vor der Übertragung des Programmcodes auf den NXT Baustein notwendigen, linking Vorgang mit der folgenden Meldung darauf hingewiesen: leJOS NXJ> Linking... The following features/conditions are currently unsupported: - Switch statements. - Integer increment constant too large. (If > 255, declare it). - Arithmetic or logical operations on variables of type long. - Remainder operations on floats or doubles. - Too many constants or locals ( > 255). - Method code too long ( > 64 Kb!). Die Java Bibliothek Die, in den beiden Versionen des leJOS Paketes enthaltenen Java Bibliotheken sind, zu- mindest größtenteils, gut dokumentiert und bieten einen großen Umfang an Funktionen an. Die Robotik APIs der RCX und NXJ Versionen sind jedoch vom Aufbau her unter- schiedlich und nicht miteinander kompatibel. Dieses kommt zum Einen daher, dass die neuen Sensoren und Aktoren teilweise einen andern Funktionsumfang haben, aber auch daher, dass die Kommunikationsmöglichkeiten grundlegend verschieden sind. Da es möglich ist, mit der Hilfe von Adaptern, die RCX Motoren und Sensoren an den NXT Bausteinen zu verwenden, stehen für diese Elemente spezielle RCX Klassen zur Verfügung. 22
3.4. PROGRAMMIERUNG KAPITEL 3. RCX UND NXT An sich ist die Robotik API von leJOS NXJ relativ komplett und ermöglicht es, die meisten Funktionen der Sensoren in vollem Umfang zu nutzen. Viele Probleme gibt es jedoch noch in dem Bereich der Kommunikation, insbesondere mit Bluetooth. Einige dieser Probleme stammen daher, dass der in den NXT verbaute BC4 Chip zwei Modi hat, zwischen denen umgeschaltet werden muss: • Command Mode - In diesem Modus können neue Verbindungen hergestellt werden und nach anderen Bluetooth Geräten gesucht werden. • Data Mode - Dieser Modus ermöglicht das Senden und Empfangen von Daten an bereits verbundene Bluetooth Geräte. Die Umschaltung zwischen den beiden Modi funktioniert in der Version 0.4 noch nicht sicher und führt zu vielen Abstürzen des NXT Bausteines. Daher ist es mit dieser Ver- sion auch nur möglich eine Bluetooth Verbindung zu einem anderen Gerät aufzubauen. In aktuellen Versionen aus dem Subversion Repository ist es möglich, Verbindungen zu mehreren Geräten herzustellen. Da aber die Umschaltung zwischen den beiden Modi auch dort noch nicht richtig funktioniert, ist es danach nicht immer möglich zu allen verbundenen Geräten Daten zu senden. In der kommenden Version 0.5 von leJOS NXJ soll dieses Problem aber voraussichtlich behoben sein. Die Packages lejos.navigation und lejos.subsumption bieten einige Klassen an, die häufig benutzte Konzepte der Robotik zusammenfassen. So ist es möglich viele Model- le ohne großen Programmieraufwand zu sinnvollen Aktionen zu überreden. Leider sind auch hier noch einige Bugs enthalten, welche besonders bei dem ATF aufgefallen sind und umgangen werden mussten. Zusätzlich sind einige Komponenten des standardisierten javax.microedition Packages in leJOS enthalten. In diesem Packet ist vor allem die Ansteuerung des LCD-Displays und der vier Buttons der NXT Bausteine umgesetzt. 23
4 Konstruktion Die Portierung des Gesamtsystems besteht im wesentlichen aus zwei Blöcken. Im Ersten muss die Konstruktion der Komponenten des Hochregallagers auf die neue Bauweise übertragen werden. Der Zweite besteht daraus, die Steuerung entsprechend der neuen Gegebenheiten anzupassen. Begonnen wird damit die bestehenden Komponenten des alten Hochregallagers zu erläutern und darauf einzugehen, welche Änderungen für den Neuaufbau umgesetzt wer- den. Daraufhin wird die Konstruktion und der Einsatz der dabei benutzten Motoren und Sensoren im Einzelnen geschildert. Durch die nötige Änderung der Konstruktionsweise der LEGO Modelle auf die neue studd-less Bauweise der Mindstorms NXT, müssen alle Komponenten des Systems von Grund auf neu aufgebaut werden. Dieses ist notwendig, damit die neuen NXT Motoren, Sensoren und programmierbaren Bausteine benutzt werden können. Es wird dabei versucht die in Kapitel 3 beschrieben Sensoren bestmöglich einzusetzen, um von der neuen Funktionalität Gebrauch machen zu können und Probleme zu vermei- den, die der bestehende Aufbau in sich birgt. Der Aufbau in der studd-less Bauweise ermöglicht es einige Komponenten der Modelle sehr kompakt, aber trotzdem funktional und stabil zu konstruieren [Mar95]. Ein beson- ders gutes Beispiel dafür ist die in Abschnitt 4.2.2 beschriebene Hubeinheit. Das bestehende Hochregallagersystem (siehe Abbildung 4.1) ist aus mehreren Trans- portfahrzeugen, Regalbediengeräten und Übergabestationen zusammengesetzt. Pro ATF und Übergabestation wurde je ein programmierbarer RCX Baustein und je Hochregal (Regalbediengerät und die dazugehörige Übergabestation) zwei programmier- bare RCX Bausteine verwendet. Dieses stammt daher, dass das Regalbediengerät für jede der drei Bewegungsrichtungen einen Motor benötigt und die Übergabestation zusätzlich einen. Somit wurden zwei RCX Programmierbausteine benötigt, da jeder dieser Bausteine nur drei Motoren ansteuern kann. Da die NXT Bausteine auch nur Anschlussmöglichkeiten für drei Motoren haben, wur- de versucht die Paletten direkt mit Hilfe des Regalbediengerätes von der Ladefläche zu entnehmen. Auf diese Weise kann auf einen NXT Baustein und den damit verbundenen zusätzlichen Kommunikationsaufwand verzichtet werden. 24
KAPITEL 4. KONSTRUKTION Abbildung 4.1: Das RCX Hochregallager Durch diese Schritte war es möglich bei den Transportfahrzeugen auch auf einen der Motoren zu verzichten, da die Ladefläche so ohne bewegliche Teile umgesetzt werden konnte und keinen Motor benötigt, der das Förderband der Ladefläche antreibt. Zudem wird, durch den Verzicht auf einen weiteren Motor, die Bauweise des ATF relativ kom- pakt gehalten. Die Übergabestation wurde komplett überarbeitet und dem Regalbediengerät vom Auf- bau her angeglichen. Außerdem wurden alle Komponenten noch mit zusätzlichen Sensoren, vor allem Druck- tastern, ausgestattet. Die genauen Hintergründe dafür werden in den jeweiligen Abschnit- ten der Komponenten verdeutlicht. Auf der beigelegten CD sind alle Konstruktionsanleitungen und Stücklisten, in de- taillierter Form, als pdf und ldraw -Datei abgelegt. Kapitel B.1 beinhaltet eine Liste der benutzen Anschlussbelegungen der einzelnen Modelle. Die Konstruktionsanleitungen wurden mit Hilfe der LDraw1 Biblothek und den darauf basierenden CAD Programmen Bricksmith2 und MLCad3 erstellt. 1 http://www.ldraw.org 2 http://bricksmith.sourceforge.net 3 http://www.lm-software.com/mlcad/ 25
4.1. DAS HOCHREGAL KAPITEL 4. KONSTRUKTION 4.1 Das Hochregal Das Hochregal (siehe Abbildung 4.2) ist der eigentliche Lagerort für die Paletten und stellt eine einfache Konstruktion ohne bewegliche Teile dar. In der aktuellen Ausbaustufe stehen insgesamt 16 Lagerplätze für Paletten in 4 Zei- len und 4 Spalten zur Verfügung. Dieses ist die einzige Komponente, deren Aufbau größtenteils von dem bestehenden Aufbau übernommen werden konnte. Das Regal- gerüst entspricht dem des alten Hochregallagers (vgl. Abbildung 4.1). Es wurden nur die Führungsschienen für das neue Regalbediengerät angepasst. Die Paletten wurden unverändert von dem bestehenden Modell übernommen. Abbildung 4.2: Das Hochregal Das Regal ist durch den simplen, aber trotzdem robusten, Aufbau sehr einfach in der Größe veränderbar. Wichtig ist, dass alle Lagerplätze eine einheitliche Größe und Abstand zu einander haben. Bei einer Änderung der Anzahl der Ladeeinheiten muss der Steuerung somit lediglich mitgeteilt werden, wie viele Zeilen und Spalten zur Lagerung von Paletten zur Verfügung stehen. 26
4.2. DAS REGALBEDIENGERÄT KAPITEL 4. KONSTRUKTION 4.2 Das Regalbediengerät Das alte Regalbediengerät benutzt drei Motoren, einen für jede der drei nötigen Bewe- gungsrichtungen. Damit der Steuerung die aktuelle Position bekannt ist, sind zusätzlich drei Rotationssensoren verbaut und somit alle Anschlüsse des RCX Bausteins belegt. Das RCX RBG arbeitet mit einer Übergabestation zusammen, welche als Ein- und Aus- lagerungsbereich dient. Die UEG benötigt zusätzlich noch einen Motor und einen RCX Baustein. Wie schon früher erwähnt, soll das neue RBG in der Lage sein die Paletten direkt von der Ladefläche des ATF, ohne den Umweg über eine UEG, entnehmen zu können. Dieses ist möglich, da das neue RBG deutlich stabiler konstruiert ist und so eine längere Lastaufnahmeeinheit benutzen kann. Als weitere Verbesserung wurde das Regalbediengerät für alle drei Bewegungsrichtungen mit einem Drucktaster (siehe Kapitel 3.3.1) ausgestattet, um zu ermöglichen in eine, zur Initialisierung dienende, Grundposition zu fahren. Von dieser Position aus sind die Wege zu allen anderen anfahrbaren Positionen bekannt, bzw. leicht errechenbar. Der Einsatz der Taster ist möglich geworden, da die NXT Motoren über den einge- bauten Tacho verfügen und somit nicht mehr, auf den zusätzlichen Rotations Sensor zurückgreifen müssen. Hierdurch sind die benötigten Sensoranschlüsse an den NXT Bau- steinen frei geworden. Das Regalbediengerät (siehe Abbildung B.2) besitzt die komplizierteste mechanische Konstruktion aller Komponenten. Es besteht im Wesentlichen aus drei zusammenarbei- tenden Teilen, welche jeweils für eine der drei Bewegungsrichtungen zuständig sind. 4.2.1 Die Fahreinheit Die Fahreinheit (siehe Abbildung 4.3) ist dafür zuständig das Regalbediengerät in die gewünschte Position in der x -Richtung zu bewegen. Dadurch lässt sich eine Position für das ATF und jede Spalte des Regals anfahren. Auf der Bodenplatte des Hochregals (sie- he Abbildung 4.2) sind Führungsschienen montiert, welche für einen sicheren Halt der Fahreinheit garantieren. Zur Fortbewegung benutzt die Fahreinheit vier 40-zähnige Zahnräder, welche alle über einen gemeinsamen Motor angetrieben werden. Die Zahnräder sind an einer Bodenplatte befestigt, auf welcher der Mast aufgesetzt ist. Der Mast besteht aus vier Säulen, wobei, an den beiden zum Regal zeigenden Säulen, auf der Innenseite verzahne Bausteine an- gebracht sind. An der Fahreinheit ist ein Drucktaster befestigt, welcher erkennt, wann die Ausgangs- position erreicht ist. Die Ausgangsposition ist zugleich die Position, von der aus das Transportfahrzeug be- und entladen wird. 27
4.2. DAS REGALBEDIENGERÄT KAPITEL 4. KONSTRUKTION Abbildung 4.3: Die Fahreinheit 4.2.2 Die Hubeinheit Die Hubeinheit (siehe Abbildung 4.4) ist dafür zuständig die Lastaufnahmeeinheit auf die gewünschte Höhe (y-Richtung) zu bewegen. Üblicherweise wird die Bewegung in y-Richtung durch einen auf Bodenebene montierten Motor vollzogen, der ein Stahlseil auf einer Winde auf oder ab wickelt. An dem Stahlseil ist wiederum die Hubeinheit befestigt. Etwas ähnliches wurde versucht in dem alten Model umzusetzen. Die Positionierung war dadurch jedoch auf Grund der Bauweise relativ ungenau und die Lastaufnahmeeinheit sehr wackelig in der Positionierung. Um dieses Problem zu umgehen, wurden Bausteine mit Zähnen vertikal an den Masten des Regalbediengerätes angebracht. Entlang dieser können sich dann Zahnräder auf beiden Seiten auf und ab arbeiten. Durch diese Methode ließ sich ein kompakter, aber trotzdem mechanisch stabiler Aufbau realisieren. Entlang des Mastes wird die Hubeinheit sicher geführt, da der Mast vollständig umschlossen wird. Zusätzlich verfügt die Hubeinheit über zwei Drucktaster, so wie eine Führung und den Antrieb für die Lastaufnahmeeinheit. Der an der Unterseite der Hubeinheit befestigte 28
4.2. DAS REGALBEDIENGERÄT KAPITEL 4. KONSTRUKTION Abbildung 4.4: Die Hubeinheit Drucktaster ist dafür zuständig, zu erkennen, wann die Lastaufnahmeeinheit vollständig eingefahren ist. Der an dem, für den Hub zuständigen, Motor befestigte Drucktaster erkennt, wann die Hubeinheit ganz nach unten gefahren ist. 4.2.3 Die Lastaufnahmeeinheit Die Lastaufnahmeeinheit (siehe Abbildung B.3) ist für die Bewegung in die z -Richtung zuständig. Der Aufbau erinnert sehr an den der Gabel eines Gabelstaplers und auch die Funktion entspricht diesem. Primär ist die Lastaufnahmeeinheit so weit wie möglich eingefahren. Denn nur wenn die Lastaufnahmeeinheit sich in dieser Position befindet, kann sich das Regal ungehindert auch in x und/oder y-Richtung bewegen. Zusätzlich gibt es eine Position zum bedienen des Hochregals und eine weitere zum bedienen des Autonomen Transportfahrzeugs. Ähnlich der Bauweise der Hubeinheit wird die Kraft des an der Hubeinheit angebrachten Motors der Lastaufnahmeeinheit mittels eines Zahnrades auf die Bausteine mit Zähnen übertragen. Der Unterschied besteht jedoch hier darin, dass in diesem Fall das Zahnrad fest positioniert ist und dadurch die Lastaufnahmeeinheit, an der die bezahnten Bau- steine befestigt sind, vor und zurück schiebt. Der Aufbau der Lastaufnahmeeinheit wird so durchgeführt, dass diese genau in die dafür vorgesehene Führung der Hubeinheit passt, sich aber trotzdem leicht bewegen lässt. 29
Sie können auch lesen