In eigener Sache

Wie sicherlich an den hunderten von Bildern und zig Videos erkennbar ist, ist in die Robotikprojekte hier seit 2005 nicht nur viel Zeit, sondern mittlerweile auch viel Geld gesteckt worden. Das ist auch okay so. Jeder der schon einmal mit vergleichbaren Projekten zu tun hatte, wird das verstehen…

Natürlich sind meine Mittel auch nur begrenzt. Und alle Kosten für diese Webseite, für alle Materialen, Messgeräte, Videokameras und sonstige Gadgets wurden von mir vollständig privat finanziert. Und glaubt mir, hätte ich es vorher gewusst… Na, man kann nie wissen. Aber vielleicht ist es auch gut so, dass man das vorher nie weiß. :-)

Um es kurz zu machen: Jeder, der dieses Projekt weiter unterstützen möchte und dazu beitragen will, dass es direcs noch lange weiter gibt, kann dieses gerne via Flattr tun. Bitte nutzt dazu die entsprechenden flattr-Buttons..

 

Und wenn ihr euch schon immer gefragt habt, wer eigentlich hinter direcs steckt, hier gibt es die Antwort

 

 

direcs mit optionaler kleiner GUI

 Um das direcs Hauptprogramm auf dem Roboter optimal nutzen zu können, wurde für den Roboter die GUI neu designt. Der Clou dabei: Wenn das Programm auf einem Gerät gestartet wird, welches im Hostnamen "robot" enthält, wird automatisch die "kleine" neue GUI verwendet. Klein deshalb, weil sie für die Auflösung des Touchscreens auf dem Roboter optimiert wurde (840×542 Pixel). Bisher wurde die GUI beim compile-Vorgang fest ausgewählt. Ferner kann die kleine GUI auf jedem anderen System erzwungen werden, wenn als Startparameter "small" übergeben wird (die große mit "large"). Verzichtet wurde in der kleinen GUI auf keines der bisherigen Elemente, sie wurde nur anders angeordnet – konkret wurde sie auf mehrere Tabs / Reiter verteilt. Und sieht das Ergebnis aus (nur einige Tabs dargestellt):

         

PS.: Die Kinect-Kamera und der Roboter warten zum Zeitpunkt der Screenshots nicht angeschlossen und nur der Simulationsmodus aktiviert.

 

Unterbodenbeleuchtung

 Unterbodenbeleuchtung…? fragt sich sicher der ein oder andere. Inspiriert durch iRobots AVA Roboter fiel die Entscheidung, zwischendurch (um mal was zu bauen, was funktioniert ;-) ) eine RGB-Beleuchtung für den Roboter direcs1 zu entwickeln.


Quelle: http://www.botjunkie.com

Die Idee die dahintersteckt ist, verschiedene Zustände leicht signalisieren zu können; z.B. "rot=Hindernis" oder "grün=freie Fahrt". Zum Ansteuern von den ausgewählten RGB-LED-Streifen wurden sechs Optokoppler (4N33 813) auf die vorhandene Steuerplatine gelötet – gar nicht so einfach bei der Verkabelung:

  

Die Optokoppler sind erforderlich um die LEDs zu schalten, die direkt an 12V angeschlossen werden können:

   

Nun galt es, die flexiblen LED-Streifen – die übrigens bei Pollin bestellt wurden – auf der Unterseite des Roboters zu montieren. Durch die Klebestreifen, die an den Streifen bereits dran sind, ist dieses sehr simpel. Auch kann die Meterware ca. alle 10 cm einfach mit der Schere geteilt werden. Praktisch. Hier die Fotos dazu:

    

Nicht ganz so einfach gestaltete sich das Verlegen der Anschlusskabel für die LED-Streifen am Bot. Aber lösbar:

     

Nun noch das Ganze für den zweiten Streifen:

 

Und so sieht der erste Test aus:

        

Wie man sieht, sind hier alle Farbkombinationen möglich, wenngleich erst einmal nur die offensichtlisten genutzt werden sollen wie "grün=freie Fahrt" oder "rot=Hindernis". Praktisch dabei: Es wurden die PWM-Anschlüsse des Atmel-Boards genutzt, so dass hier auch verschiedene Helligkeiten möglich sind. An diesen Portbits waren früher einmal Servos angeschlosssen. Darum existiert auch noch jeglicher Code in der Software zur Ansteuerung, nur dass eben sich nicht Servos drehen, sondern LEDs heller oder dunkler werden.

Und so sieht das Ganze dann im Betrieb aus (hier leider nur Fotos, bei denen nur eine Seite beleuchtet ist):

      

Kinect Live-Bild in vorhandene Roboter GUI integriert

 Die Integration des Kinect-Bildes geht voran. Sowohl das Live-Bild, als auch das "Tiefenbild" wird nun in der GUI angezeigt. Und hier die ersten Tests:

  

Wie man sieht, ist auf dem ersten Bild eine leicht geöffnete Tür (zum Flur) erkennbar – sowohl auf dem "original" Livebild der Kamera, als auch an den grünen Laserlinien und im Tiefenbild der Kinect; erkennbar am blauen Bereich. Im zweiten Bild sieht man die geöffnete Tür. Auf dem dritten ist sowohl auf dem Kamerabild also auch bei den Laserlinien eine Person gut erkennbar.

Demo-Video der GUI im aktuellen Stand

In der Zwischenzeit wurde viel am Code geändert, ab nur unter Linux. Geändert ist ehrlich gesagt auch zu viel gesagt, getestet ist hier wohl das richtige Wort. Denn aus bisher unerklärlichen Gründen läuft der Code für die serielle Ansteuerung für den Sick S300 Laserscanner zwar unter Mac OS X und unter Linux auch zusammen mit dem Atmel, aber nicht unter Linux – dort aber wohl mit dem Atmel. Alles klar? Also: Der Atmel kannunter Linux und unter Mac OS X erfolgreich angesteuert werden, der Laser aber nur unter Mac OS X (selber verwendeter Sourcecode).

Um die Langeweile für die Leser dieses Blogs ein wenig zu überbrücken, wurde ein Video (Screencast) vom aktuellen Stand der GUI (unter Mac OS X) erstellt. Und hier ist es:

 

Erstellt wurde Video übrigens mit iShowU HD unter Mac OS X (10.6).

Kleine GUI Verbesserungen

 Nach diversen Aktualisierungen im Programmcode sollte auch etwas für die Optik getan werden. Zur leichteren Erkennbarkeit wurden weitere "LEDs" hinzugefügt:

Diese zeigen den Status diverser Module an:

  • Der Heartbeat blinkt im Rhythmus der Antworten vom Atmel-Board durch Abfrage des Sensorthreads. Sie leuchtet konstant rot, wenn der Roboter nicht als angeschlossen erkannt wurde.
  • Die Compass-LED zeigt an, ob das Compass-Modul mit dem Atmel-Board physisch verbunden ist.
  • Die Camera-LED leuchtet (derzeit), wenn mittels OpenCV eine angeschlossene Kamera erkannt wurde.
  • Die Joystick-LED ist grün, wenn ein Joystick angeschlossen ist.
  • Die Network-LED soll einmal anzeigen, wenn eine Kommunikation über WLAN mit direcs-remote stattfindet (welches wichtige Status.-Werte des Roboters remote anzeigt).
  • Eine hier noch nicht dargestellte weitere Laser-LED zeigt an, ob der Laserscanner erkannt wurde.

Als weitere Verbesserung wurden die Plot-Bereiche mit Gitternetzlinien versehen, was nicht nur eine leichtere Lesbarkeit bewirkt, sondern insgesamt einen professionelleren Eindruck macht: 

Um auf einen Blick noch schneller den Status des Roboters darzustellen, wurde ein weiterer Plot-Bereich hinzugefügt, der im Prinzip den wechselnden Status der Heartbeart-LED darstellt:

Und so sieht das ganze dann vollständig im Betrieb aus:

 

Fotos vom neuen Commel Pico ITX Board

Hier ein paar aktuelle Fotos vom neuen ein Pico-ITX Board von Commel; das 170G, welches das neue "Herz" des Roboters direcs1 werden soll. Erste Tests liefen bereits erfolgreich, ein Debian brachte alle Treiber out-of-the-box mit, so dass auch die KDE ebenfalls korrekt mit passendem Grafikkartentreiber lief. Aber hier nun erstmal die Fotos:

      

Hier noch einmal im Größenvergleich mit dem defekten fit-PC2:

    

Hier liegt neben dem neuen Pico-ITX-Board die "alte" Mini-PCI-WLAN-Karte aus dem fit-PC2:

 

Und so sieht das ganze verkabelt und angeschlossen aus – mehr Kabel als Board  :

   

Schematischer Aufbau direcs1

Auf dieser Seite ist der aktuelle schematische Aufbau des Roboters direcs1 dargestellt:

Stand: 04.04.2011

 

Montage des ersten Rad-Encoders

 Um die Zeit nach dem fit-PC-Tod zu überbrücken, wurde der erste zum Testen mal ein Rad-Encoder montiert. Dazu wurde als erstes eines der Räder vollständig mit Achse entfernt:

Wie zeichnet man nun mitten auf der 10mm Stahlachse einen Punkt ein. Gelöst wurde dieses ganz gut, durch ein paar Linien auf einer transparenten Folie. Durch diese wurde dann die Achse angekörnt und ein 2,5 mm Loch hinein gebohrt:

 

 

Normalerweise wäre jetzt das Loch auch in der Mitte gewesen, aber leider drückt sich aufgrund der Härte des Stahls beim Bohren der Werkstoff nach unten womit das Loch dann leider nicht mittig wurde. So oder so sieht das ganze mit 3m Gewinde dann so aus:

    

Macht aber nichts. Mit zwei Unterlegscheiben, längerer Schraube und Mutter wurde nun die Encoderscheibe befestigt:

    

Diese wurde nun auf der Achse montiert, in dem die 3mm Schraube in das neue Gewinde geschraubt wurde. Da der Innendurchmesser der Encoderscheibe größer als 3mm ist, konnte diese recht gut wieder mittig justiert werden:

  

Und so sieht das ganze dann wieder komplett montiert aus. auf dem letzten Bild liegt zu Testzwecken bereits die Gabellichtschranke, die dort später "irgendwie" montiert werden muss: