Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer

Die Seite wird erstellt Maja Sturm
 
WEITER LESEN
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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
Projekt: Lego Mindstorms - Freies Projekt Prüfer: Prof. Stefan Wölwer Wintersemester 2010 / 2011 Martin Neundorfer
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