Canvas

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche
Canvas in Aktion

Canvas [1] ist ein Interaktion-Projekt aus dem Wintersemester 2017/18. Der User kann mittels präparierter Spraydose eine Zeichnung auf eine projizierte Oberfläche erstellen.

Idee

Das Kreieren von Graffiti in der realen Welt ist ein Erlebnis für alle Sinne.

Doch hohe Kosten, unerwünschter Geruch sowie eingeschränkte und gebundene Locations schränken diese Freude ein. Deshalb wünschten wir uns ein Tool, das es uns erlaubt, digitale Graffitis zu erzeugen. Dabei sollte sich die interaktive Realisierung jedoch so wenig wie möglich von der reellen Technik unterscheiden. Erweiterungen wie Sprühgeräusche und Änderung des Sprühverhaltens bei Neigung des Werkzeugs waren hierfür nur einige unserer zahlreichen Ideen.

Herangehensweise

Infrarotlicht

Zuerst musste ein geeignetes Werkzeug für die Steuerung unseres Systems gefunden werden.

Der Gedanke Wii-Fernbedienungen als Spraydosen-Ersatz zu benutzen, wurde aufgrund seiner unpassenden Handhabung (waagrechte Haltung) und dem entstehendem komplexen Aufbau der Systemumgebung (Sensorenanbringung) fallen gelassen. Praktikabler war für uns der Gebrauch von Infrarotlicht. Dieses kann anhand einer Infrarot-Kamera erkannt werden, danach binarisiert und weiterverarbeitet werden.Anschließend wird das entsprechende “Graffiti-Bild” auf die Wand projiziert, sodass ein virtuelles "sprühen" möglich ist, und der Kreativität keine Grenzen mehr gesetzt sind.

Auf dem Foto ist eine leuchtende Infrarot-LED zu erkennen, die zwar für das menschliche Auge nicht zu funktionieren scheint, über handelsübliche Handykameras jedoch überprüft werden kann.


Aufbau

Der Aufbau ist schnell erklärt.

Aufbau

Eine Person steht vor der Wand die “besprüht” werden soll. In der Hand hält er die entsprechende Sprühdose (Infrarot-Diode als Controller umgebaut).

Eine Infrarot-Kamera steht ca. 2m vor dieser Wand und nimmt den entsprechenden Bereich auf. Durch entsprechender Bearbeitung /Binarisierung am Computer wird ermittelt wo sich die Position der Diode und somit der “Malbereich” befindet.

Diese Daten werden an ein weiteren Computer geschickt, der diese Weiterverarbeitet. Also eine eigene Sprüh-Physik, Farbauswahl etc. wird auf diesem simuliert. Dieser projiziert mit einem angeschlossenen Kurz-Strecken-Beamer, der 10-20cm vor der Wand am Boden steht, auf die Leinwand das virtuell gesprayte Bild.



Software

[2]

Input

Abnahme des Bildmaterials von IDS Ethernetkamera mit IR-Filter (auch über analoge Schnittstelle mit z. B. USB-Videograbber realisierbar) und instanzierung eines ofVideoGrabber im Input-Programms. Dieser nimmt das Bild ab und aktualisiert es.

Cam Update

Das Bild wird dann nochmals mittels Umwandlung in Grauwertbild und Filterung durch IR-Filter in Binärbild umgesetzt, auf welchem nur noch IR-LED erkennbar ist.

Das Bild wird nun mittels Contour-Finder auf Blobs (unser Lichtpunkt) untersucht. Der Schwellwert ermöglicht hier das (weitgehende) Eliminieren von Störeinflüssen.

Contour Finder

Zuvor fand eine Normalisierung auf einen Wertebereich zwischen 0-1 statt. Das muss zum einen nach der Übermittlung der Daten wieder auf die Output-Auflösung aufskaliert werden, jedoch auch hier auf die Bildauflösung um die gesuchte Fläche zu finden.

Die Variablen des Schwellwerts, sowie minBlob (minimale Fläche des Blobs) und maxBlob (maximale Fläche des Blobs) sind mit Schiebereglern in der GUI verknüpft um die Werte bei laufedem Betrieb manipulieren zu können (ansonsten müsste jedes mal das Programm neu gestartet werden, sollte man den korrekten Flächenwert nicht getroffen haben).

Abschließend findet eine Mittelung des erkannten Blobs (in unserem Fall ein einzelner, jedoch mehrere möglich) statt um die Koordinaten dieses Punktes an das Output-Programm weitergeben zu können.

Position

Position ist hier die Position unseres Blobs (Lichtpunkts) auf unserer Aufnahme.

Diese Position wird abschließend mittels OSC an den Empfänger weitergeleitet.

OSC Message

Hierzu wird eine neue OscMessage konfiguriert und der Position werden zuvor die Properties x- und y-Koordinate entnommen um diese entsprechend getrennt weiterzugeben.

Output

Setup

Um die vom INPUT erhaltenen OSC-Daten weiterverarbeiten zu können, wurde zunächst eine while-Schleife erstellt. Diese bewirkt, dass nur Daten empfangen und weiterverarbeitet werden, wenn der Trigger betätigt wird. Mit der darauf folgenden if-Bedingung, können die übermittelten OSC-Adressen für den OUTPUT verwendet werden.

Message Sender

Nun kann mittels der draw-Methode der Farbpunkt samt Sprüheffekt erzeugt werden. Hierzu wird zunächst die Größe des Sprühkopfs/Farbpunkts festgelegt (maxRadius =). Anschließend müssen dem Farbpunkt weitere kleine Farbpunkte hinzugefügt werden („radiusStepSize =“), welche sich in einem bestimmten Abstand zum Farbpunkt Zentrum verteilen sollen („maxOffsetDistance =“). Der Alpha Wert („alpha =“) fügt unserem Farbpunkt eine gewisse Transparenz hinzu, so dass die Farben beim „Sprayen“ durch Überlagerung kräftiger werden.

Sprüh Effekt

Damit nun ein realitätsnaher Sprüheffekt entsteht, wird mit den obigen Werten eine for-Schleife erstellt, welche die Anzahl der Kreise und deren zunehmende Transparenz verringert.

Für die Farbauswahl nutzen wir einen Color-Slider. Der Farb Wertebereich der einzelnen Slider wird in der Setup - Methode erstellt. Um bestimmte Farben nutzen zu können, mussten wir diese zunächst bestimmen (ofColor). (Voraussetzung für den Color-Slider ist das GUI-AddOn) Zum Schluss müssen wir unsere oscX und oscY Werte an den ofDrawCircle-Befehl übermitteln, damit wir mit unserem Controller Sprayen können.

Erstellen eines Screenshots:

Screenshot erstellen

Zusätzliche Tastenbelegungen lassen sich mit einer if-Bedingung in den jeweiligen KeyEvents erstellen.



Hardware

Aufbau Spraydose

Das Projekt funktioniert so einwandfrei. Die Infrarotdiode wird erkannt, und dort wo sie leuchtet, erscheint an der Wand die Farbe. Um jedoch ein realitätsnahes Gefühl zu vermitteln ein Graffiti zu sprühen, haben wir die Diode in einen eigenen Controller umgebaut. Dabei haben war neben der Optik vor allem die Funktionalität am wichtigsten.

Als erstes wurde die Stromzufuhr auf eine 5V Batterie festgelegt. Diese haben wir mit der Diode verkabelt. Dabei musste der entsprechende Widerstand berechnet werden. (Infrarot-Diode: Durchlassspannung: 1,35V , Stromstärke: 100mA => Widerstand: 39Ohm) Diesen Stromkreis haben wir in eine Sprühdose eingebaut.

Nach einigen Tests, konnten wir feststellen, dass das Tracking der Diode, nicht optimal nach unseren Vorstellung verlief.

Eines der Problem war, dass die Diode ständig am leuchten war. Sprich, wenn man nicht “sprühen” wollte, um an einer anderen Position zu “sprühen”, mussten wir manuell mit der Hand die Diode zuhalten, sodass die Kamera sie nicht erkennt. Dies kam uns recht umständlich vor. Und das “Sprühgefühl” würde so nicht gut rüberkommen. Deshalb haben wir die Spraycap an der Sprühdose so umgebaut, dass sie als An-/ und Ausschalter der Diode agiert. Durch den Tastendruck auf den Schalter wird der Stromkreis geschlossen und die LED leuchtet. Wenn man den Schalter loslässt, wird durch eine Feder dieser hochgedrückt - der Stromkreis ist wieder unterbrochen - die LED ist aus. So wird eine echte Sprühdose simuliert (drücken = sprühen).

Um ein fehlerfreies Tracking vorzubeugen, haben wir einen Halterungsring an der Dose montiert, der als Halter der Infrarot-Diode dient. So wurden ein weiteres Probleme behoben. Die LED hat nämlich nur einen sehr kleinen Strahlungswinkel (ab bestimmten Winkel nicht gut, bis garnicht erkennbar). Die Halterung dient also als Unterstützung, zielgerichteter die Diode in die Kamera zu halten. Durch den Loch im Ring wird der Zeigefinger durchgesteckt um die Spraycap zu betätigen. So konnten wir sicherstellen, dass keine Finger im Weg sind, die das Tracking stören könnten.

Schlussendlich haben wir noch die Dose mit unserm Projektnamen “Canvas” optisch verschönert, sodass unser Controller fertig und einsatzbereit zur Interaktion ist.



Resultat

Wir konnten die Ziele, die gesetzt wurden, erreichen. Dennoch gibt es einzelne Bereiche, die verbessert werden können. Zum einen hat die LED- Diode einen geringen Strahlungswinkel. Aus diesem Grund kann die Kamera das Infrarot Licht nur aus bestimmten Winkeln erkennen. Zum anderen wirkt sich das Tageslicht als ein Störfaktor aus, da das natürliche Licht auch von der Infrarotkamera erkannt wird. Außerdem ist zu beachten, dass der eigene Körper nicht zwischen Diode und Kamera stehen sollte, da sonst der Schattenwurf auf der Wand, welcher durch den Beamer erzeugt wird, zu groß ist. Des Weiteren müssen einige manuelle Einstellungen am Laptop durchgeführt werden, wie beispielsweise die Kalibrierung des Bildes, die Steuerung und ebenso die Farbauswahl.

Zusammenfassend kann jedoch festgehalten werden, dass sich ein positives Fazit aus unserem Canvas-Projekt bezüglich der Handhabung und Durchführung ziehen lässt, da die Probleme lediglich in wenigen Details liegen.

Nachweise

  1. Bilder Verweis zu den oben verwendeten Bildern
  2. Code Verweis zum Quelltext