Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Projekt: Lego Mindstorms Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer uni@der9.de Martin Neundorfer | www.der9.de 1 / 16
Willkommen in Babel geht es. Damit soll Kindern und Jugendlichen einen Einstieg in die Logik von Programmen und den Zusammenhang zwischen Hard- und Software erklärt werden. Also für mich, der als Kind und auch noch als Oder: “Lego Mindstorms NXT und Software!” Jugendlicher immer gerne mit Lego am schaffen war, bis der Computer und die damit verbundenen Vielleicht vorab, Lego Mindstorms ist genau Möglichkeiten die Bausteine ablösten, klang das nach genommen ein “Lego Technik” Bausatz, der mit einer durchaus interessanten Kombination. den gleichen Teilen (Zahnrädern, Lochstangen und Verbinder-Pins) ausgestattet ist, wie fast alle modernen Um einen Einstieg in die Möglichkeiten zu finden, Bausätze der Firma. Allerdings unterscheidet er sich bemühte ich das Internet und bin, nach einigen in so fern vom normalen Lego, als dass er zusätzlich Mausklicks auf den außergewöhnlichsten Projekten den so genannten programmierbaren Legostein – gelandet, die mit diesem Setting umgesetzt wurden. in meiner Version (Ja, es gibt Verschiedene) NXT Ein paar Beispiele: Es gibt Nadeldrucker, Rubics- genannt. Dazu bekommt man noch 3 Motoren 2 Cube Solver, 3D Scanner mit Plotter und was weiß Berührungssensoren, einen Farb- und Lichtsensor, ich noch alles. Nur um in die Materie mal einzu- sowie einen Ultraschall – Distanzmesser. Außerdem steigen habe ich mal eher bodenständig angefangen. liefert Lego eine Software mit, bei der man durch Ich wollte mich mit Wegfindung auseinandersetzen. eine Drag and Drop Oberfläche verschiedene “Pro- Was meiner Meinung nach, zum Testen erst einmal grammschnippsel” zusammenziehen kann um seinem naheliegend war. Roboter Leben einzuhauchen. Denn genau darum Martin Neundorfer | www.der9.de 2 / 16
Willkommen in Babel Ein Gefährt war schnell entworfen und so ging rücken zu können. Allerdings stößt man, wenn man es erst einmal fröhlich ans Programmieren. Was sich etwas genauer mit der Materie beschäftigt auf im Falle der mitgelieferten Software (gleichnamig ein wahrhaftes “babylonisches Sprachwirrwar”. Es NXT genannt) wie gesagt eher ein Zusammenziehen gibt, soweit ich das ersehen konnte ungefähr 20 einzelner “Blöcke” ist, mit der man einfache Pro- unterschiedliche Programmiersprachen, mit denen gramme wirklich schnell fertigen kann. Problema- man auf dem Stein schreiben kann. tisch wird diese grafische Oberfläche allerdings, wenn das was man im Kopf hat über einzelne Abfragen Auf den ersten Blick mag das zwar ziemlich anspre- hinaus geht. Dann wird es nämlich ziemlich schnell chend erscheinen, denn, denkt man, sucht man sich unübersichtlich. die, welche einem am besten liegt heraus und arbeitet damit. Tja, schön wäre es gewesen. Ja, man hat 20 unterschiedliche Sprachen, aber keine kann wirk- lich alles und es gibt immer Probleme mit der Por- tierung auf den NXT. Zudem kommt dazu, dass der Hype um den Mindstormsbausatz irgendwann im Jahr 2007 war und man auch nur Foren aus der Zeit von 2005 – 2008 findet. Die Frustration war ziemlich groß. Aber trotzdem habe ich einige Pro- gramme getestet und damit Erfahrungen gesammelt. Es kommt zu Überschneidungen einzelner Ele- mente und wird zuerst einfach nur unübersicht- Meine erste Alternative zu der original Soft- lich. Wenn es dann noch komplizierter wird (Was ware war “Robolab”, was scheinbar der Vorgänger heißt, mehrere If-Abfragen ineinander verschachtelt), der “NXT-Software” war und in der Weiterent- beginnt dann das Programm nicht nur unübersicht- wicklung jetzt für Schulen als Lehrmittel angeboten lich zu werden. Es überschwemmt einen förmlich wird. Es hat genau wie NXT eine grafische Ober- mit Fehlermeldungen und stürzt in regelmäßigen fläche mit der man einzelne Blöcke zu Programmen Abständen ab. zusammen zieht. Das Ganze wirkt etwas wie aus den frühen 90ern und ist auch im Bezug auf Benutzerfreundlichkeit ungefähr in dieser Epoche einzustufen. Um damit Arbeiten zu können darf man erst die Firmware des NXT aufbrechen und selbst dann funktionieren viele Sensoren des NXT nicht wirklich damit. Da das Programm für die Vorgängerversion des NXT also den NXC entwickelt und dann nur im Nachhinein aufgestockt wurde. Nun ja, es gab Fehler, Fehler und Daraufhin habe ich mich dann in diversen Foren Fehler. Nur als Beispiel: Man konnte einen Motor auf die Suche nach Alternativprogrammen gemacht starten ihn aber nicht mehr anhalten lassen. um der “Kutsche” mit einem Programm zu Leibe Martin Neundorfer | www.der9.de 3 / 16
Willkommen in Babel Dazu kommt, dass ich persönlich meinen Quell- text beim Programmieren sehen und selbst darin hantieren möchte, anstatt mir in einer grafischen Oberfläche den Wolf zu klicken. Deshalb gibt es einige Programme oder Programmerweiterungen mit denen man die Sensoren und Motoren des NXT ansteuern und auslesen kann. Ruby NXT, Not exactly Java und wie sie alle heißen. Nach weiterer Suche bin ich dann auf den ver- meintlichen Erlöser gestoßen. Bricxcc basiert auf der Programmiersprache C++ und ist kein grafi- sches Programm mehr sondern handfestes Program- mieren. Funktioniert ziemlich gut mit der original Firmware und hat – bisher keine Fehler. Weitere Informationen ■■ http://wasmacht.der9.de/?p=77 • Martin Neundorfer | www.der9.de 4 / 16
Go NXT, GO! Nach einigen Versuchen schlug sich die erste Ver- sion ziemlich gut und konnte mit einem Vergleichs- mechanismus auch erkennen ob das Hindernis “über- fahren” werden kann oder ob es sich doch lieber einen Weg drumherum suchen sollte. Das erschien mir logisch, denn der Ultraschallsensor erkennt auch ein Kabel als „Hinternis“. Version 2 Allerdings gab es auch Situationen in denen der Nach meiner Reise durch alle möglichen Pro- erste Prototyp nicht wirklich weiter kam. Nämlich gramme (ich hätte nie gedacht, dass es für ein Lego dann, wenn es sich zwischen zwei Gegenständen – Spielzeug so viele unterschiedliche Software gibt) verklemmt hatte. Da hinten kein Entfernungsmesser soll sich dieses Kapitel mit einigen meiner ersten angebracht war (Es war ja auch nur einer im Set) „gebauten Modelle“ befassen. (Allerdings muss ich Hatte ich mir dann einen Mechanismus überlegt mit gestehen dass ich mir ein paar Teile von meinem dem sich der Kollege umschauen konnte. Patenkind geborgt habe, als ich das letzte mal Zuhause war, somit sind nicht alle Teile im Bausatz.)… Version 1 Das bereits im letzten Artikel gezeigte und erwähnte Modell, dass sich (jetzt mit der entspre- chenden Software) seinen eigenen Weg durch die Welt suchen kann. Martin Neundorfer | www.der9.de 5 / 16
Go NXT, GO! (Der Arm der hier so schief nach rechts hängt war Es hätte wohl noch einiges an Feintuning gebraucht im Modell noch oben am Kopf befestigt) Das System um dem Modell eine etwas, graziler Anmutung zu mit dem drehbaren Kopf funktionierte ziemlich gut geben. Allerdings war ich irgendwie entmutigt als und man konnte die Wegfindung gut umsetzen. mein werter Herr Professor losprustete als er mein “Werk” zum ersten mal gesehen hatte. Dann bin ich aber zufällig auf ein Video auf You- tube gestoßen. (Link unter „weitere Informationen“) Weitere Informationen: ■■ Youtube Link: http://www.youtube.com/watch?v=b694exl_ oZo ■■ Blogeintrag mit Videos: http://wasmacht.der9.de/2011/03/05/go-nxt- go/ • Ich kannte die “Strandbiester” von Theo Jansen zwar schon, wollte das allerdings trotzdem irgendwie adaptieren und hatte dann in einer Nacht und Nebel Aktion alles was ich bisher zusammengebaut hatte wieder auseinander genommen und an “Laufmecha- nismen” gebastelt. Die, zwar nicht von Windkraft sondern den NXT Motoren angetrieben werden, aber trotzdem, das Prinzip funktionierte. Der Läufer Der erste Prototyp war, wenn man ehrlich ist, nicht ganz so erfolgreich. Es lief zwar nach vorne und nach hinten aber war auch nur ohne den „den- kenden Baustein“ (der immerhin knapp 400 Gramm wiegt) in der Lage zu laufen. Martin Neundorfer | www.der9.de 6 / 16
Farbe bekennen Ich fand das Konzept und die Idee mit einem Farbsensor die Farbe zu scannen und dann mit einem Stift die gescannte Farbe direkt benutzen zu können irgendwie spannend. Und da ich im Bausatz ja sowohl einen Farbsensor, als auch 3 Motoren hatte, dachte Und diesen Titel kann man durchaus in zweierlei ich mir etwas aus um das Konzept das, wie deut- Hinsicht sehen. Denn ungefähr ein halbes Jahr nach lich wurde nicht umgesetzt worden war, zu bauen. den fahrenden und laufenden Entwürfen wurde mir dann doch bewusst, dass das Projekt Lego durchaus Der Farbsensor von Lego ist offiziell ein “RGB” bald einmal ein Ende haben sollte. Da mir allerdings Sensor. Heißt er scannt eine Farbe und gibt die Werte immer noch keine, berauschende, weltverbessernde von Rot, Grün und Blau aus. Lichtfarben die sich oder spannende Idee beschieden war, war die sich aus dem Spektrum ableiten und zusammen ein Weiß einstellende Frustration groß. ergeben. Das Problem ist nur, man kann nicht mit RGB Werten zeichnen. Denn wenn man normale Und wieder einmal per “Zufall” fand ich im Farben miteinander mischt entsteht Weiß, sondern Internet eine Idee, einer Produktdesignerin. Als Mischfarben. Aus dem Kunstunterricht in der Schule Anmerkung: Langsam könnte man meinen dass ist das sicherlich bekannt. Also war der erste Schritt mich “Zufälle” häufig begleiten oder dass es so etwas für mich, heraus zu finden, wie man die Rot, Grün wie “Zufall” überhaupt nicht gibt. Aber das nur am und Blau Farbwerte in Rot, Blau und Gelb umwan- Rande. Auf jeden Fall fand ich dann diesen Stift im deln / umrechnen kann. Nach einigen Anläufen und Netz (Die Links zur Ursprungsseite habe ich leider unterschiedlichen Ergebnissen ( von ganz falsch bis nicht mehr, aber es sei für aller Augen angemerkt: fast richtig) war also der erste Schritt getan. ‘Diese beiden Bilder sind nicht von mir’): Martin Neundorfer | www.der9.de 7 / 16
Farbe bekennen Der theoretische Unterbau des Projektes war also gelegt, jetzt war die Frage wie die Umsetzung des Konzeptes aussehen sollte. Es stand fest. Ich brauchte mindestens 3 Farben, und ein Zeichenmedium, da ich mit hoher Wahrscheinlichkeit nicht alle Bauteile in einen Stift pressen konnte. Was das Thema der Farben anging, hatte ich sofort eine Idee, wie man sie lagern und bei Bedarf aus- geben konnte. Dazu baute ich aus Lego und einer handelsüblichen Spritze ein Modul, dass mittels eines NXT Motors, eines Getriebes und einem Schieber einen Mechanismus der die Spritze sehr langsam aus- drücken konnte. Um das Modul zu planen und zu testen baute ich zuerst die Mechanik für eine Farbe. Dabei zeigte sich auch schnell ein Nachteil. Selbst wenn man den noch so komprimiert plante, gäbe es wohl kaum eine “Handtaschentaugliche” Lösung. So, nachdem ich nun ein Modul für die Bereit- stellung der Farben hatte, wären die anderen Beiden einfach “Klone” des ersten Modells geworden, somit beschäftigte ich mich jetzt mit dem eigentlichen Zei- chenmedium. Einem Stift der über einen Infusions- schlauch mit der Spritze verbunden wurde. Das war nur eine vorübergehende Lösung, später sollten ja 3 Farben in dem Stift zusammen laufen, die je nach Wunsch mit unterschiedlichsten Mischungsverhält- nissen ausgegeben wurden. Der Plan war einen Kugelschreiber so um zu bauen, dass er immer noch die Vorteile des Rollballes bietet aber auch Daten an darüber ob der Stift gerade auf- liegt oder nicht an den NXT weitergeben konnte. Ein erstes positives Ergebnis war und ist noch immer das Fehlen von 14 hässlichen Kugelschreibern aus meiner Stiftebox, die Frankenstein – gleich als Opfer der Wissenschaft hingerichtet wurden. Das Ergebnis sah dann wie folgt aus: Martin Neundorfer | www.der9.de 8 / 16
Farbe bekennen Zuerst sah mein Plan vor, die Miene direkt an den Drucksensor zu koppeln. Das stellte sich dann allerdings beim zusammen bauen als unpraktikabel heraus. Deshalb bekam der Stift in dieser Version die schwarze Stange, die als Verlängerung dient und Druck auf den Sensor ausübt, wenn der Stift eine Oberfläche berührt. Die Probleme Bis hier verlief alles nach Plan. Sieht man mal von der etwas über das Ziel hinaus geschossenen Größe der “Anlage” ab. Ab diesem Punkt schien es allerdings so als wolle alles immer weiter ins Chaos versinken. Ich arbeitete zu diesem Zeitpunkt noch immer mit Bricxcc (Einem Programm mit dem man Programme auf Basis der Programmiersprache C++ auf dem NXT schreiben kann) und war auch soweit mit den Ergebnissen zu Frieden. Allerdings hätte ich vorher den Farbsensor testen sollen, wie ich jetzt weiß. Denn es stellte sich, als ich dabei war die Software für den Stift zu schreiben, heraus wie eingeschränkt die Lego Hardware arbeitet. Der so genannte RGB Sensor lieferte nämlich alles andere als RGB Werte zurück. Ja er konnte Farben erkennen, zugegeben. Aber nur Rot, Grün, Blau, Gelb, Schwarz, Orange, Grau und Weiß. Danach hörte sein Ermessensspektrum auf. Auf dringlicheres Nachfragen meinerseits (anhand der Raw-Werte- Abfrage) begann der Sensor lediglich wirre Zah- lenketten auszuspunken, die sich irgendwie nicht in einen Zusammenhang mit den Farben bringen ließen. Ich hatte einen ganzen Nachmittag vergeb- lich versucht die Werte logisch Farben zuzuordnen – ohne Erfolg. Ein ironisches Schnauben entlockte mir dann meine Recherche im Netz als ich auf den Passus: “Der Lego Sensor ist scheiße, kauf dir diesen speziellen Martin Neundorfer | www.der9.de 9 / 16
Farbe bekennen Farbsensor der Firma XYZ” stieß. Konnte ich dem doch nur zustimmen. Der Farbsensor der Firma XYZ kostete allerdings auch mal geschmeidige 70 Euro, was mir dafür wirklich zu viel Geld war. Darauf hin beschloss ich erst einmal weiter zu machen als wäre nichts gewesen und wollte das System einfach testen ob es überhaupt machbar war. Schließ- lich ist Orange auch die Mischung aus Gelb und Rot. So hätte ich mir auch keine Gedanken über das Feintuning machen müssen. Musste ich auch nicht, allerdings hätte ich mir vorher überlegen sollen, welche Konsistenz die Farben in den Spritzen haben sollten. Sobald man die Spritze mit Farbe füllte und zu Schreiben begann, stellte sich nämlich eine gesteigerte Inkontinenz auf Seiten des Kugelschreibers heraus. Durch den Druck den die Farbe innerhalb des Kopfes ausübte tropfte die Spitze ab und an und ließ sich dann kaum dazu überreden aufzuhören. Als dann die Spitze des Kugelschreibers aus der Miene schoss und eine Spur der Verwüstung vom Schreibtisch, über den Boden auf das Bett und an die Wand dahinter legte, war die Motivation für dieses Projekt auf den absoluten Nullpunkt gesunken. Zum Glück kam mir dann endlich eine Idee, was ich gerne mit diesem Bausatz umsetzen würde und auch könnte. Deshalb legte ich das Projekt “Farbscan- Stift” zur Seite und entschied mich dazu meine eigene Vision umzusetzen. Weitere Informationen: ■■ Blog Eintrag mit Videos: http://wasmacht.der9.de/2011/03/06/farbe- bekennen/ Martin Neundorfer | www.der9.de 10 / 16
Richtig zupacken Natürlich kann man damit dem digitalen Gegen- über mit schwingenden Fäusten einheizen. Eine Rückmeldung vom Spiel an den Arm, dass das Ziel nun getroffen wurde, oder ob der Fisch jetzt wirk- lich an der Angel angebissen hat und wie viel Zug man nun auf bringen muss um ihn aus dem Wasser zu ziehen gibt es dadurch allerdings nicht. Man mag natürlich zu recht fragen, wie man das auch bewerk- stelligen will, worauf ich nur antworten kann, dass es sich ohne einen größeren technischen Aufwand kaum umsetzen lassen wird. Aber dass so etwas durchaus machbar ist, wollte ich mit meinem abschließenden Projekt im Lego-Sektor zeigen. Was denn nun ? Und jetzt geht es auf in die letzte Runde! Nachdem ich nun schon einige verschiedene Modelle gebaut Wie oben schon angerissen, wollte ich eine Mög- hatte, die mich alle nicht wirklich zufrieden gestellt lichkeit entwickeln über ein Eingabemedium sowohl hatten, kam mir dann eine Idee für eine praktikable mit dem Computer zu kommunizieren, als auch Lösung die ich auch persönlich ziemlich spannend eine Rückmeldung zu bekommen. Heißt, wenn ich fand. ein Objekt mit der Hand umschließe, soll ich doch bitte daran gehindert werden die Hand komplett zu Wenn man sich momentan die Landschaft der schließen. Und wenn ich meine Hand bewege, so “Neuen Eingabemedien” für Computer oder Kon- lange ich sie geschlossen habe, möchte ich außerdem, solen anschaut kommt man an Schlagwörtern wie dass ich das digitale Objekt, an eine andere Stelle “Wiimote”, “Balance Board” oder “Kinect” bei der verschieben kann. Ferner hätte ich auch gerne, dass Xbox 360 nicht vorbei. Gerade beim Letzteren sehe ich im Anschluss meine Hand wieder öffnen kann, ich persönlich allerdings eine Schwachstelle. Man wodurch das Objekt jetzt an seiner neuen Position kann damit zwar Bälle treten, Tennis spielen, Skate- verharrt. Das war die Aufgabenstellung. board fahren oder sich hinters Steuer eines Renn- boliden schwingen und steuert dabei das Spiel mit Um noch einmal kurz in Erinnerung zu rufen, seinen Gesten, aber ein Feedback dessen was man was in dem Lego-Bausatz alles dabei war: 3 Motoren, da tut bekommt man nicht wirklich. 2 Tastsensoren, 1 Entfernungs- sowie 1 Farbsensor. Martin Neundorfer | www.der9.de 11 / 16
Richtig zupacken Damit ließ sich sicherlich einiges anstellen. Im Kopf Fehlermeldungen sobald ich eine Libaryfunktion hatte ich zu diesem Zeitpunkt schon einen Plan wie ausführen wollte. das Resultat ungefähr aussehen sollte, blieb aller- dings noch eine Frage, die geklärt werden musste. Einige Recherche brachte mich dann zu ein paar Seiten: Wie bekomme ich die Daten von dem Lego- Stein in den Computer. Schließlich sollte es ja ein ■■ Die Seite mit den Beispieldaten des Autors Eingabemedium werden und kein “Roboter” wie es ■■ Virtual Blocks – Eine Arbeit die auch mit der eigentlich im Sinne von Lego wäre. Normalerweise Bibliothek erstellt wurde schreibt man für den NXT ein Programm, läd es auf ■■ Einem Processing Script dass die Sensorwerte den Stein herunter und startet es dort schließlich, graphisch ausgibt. wodurch bestimmte Aktionen ausgeführt werden. ■■ Und einer Dokumentation als PDF wie man Die Kommunikation mit meinem Mac Pro gestaltete den NXT richtig anschließt sich dann etwas schwieriger als erwartet. Aber das brachte mich alles nicht weiter, da ich Dass der NXT über Bluetooth verfügt war zwar sowohl den NXT über die Netzwerkeinstellungen bekannt und dass es Programme gab die vom Rechner als Seriellen Port verbunden als auch die neuste Ver- aus, mit dem Stein kommunizieren konnte, hatte ich sion von RXTX installiert hatte. Es funktionierte auch schon heraus gefunden, aber wie man sich selbst einfach nicht. so ein Programm schreibt war mir noch nicht klar. Mittlerweile war ein ganzer Tag der Fehlschläge Zuerst bin ich bei meiner Recherche auf einige ins Land gegangen und die Motivation war erneut auf Bluetooth Bibliotheken für Processing, Ruby und dem Tiefpunkt, als mir der entscheidende Gedanke Java gestoßen mit denen ich auch eine Verbindung kam. Was wäre wenn die Bibliothek nicht die aktu- zum NXT auf bauen konnte. Dann allerdings ging ellste Bibliothek von RXTX bräuchte, sondern die es nicht mehr weiter. Denn ich konnte den Stein Version die 2007 aktuell war, als die Bibliothek ver- einfach nicht als Client etablieren, wie es in einem öffentlicht wurde. Tutorial als “ganz einfach” beschrieben war. Success! Somit habe ich weiter gesucht und bin dann zu meiner Überraschung auf NXTcomm eine Processing Wer hätte das gedacht. Ich bin im Netz nach Libary gestoßen die eine Bluetoothverbindung zum einigem Suchen auf ein Paket aus einer alten Ver- NXT auf baut und die Grundfunktionen mitbringt sion von RXTXcomm gestoßen, die zusammen mit um Motoren und Sensoren steuern zu können. Nach einem Shell Script für das richtig stellen der Rechte den ersten gescheiterten Versuchen war ich ausge- angeboten wurde und aus dem Jahr 2007 war. Die sprochen erfreut darüber dass die Lösung wohl “so Dateien habe ich in die entsprechenden Ordner von einfach war”. Um es mit den Worten meiner Groß- OSX gezogen, via Terminal das Script ausgeführt mutter auszudrücken: “Ja Pfeierdeckel” – Nichts und es läuft. Jetzt kann ich über Processing die Lego- war mit einfach. Statt eine Verbindung mit dem Sensoren und Motoren anzapfen und von dort aus Stein aufzubauen überhäufte mich Processing mit auch beeinflussen. Martin Neundorfer | www.der9.de 12 / 16
Richtig zupacken Ich finde leider den Link zu der Seite nicht mehr einen Baustein nur 3 der Motoren anschließen kann, auf der ich die Dateien gefunden habe. Deshalb stelle einmal ganz abgesehen. ich die Dateien mit dem ausdrücklichen Hinweis, dass ich sie selbst nur im Netz gefunden habe und Vielleicht sei noch erwähnt, dass es sich hierbei sie nicht von mir geschrieben sind online. Für ent- ausdrücklich um ein Lego-Projekt handelt. Deshalb stehende Fehler übernehme ich keine Haftung oder ist das Modell auch etwas “klobiger” ausgefallen, als Garantie ;) Download es vielleicht mit entsprechend anderer Hardware aus- fallen würde. Technisch gibt es heute bereits Mög- Beim ausprobieren, stellte sich allerdings heraus, lichkeiten so etwas in einen etwas dickeren Hand- dass der Farb und Licht Sensor mit dieser Biblio- schuh zu packen. Aber es ging nur darum einen thek nicht funktioniert und immer nur den Wert möglichen Ansatz zu zeigen, der funktionsfähig ist. 1 zurückliefert. Ein kleiner Wehrmutstropfen aber einer den man verkraften kann. Jetzt, da die Hürde genommen war und ich die Daten der Sensoren am Rechner verarbeiten konnte, bemühte ich mich zuerst einmal die “Hardware” zusammen zu bauen. Die mechanische Hand Nachdem die Idee eine Schnittstelle zwischen Rechner und Mensch zu entwickeln gefunden und die technische Umsetzbarkeit nun bewiesen war, sollte Das erste Thema dass bald auftauchte war, wie der nächste Schritt die Hardware sein. Die durch die man die Konstruktion so umsetzen kann, dass sie Lego-Teile erst einmal nur auf das Nötigste reduziert während der Benutzung nicht schmerzhaft ist und sein sollte. So musste ich mir erst einmal darüber klar dennoch möglichst eng am Finger anliegt. (Wer jetzt werden, was ich denn eigentlich brauchte um Posi- grinst, hat keine Ahnung wie scharf kantig Lego- tion der Hand, Position der Finger und so weiter zu steine sein können :P ) ermitteln und dann an den Rechner zu übertragen. Deshalb beschäftigte mich zuerst einmal mit einer Art mechanischen Hand, die über zwei der drei Lego Motoren (Jeder Motor hat einen digitalen Umdre- hungssensor) erkennen konnte wie weit die Finger gerade geschlossen sind. Dies funktioniert bei dem Modell nur für den Daumen und für die 4 anderen Finger als Einheit. Jeder der Lego Motoren wiegt knapp 60 Gramm, was bei Zweien nach einer Weile bereits etwas beschwerlich wird. Davon dass man an Martin Neundorfer | www.der9.de 13 / 16
Richtig zupacken Das zweite Thema war, wie man den Sensor für den Daumen so mit dem restlichen Teil verbindet, dass er frei beweglich bleibt ohne ihn zu locker sitzen zu lassen. Um das zu bewerkstelligen habe ich mir mit zwei Gummis und einer Neopren Manschette eine Halterung gebaut, die die gewünschten Frei- heiten erlaubt und trotzdem Festigkeit bietet. Et voilà damit war zumindest eine grundlegende Steuerung der Motoren möglich und über den Hebel- mechanismus am Motor kann ich, wenn gewünscht Der verbleibende Motor stellt den Mittelpunkt eines so gegensteuern, das die Finger nur bis zu einem fiktiven Kreises dar. Ein daran angebauter Arm zeigt, bestimmten Grad geschlossen werden können. Das vom Grad 0 aus gesehen den Winkel an und der Ult- ganze noch einmal als Bewegtbild gibt es auch. Dabei raschallsensor, der auf einem Schlitten am Arm befes- auch wie man das Teil anlegt. tigt ist, misst ständig die Seite C eines Dreiecks. Mit dem 90° Winkel sind drei Angaben eines Dreiecks M echanischer A rm beisammen. Mehr braucht es nicht um alle Winkel und mit Cosinus und Tangens auch die fehlenden Nachdem ein weiterer Schritt getan war und man Seiten zu berechnen. Wodurch sich die Werte X und nun zum Einen erkennen konnte wie weit die Finger Y in einem Koordinaten System ergeben. geschlossen waren aber sie zum Anderen daran hin- dern konnte sich weiter zu schließen als gewünscht, fehlte der Hardware nur ein letztes Teil. Da ich nicht über eine Wiimote oder Ähnliches verfüge um die Position der Hand genau auszulesen, war Erfinder- geist gefragt. Ich hatte schließlich noch einen Motor, Entfernungsmesser und die Tastsensoren. Weil ich mit der Processing Libary den Farbsensor nicht anspre- chen konnte, fiel er von vorn herein weg. Freilich gibt es mehrere Möglichkeiten mit denen man die Position zu bestimmen. Ich entschied mich für eine Methode die am zuverlässigsten erschien. Die Hand wird, zugegeben etwas eingeschränkt. Um eine möglichst hohe Ausbeute an Bewegungs- Aber mit den gegebenen Mitteln war es das Beste freiheit zu bekommen, habe ich den Arm auf 180 was mir einfiel. Grad Nutzbarkeit angelegt. Dabei war zu beachten, dass es eine Ausnahmesituation gibt, wenn der der Das dabei verwendete System ist denkbar einfach Winkelwert des Motors genau 90 Grad beträgt, denn und stützt sich bei der Berechnung der Koordinaten dann kann kein Dreieck mehr entstehen. Wenn man auf die Berechnung eines rechtwinkligen Dreiecks. in diesem Fall allerdings die Hälfte des Kreisradius Martin Neundorfer | www.der9.de 14 / 16
Richtig zupacken als X und den Abstand des Entfernungsmessers als Was ich zusätzlich mit eingebaut habe ist eine Y Werte setzt, entsteht daraus auch kein Problem. Funktion die, zumindest bei Mac OSX zuverlässig das Serial-Port erkennt mit dem der NXT mit dem Bei der Konstruktion des Arms war im Endeffekt System verbunden ist. nur darauf zu achten eine möglichst stabile Konstruk- tion zu finden, da die erste Version fast sofort entzwei Da das ganz Script mit einem “FatalError” abstürzt brach. Damit der Arm nicht so leicht die Bodenhaf- wenn die Verbindung zum NXT nicht erfolgreich tung verliert ist am Ende ein Bleigewicht befestigt. hergestellt wird, wird der Verbindungsvorgang auch nicht sofort beim Programmstart eingeleitet. Mit In einem kurzen Video in meinem Blog-Artikel einem Druck auf die Taste “C” auf der Tastatur, wird außerdem deutlich, dass der Arm der Hand wird der Benutzer gefragt, ob er wirklich eine Ver- folgt auch wenn man nicht gezielt darauf achtet. bindung herstellen möchte und erst nach Bestätigung wird der NXT kontaktiert. Das digitale Gehirn Nachdem sowohl die Theorie, als auch einige “Hardware-Teile” ausführlich erklärt habe, soll es sich hier hauptsächlich um die Software gehen, die die Daten vom NXT über Bluetooth empfängt, aus- wertet und ausgiybt. Dabei fällt mir die Situation ein, als ich neulich die Arbeit vor meinem betreuenden Professor prä- sentiert habe und dieser fast vor Lachen aus dem Stuhl gekippt ist. Für potenzielle Verletzungen oder Schäden an Rechner oder Körper übernehme ich somit keine Haftung ;) Aber zurück zum eigentlichen Thema. Das Pro- cessing – Programm dass ich geschrieben habe ist eine sehr rudimentäre Software die dem Benutzer: ■■ die prozentuale Anzeige der Sensorwerte der “Hand”, ■■ eine digitale Anzeige des Positionsmessers, Was leider einen Strich durch eine “Schnelle ■■ die Position im gedachten Koordinatensystem, Bedienung” macht ist das elend langsame Bluetoo- ■■ sowie ein einzelnes, digitales Objekt zum thmodul dass in dem NXT verbaut ist. Als geplante testen liefert. Erweiterung könnte man hier noch ein Programm schreiben dass autark auf dem Stein arbeitet und somit die Sensorwerte automatisch verarbeiten kann ohne, Martin Neundorfer | www.der9.de 15 / 16
Richtig zupacken die Befehle an den Rechner und von dort wieder zurück schicken zu müssen. Allerdings hat sich mir im Rahmen dieses Pro- jektes nicht genau erschlossen wie ich mit Processing eine Bluetoothverbindung auf baue und dann Werte via Lego-Messenge hin und her schicken kann. Aber Raum für Erweiterungen nach oben ist ja immer. Deshalb hier einmal ein Video von der Kombination Programm & Hardware: Für alle die sich mit der Materie eingehender beschäftigen möchten, habe ich außerdem noch das Programm in meinem Blog hochgeladen, dass ich in Processing geschrieben habe. Für dessen Ausführung man allerdings, das sei hier noch einmal angemerkt, die NXTcomm Library braucht. Ich gebe zu, dass die Kommentare recht dürftig ausfallen, aber jedem der in meiner Ausgangssituation ist und versucht Lego-Mindstorms mit Processing zu kombinieren, der kann sich mit Fragen gerne an mich wenden. An dieser Stelle möchte ich auch noch kurz meinem (immer fröhlichen ;)) Professor, Herrn Wölwer bedanken, der mir dieses, nunja etwas extra- vagante Projekt überhaupt erst möglich gemacht hat. Weitere Informationen: ■■ Blogartikel mit mehr Bildern, Links und Videos: http://wasmacht.der9.de/kategorie/ handeln/mindstorms/ ■■ Vimeo Channel: www.vimeo.com/der9 Martin Neundorfer | www.der9.de 16 / 16
Sie können auch lesen