Lichtmalerei mit Barcodes

Inspiriert von Mariane Brodiers Lichtmalereien , verwendet dieses Projekt die farbigen Lichter des Roboters Thymio, um ein Bild zu malen. Dieses wird von einer Kamera mit hohem Belichtungsmodus aufgezeichnet. Während Mariane Brodiers Zeichnungen auf einem Programm basiert waren, welches die Farben den jeweiligen Positionen des Roboters zuordnete, bewegt sich unser Roboter auf einer Linie am Boden. Die entsprechenden Farben werden mittels Barcode neben der Linie eingelesen. Mit dieser Methode werden wir Bilder malen, die aus Lichtpixeln bestehen. Das Programm ist ziemlich einfach gestaltet da die Farbprogrammierung extern, also auf dem Papier mit dem Barcode erfolgt.

Der Programmcode verfügt bereits über Funktionen zur Barcode- Entschlüsselung sowie Linienverfolgung. Thymio hat zwei Sensoren an der Unterseite. Einen davon verwendet er, um sich auf der Graustufen- Linie entlang zu bewegen, und mithilfe des anderen Sensors auf der linken Seite werden die Barcodes eingelesen. Jeder Barcode sendet einen anderen Farbcode an die LED von Thymio; die Farbe wird geändert und Thymio bewegt sich vorwärts.

Beispiele von Resultaten

mario.jpg
zombie.jpg
chat.jpg
crabe.jpg
pacman.jpg

Code

Diese Aseba-Datei .aesl enthält den Source-Code, um dieses Verhalten zu erzeugen.

Das Thymio-Programm, das für das Video verwendet wurde, hat folgende Funktionen:

  • Starte die Linienverfolgung, wenn der Vorwärts-Knopf gedrückt wird
  • Stoppe die Linienverfolgung, wenn der Knopf in der Mitte gedrückt wird
  • Während der Linienverfolgung mit Sensor Nummer 1 sucht Sensor Nummer 2 nach Barcodes entlang der Linie, analysiert diese und ändert die Farbe entsprechend.

Variablen

  • running: Zeigt an, ob Thymio im Fahrmodus ist (1) oder auf Pause (0)
  • counter: Zählt, wie viel Zeit verstrichen ist, proportional zu den gelesenen Barcode-Bits
  • state: Lesen oder Warten auf die Synchronisation (Zustände), bestimmt Thymios Verhalten auf der Linie
  • intensityDiff: Differenz zwischen den gemessenen Graustufen der Linie und dem erwarteten Wert

Constants

constantes.png

In diesem Code haben wir sechs verschiedene Konstanten verwendet:

  • S_WAIT_SYNC: Ändert Thymios Zustand zu "Barcodes suchen".
  • S_READING: Ändert Thymios Zustand zu "Barcodes entschlüsseln".
  • INTERVAL: Ändert die Wartezeit zwischen den Blocks eines Barcodes. Dieser Wert sollte der Geschwindigkeit des Roboters angepasst werden (Je langsamer, desto länger sollte der Roboter warten, bis der nächste Bock aufgezeichnet wird)
  • BW_LIMIT: Schwelle, die definiert, ob ein Block schwarz oder weiss ist.
  • ON: LED auf (32)
  • OFF: LED zu (0)

Start/Stop (Bedienungsanleitung)

Der Vorwärts-Knopf startet den Fahrmodus (running=1), und der Zustand (state) wird zu S_WAIT_SYNC geändert: Thymio sucht nach einer Linie, um seinen ersten Barcode zu lesen.Der Knopf in der Mitte stoppt Thymio: running wird auf 0 geändert, alle Motoren werden gestoppt und die LEDs werden ausgeschaltet. Der Wert Weiss (white) wird auch zu 0 geändert.

Linienverfolgung

coding.jpg

Thymio verfolgt die Linie mit seinem rechten Sensor an der Unterseite. Die Linie ist ungefähr 3 cm breit und seine Farben reichen von schwarz auf der rechten Seite bis weiss auf der linken Seite, und dazwischen alle Graustufen. Es wird ein Mittelwert gewählt, der verfolgt werden soll und der Weg des Roboters wird so gesteuert, dass der Graustufen-Wert möglichst gleich bleibt. Die Steuerung wird durch einen Graustufen-Gradient kontrolliert: Jede Abweichung von intensityDiff unter 170 führt zu einer leichten Korrektur, proportional zur Abweichung, und natürlich in die entsprechende Richtung.
Wird die Abweichung zu gross, dreht der Roboter im Kreis, um den Weg wiederzufinden.

Barcode-Entschlüsselung

bar_code_reading.jpg

Die Farben, welche Thymio anzeigt, werden durch die externen Barcodes bestimmt, die sich entlang von Thymios Linie befinden. Der Farbcode besteht aus 4 Bits: Ein Sync-Bit (immer schwarz, um den Beginn des Codes zu markieren), dann 3 Bits, welche die Farbe in RGB definieren.
Während Thymio sich auf der Graustufenlinie vorwärts bewegt, wartet er auf das erste Sync-Bit des Barcodes, das sich vom weissen Hintergrund abhebt. Dann liest er die RGB-Bits und ändert die LED zu der entsprechenden Farbe. Eine weisse Linie bedeutet 1 und eine schwarze Linie bedeutet 0. Nachdem Thymio den Barcode gelesen hat, besitzt er den binären Code für die RGB-LED. Dieser Code schreibt sich auch als c2c1c0

Vorprogrammierte Farben

Die Farben für ein spezifisches Bild werden mit folgendem Code programmiert:

Dezimalcode Binärcode r g b Farbe
0 000 32 00 00 rot
1 001 00 00 32 blau
2 010 00 00 00 x
3 011 25 20 00 gelb
4 100 07 05 01 pink
5 101 32 20 02 beige
6 110 32 11 00 orange
7 111 20 20 20 violett

Man könnte auch eine natürlichere Codierung der Farben verwenden, indem jede LED entweder aus oder an ist (ON = 32 oder OFF = 0). Das gibt ein gutes Spektrum der Grundfarben, falls man keine differenzierten Farben verwenden will.

Dezimalcode Binärcode r g b Farbe
0 000 x x x x
1 001 x x B blau
2 010 x G x grün
3 011 x G B hellblau
4 100 R x x rot
5 101 R x B fuchsia
6 110 R G x gelb
7 111 R G B weiss

Lichtmalereien

Lichtmalereien sind eine Fotografische Technik, die verwendet wird, um den „Licht-Weg“ des Roboters aufzuzeichnen. Es ist eine lange Belichtungszeit nötig, um das gesamte Muster aufzuzeichnen.
Lichtmalereien können mithilfe der manuellen Einstellungen einer Digitalkamera erstellt werden, oder mit einer Videokamera und der entsprechenden Kompositionssoftware. Die Kamera sollte dabei auf einem Stativ fixiert werden.

appareil_photo.jpg

Kameraeinstellungen

Ihre Kamera muss über manuelle Belichtungseinstellungen verfügen. Weil 30 Sekunden nicht reichen werden um Ihr gesamtes Bild aufzuzeichnen, müssen Sie in den „Bulb-Setting“ Ihrer Kamera (Lichtkolben-Einstellung) die entsprechenden Änderungen vornehmen, damit das ganze Licht von Thymios Weg aufgezeichnet werden kann. Nach Möglichkeit sollte der Auslöser per Kabel oder Selbstauslöser betätigt werden, um Erschütterungen der Kamera zu verhindern.

Wegeinstellungen

Thymio_en_piste.jpg

Um die im Video vorgeführten 8-Bit-Bilder zu machen, haben wir mehrere parallel angeordnete und durch Halbkreise verbundene Linien auf Blätter gedruckt. Weil der Roboter jedes Mal die LED ausschaltet wenn er ein Sync-Bit liest, können Sie entweder jeden Pixel einzeln codieren wie in unserem *Katzen-Bild, oder durchgehende Linien erstellen, wie im *Mario-Bild, indem nur der jeweils erste und letzte Pixel einer Farbe codiert wird.
Wenn Sie die Blätter zusammenkleben sollten Sie darauf achten, dass keine Lücken entstehen, welche die Sensoren falsch interpretieren könnten. Es empfiehlt sich, die Blätter leicht zu überlappen, aber so dass Thymio nicht stecken bleibt. Am besten beklebt man die Blattränder mit durchsichtigem Klebeband.

Hier finden Sie verschiedene Bahnen:

Tipps

  • Damit die Batterieleuchte keinen grünen Strich auf Ihrem Bild hinterlässt, sollten Sie diese mit einem undurchsichtigen Klebeband abkleben
  • Unsere Bilder haben wir mit mehreren Thymios gemacht, aber man könnte sie auch mit einem einzigen Roboter realisieren, indem man bei der Linie einige Anpassungen vornimmt.
  • Sie können auch einfarbige Bilder zeichnen, indem Sie Ihr Bild nur in einer Farbe codieren und die Blätter so anordnen, dass Thymio nur auf dem Rand der Figur fährt.
  • Ideen für ein Motiv finden Sie in Icons, zum Beispiel von alten Videogames.

Grenzen

bar_code_sync.jpg

Die Länge der Barcodes sollte an Thymios Geschwindigkeit und Messfrequenz angepasst werden. Da die Sensoren alle 100ms eine Messung vornehmen, gibt es eine minimale Dicke der Barcodes, die von der Geschwindigkeit abhängt.
Mit den RGB-Kombinationen von 0 bis 32 für alle 3 LED können mehrere tausend Farbkombinationen realisiert werden, aber die Länge der Barcodes sollte möglichst kurz bleiben, um die Pixel quadratisch zu halten. Eine andere Möglichkeit wäre, Barcodes in Graustufen zu verwenden statt den Binärwerten.

Thymios Logo

Am Ende des Videos können Sie sehen, wie das Logo von mehreren Robotern gezeichnet wird. Um das Bild aufzunehmen, wurden 13 Thymios mit einem vorprogrammierten Pfad losgeschickt und ferngesteuert.

avant-apres.png
Logo_thymio_trainee.jpg

Zögern Sie nicht, Ihre eigenen Kreationen dieser Seite hinzuzufügen!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License