Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektesose18:rembrandt:plan

Rembrandt: Projektplanung

Kontakt

Theodor Simon Morawetz
Anna Wolf

Einführung

Rembrandt van Rijn, einer der bekanntesten Künstler des Barock, lebte zu einer Zeit, in der die Kunst aus den Königspalästen in den Alltag der breiten Mittelschicht Einzug fand. Das eröffnete völlig neue Möglichkeiten dafür, was Kunst bedeutet und sein kann und immer mehr Menschen wurden selbst zu Künstlern. Und jetzt, wo es möglich ist: Warum nicht auch Roboter?
Ziel unseres Rembrandt-Projektes ist es also, einen zeichnenden Roboter zu bauen. Er soll aus einer Zeichenvorrichtung und einer (evtl. beweglichen) Kamera bestehen, mit der er den zu zeichnenden Bildausschnitt fotografieren kann. Über entsprechende Prozesse der Bildbearbeitung und -analyse sollen Zeichenbefehle aus dem Bild extrahiert werden, die der Roboter dann über einen an einem beweglichen Wagen angebrachten Stift aufs Papier bringt.

Ziele und Prioritäten

Was der Roboter können muss:

  • ein Foto aufnehmen
  • einfache, geometrische Formen auf diesem Foto erkennen und die zum Zeichnen nötigen Informationen extrahieren
  • diese über die Zeichenvorrichtung aufs Papier bringen

Was der Roboter könnten soll:

  • komplexere Bilder wie Raumansichten oder Portraits von Menschen anfertigen
  • wenn möglich „menschlich“ zeichnen, d.h. Linien und Formen als Ganzes zeichnen anstatt das Bild wie im Matrixdruck Zeile für Zeile zu durchlaufen

Was nett wäre:

  • Wenn der Roboter mehrfarbig zeichnen könnte
  • Wenn die Kamera beweglich wäre, sodass der Roboter über eine Gesichtserkennung oder einen hochgehaltenen Rahmen selbst seine Motive sucht
  • Wenn der Roboter menschliches Verhalten nachahmen könnte, indem er hin und wieder so tut, als würde er seine Zeichnung mit der Realität abgleichen
  • Wenn der Roboter dem Bild eine eigene Signatur hinzufügen könnte

Was wir bewusst weglassen:

  • Autonomes Wechseln des Papieres
  • eigenständige Kamerakallibrierung durch den Roboter. Der Nutzer sollte also selbst für eine ausreichende Beleuchtung sorgen


Projektstrukturplan


1. Bildaufnahme und -bearbeitung

Der Roboter soll auf ein noch zu definierendes (beispielsweise visuelles) Signal hin mit der eingebauten Kamera eine Aufnahme machen und diese an Processing senden. Dort soll das Bild soweit bearbeitet werden, dass im nächsten Schritt die Extrahierung der Zeichenbefehle reibungslos funktioniert. Es ist noch zu recherchieren, welche Vorraussetzungen dafür nötig sind, es liegt jedoch nahe, den Kontrast zu erhöhen und die Aufnahme in ein Schwarz-Weiß-Bild umzuwandeln. Zudem sollte ein Ausschnitt gewählt werden, der sich auf das Papier übertragen lässt (Format und Seitenverhältnisse).
Im späteren Abschnitt 4. Zusätzliche Features wird noch auf eine mögliche Weiterentwicklung des Kamerasystems zur autonomen Wahl eines Bildausschnitts eingegangen.

1.1 Aufgaben

  • Neuausrichtung und ggf. neue Verkabelung der Kamera im gegebenen Grundaufbau
  • Festlegung auf ein Auslösesignal und dessen Implementierung
  • Bildbearbeitung

1.2 Materialien

  • Webcam (bereits im Grundaufbau enthalten)
  • Befestigungsmaterial, Werkzeug

1.3 Wissen

  • Schnittstelle Webcam - Processing
  • Bildbearbeitung in Processing
  • Aufbauend auf den Recherchen zu Abschnitt 2. Extrahierung der Zeichenbefehle: Welche Bildvorraussetzungen sind ideal?

1.4 Risiken

Dieser Aufgabenbereich dient lediglich der Vorbereitung auf den viel wichtigeren Teil der Extrahierung der Zeichenbefehle aus dem Bild. Als solcher wird er vorraussichtlich keine allzu große Herausforderung darstellen, da sich Funktionen zur Bildbearbeitung in Processing relativ schnell recherchieren lassen sollten. Wichtig ist, dass wir nicht zu viel Zeit in diese Aufgabe investieren, da wir eventuelle Einstellungen in der Testphase noch optimieren können.


2. Extrahieren der Zeichenbefehle

In diesem Aufgabenbereich soll eine Methode entwickelt werden, die ein bereits vorbearbeitetes Bild entgegennimmt und daraus Zeichenbefehle für den Roboter generiert. Dafür muss zunächst nach einer gründlichen Recherche der dazu in Processing implementierten Funktionen und bereits in der Literatur vorhandenen Algorithmen entschieden werden, welchem Konzept das zeichnen folgen soll.
Eine sehr primitive Variante wäre es, das Bild in eine Matrix aus Einsen und Nullen zu konvertieren, in denen Eins für einen schwarzen und Null für einen weißen Punkt steht, und dann den Zeichenwagen Zeile für Zeile über das Bild fahren zu lassen, wie einen Drucker.
Wünschenswerter, aber bei weitem komplexer wäre es, prägnante Linien (oder sogar Kurven) aus dem Bild zu extrahieren und dem Roboter (z.B. in Form von Punktkoordinaten oder Anfangs- und Endpunkten) zu übergeben. In diesem Fall wäre es möglicherweise sinnvoll, sich neben den Linien, die das Bild konstruieren auch Gedanken über mögliche Schattierungen zu machen, die zusätzlich Hell-Dunkel-Kontraste schaffen könnten.
Die Methode ist das Kernstück des Roboters. Sie nimmt das im Aufgabenabschnitt 1. Bildaufnahme und -bearbeitung enstandene Bild entgegen und übergibt anschließend die Befehle an den vom Arduino gesteuerten Zeichenwagen (Abschnitt 3. Ansteuerung des/der Stift(e)).

Aufgaben

  • Recherche und Austesten verschiedener Methoden
  • Zeichenkonzept definieren
  • Methoden für das Extrahieren der Zeichenbefehle schreiben

Materialien

keine - Computer und Testbilder sollten bereits vorhanden sein

Wissen

Es gibt bereits einige Malroboter im Robotik-Wiki. Möglicherweise finden wir daher nützliche Ansätze in deren Projekt-Dokumentationen. Ebenfalls interessant könnte der Artikel Portrait drawing by Paul the robot sein,

Risiken

Dieser Aufgabenbereich ist quasi das Gehirn des Roboters und damit für das Gelingen des Projektes unerlässlich. Gleichzeitig ist er der komplexeste und am wenigsten gewisse Teil. Zeitmangel wird hier das größte Problem sein, deshalb sollten alle anderen Aufgabenbereiche so schnell wie möglich erledigt werden. Im Notfall können wir aber immer auf die primitive Variante des Matrixdrucks zurückgreifen.


3. Ansteuerung des/der Stifte(s)

In diesem Aufgabenbereich geht es um die Umsetzung der von Processing übergebenen Zeichenbefehle. Die Hardware ist bereits so gut wie vorhanden: Als Grundaufbau möchten wir den MazeMate-Roboter aus dem WiSe 17/18 benutzen. Dieser umfasst bereits ein Brett als Unterlage, über das sich ein Wagen bewegen kann. Ähnlich wie bei einem 3D-Drucker gibt es zwei Schienenführungen, eine in x- und eine in y-Richtung, sodass jeder Punkt im Bild durch seine Koordinaten (x, y) dargestellt werden kann. Die Ansteuerung des Wagens geschieht über Stepper.
Eingebaut werden muss lediglich der Stift (bzw. die Stifte), und zwar so, dass er sich auf- und absetzen lässt.

Aufgaben

  • Verständnis des Schaltplans und der Software des MazeMates
  • Einbau des Stiftes
  • Implementierung der Ansteuerung und einfache Tests

Materialien

  • Grundaufbau (bereits vorhanden)
  • Filzstift mit möglichst breiter Spitze, ggf. Edding
  • Befestigungsmaterial, Werkzeug
  • Papier

Wissen

Projektdokumentation des MazeMates

Risiken

Da der Aufbau bereits vorhanden ist, ist es schwierig, im Nachhinein größere Änderungen zu machen. Wenn ein Apsekt des Aufbaus nicht in unser Konzept passt, ist es möglicherweise nötig, unsere Anforderungen anzupassen. Zudem besteht die Möglichkeit, dass die Winkel im Aufbau nicht genau 90° sind, oder dass ein Zahnradschritt zu ungenau für die gewünschte Auflösung ist. Wir sollten deswegen früh prüfen, ob wir die Zahnräder ersetzen können und sollten.


4. Testphase

Die Testphase schließt sich an die Aufgabenbereiche 1-3 an und optimiert die darin entwickelte Soft- bzw. Hardware. Dazu sollten wir unseren Roboter zunächst einfache Bilder oder Objekte abzeichnen lassen und uns dann an immer komplexere Gegenstände bis hin zu Personen wagen.

Aufgaben

  • Tests mit einfachen geometrischen Formen
  • evtl. Anpassung der entwickelten Methoden
  • evtl. Umbau des Zeichenwagens
  • evtl. Anpassung der Rahmenbedingungen (Beleuchtung, weißer Hintergrund, …)

Materialien

  • viel Papier
  • evtl. Werkzeug und Bauteile

Wissen

Möglicherweise müssen wir hierfür weitere Recherchen anstellen, abhängig von den vorgefundenen Fehlern.

Risiken

Je mehr Zeit für die Testphase bleibt, desto besser. Erfahrungsgemäß könnte es allerdings knapp werden. Deshalb: Durchatmen, Kopf freikriegen und den Überblick behalten. Bevor wir uns in irgendein kleines Teilproblem verennen, sollten wir lieber systematische Tests druchführen und bei Problemen auch Meinungen anderer einholen.


5. Zusätzliche Features

Im Abschnitt Ziele und Prioritäten stehen unsere zusätzlichen Wünsche für den Rembrandt-Roboter. Sie zu erfüllen, wäre nett, ist aber nicht unbedingt notwendig. Daher wird dieser Aufgabenbereich nur dann bearbeitet, wenn noch Zeit dafür ist.

Aufgaben

  • mehrfarbiges Zeichnen einbauen:
    • Zweiten Stift am Wagen anbringen
    • Zweifarbigkeit in die Methode zum Extrahieren der Zeichenbefehle einbauen
  • Gesichtserkennung und autonome Motivauswahl einbauen:
    • Mechanik für die bewegliche Kamera einbauen (links, rechts)
    • Gesichts- oder Rahmenerkennung implementieren
    • Ausrichtung der Kamera auf das ausgewählte Objekt implementieren
  • Abgleich Bild - Realität simulieren
    • Mechanik für die bewegliche Kamera einbauen (oben, unten)
    • Kamera nach Aufnahme des Fotos auf die Zeichenebene richten
    • Pausen in den Malprozess einbauen, in denen der Roboter aufschaut
  • Eigene Signatur implementieren
    • Signatur ausdenken und in Zeichenbefehle übersetzen
    • Signatur am Ende unter das Bild setzen

Materialien

Je nach Umsetzung der zusätzlichen Features:

  • Zweiten Stift
  • beweglichen Arm
  • weitere(n) Motor(en) zu Ansteuerung der Kamera
  • Kondensatoren für zusätzliche Motoren
  • Kabel

Wissen

  • ggf. Ansteuerung der Motoren
  • Bau der beweglichen Arme

Risiken

Bei großen Eingriffen sollten wir dringend sicherstellen, dass wir genug Zeit zur Verfügung haben. Sollte das zusätzliche Feature nicht rechtzeitig funktionieren, müssten wir sonst wieder alles abbauen.

Zeitplan

Unser vorläufiger Zeitplan als Gantt-Diagramm:

projektesose18/rembrandt/plan.txt · Zuletzt geändert: 2020/05/19 13:48 von d.golovko