- Python 100%
| documentation | ||
| air-hockey.py | ||
| aperio.py | ||
| audio1.mp3 | ||
| audio2.mp3 | ||
| background1.png | ||
| background2.png | ||
| foreground1-color.png | ||
| foreground1.png | ||
| foreground2-color.png | ||
| foreground2.png | ||
| hand_icon.png | ||
| LICENSE | ||
| README.md | ||
| text1.txt | ||
| text2.txt | ||
Aperio
– Latein für "ich decke auf / mache sichtbar".
Aperio ist ein interaktives Medien-Objekt, bei dem anfangs verdeckte Inhalte durch einfache Handbewegungen vor einer Leinwand freigelegt werden. Eine Kamera erfasst dabei die Position der Hände und übersetzt diese in ein virtuelles Kraftfeld, das die abdeckenden Mosaik-Kacheln flüssig und physikalisch aus dem Weg räumt. So können Nutzer den "verborgenen" Hintergründe zu einem Bild freilegen. Bei erfolgreicher Freilegung erhält man Auditiv mehr Infos zu dem gezeigten Thema.
Inhaltsverzeichnis
- Aperio
Setup
Installieren einiger Python-Libraries und Ausführen des Python-Skriptes:
sudo apt update
sudo apt install python3-opencv python3-picamera2 python3-vlc
cd aperio
python3 aperio.py
ToDo
- Gehäuse neu designen.
- Anfang und Abschluss des Gehäuses mit einem kleinen Sockel
- Lautsprecher einbauen.
1. Projekt-Zeitplan & Meilensteine
Um eine zielgerichtete Bearbeitung zu gewährleisten, wurde folgender iterativer Zeitplan entwickelt:
| Meilenstein / Aufgabe | Vorraus. Dauer | Benötigte Ressourcen | Prioriät |
|---|---|---|---|
| Phase 1: Ideen | 16 Tage | - | Hoch (Voraussetzung) |
| Ideen sammeln (MindMap) | 5 Tage | - | |
| Storyboard für asgewählte Idee erstellen | 4 Tage | - | |
| Hardwareanforderungen definieren und bestellen | 7 Tage | - | |
| Phase 2: Hand-Tracking (Funktions-Prototyp) | 21 Tage | Raspberry Pi, Pi-Kamera, OpenCV | Hoch |
| Kalibrierungs-Logik (Homographie) | 1 Woche | Testbilder, Farbmarker | |
| Hand-/Farberkennung in OpenCV | 1 Wochen | Verschiedene Licht-Szenarien | |
| Physik & Abstoßung programmieren | 1 Woche | - | |
| Phase 3: Gehäuse | 16 Tage | - | Hoch |
| E27 Fassung modifizieren | 2 Tage | Glühbirne | |
| Gehäuse modellieren und drucken | 14 Tage | CAD-Software, 3D-Drucker | |
| Phase 3: Das Erlebnis (Look-Like / Experience) | 8 Tage | Bild-/Textmaterial | Mittel |
| Einbindung variabler Hintergrund-/Media-Layer | 3 Tage | Photoshop / Bildbearbeitung | |
| Animation der Kacheln (Rückkehr nach Inaktivität) | 5 Tage | - | |
| Phase 4: Feinschliff & Dokumentation | 14 Tage | Markdown, Diagramme, Kamera | Mittel |
| Tuning der Schwellwerte (Sensibilität der Hand) | 2 Tage | Testumgebung aufbauen | |
| Dokumentation | 7 Tage | - | |
| Präsentationsvorbereitung & Abschluss | 5 Tage | - |
2. Anforderungen & Schematische Bedingungen
2.1 Ausgangspunkte & Idee
Die Grundidee ist eine interaktive Leinwand (Screen/Projektion), die anfangs durch ein "Mosaik" (bzw. ein überlagerndes Bild, das in Kacheln zerschnitten wird) verdeckt ist. Eine Person interagiert mit diesem Objekt physisch auf der Leinwand / vor dem Screen:
- Die Position der Hände wird per Kamera (Picamera2) erfasst.
- Das Objekt (eine farbige Hand / ein Marker) baut ein "magnetisches, abstoßendes Kraftfeld" auf.
- Durch Wischen und Streichen weichen die abdeckenden Kacheln der Hand aus (werden vom Zentrum der Hand weggedrückt) und geben den Hintergrund sowie Texte frei.
2.2 Wie interagiert die Person?
- Die Person nähert sich dem Screen/der Leinwand.
- Bewegt der User seine Hände über das Bild, drängt er mit unsichtbarer Kraft die vordersten Bildkacheln weg.
- Experience: Die Interaktion fühlt sich magisch, flüssig und physikalisch korrekt an (aufgrund implementierter Trägheit/Reibung). Der Nutzer "gräbt" sich in ein verborgenes Narrativ (Bild).
2.3 Wichtige Bestandteile
- Das Kamera-Auge: Erfasst visuell die Bewegungen (gefiltert nach bestimmten Farben im HSV-Raum, z.B. rote Handschuhe/Marker).
- Die Kalibrierung (Homographie): Wandelt das schräge/verzerrte Kamerabild mathematisch exakt in die X-/Y-Koordinaten des hochauflösenden Screens um.
- Das Grid (Kacheln): Ein Raster aus Bildelementen (ca. 80x80 Pixel), das einen Trägheitsvektor und eine Ruheposition (Home) besitzt.
- Das Trigger-System: Schiebt der Nutzer alle Kacheln aus dem Rand des Bildes, wird der nächste Inhalt (nächstes Bild + Test) freigeschaltet.
3. Flussdiagramm der Interaktion / Benutzung
Das folgende Diagramm zeigt den Ablauf des Programms sowie die Interaktionsmöglichkeiten des Benutzers vom Anschalten bis zur Medien-Schleife:
flowchart TD
Start([Programmstart: Kamera & Fenster initialisieren]) --> Calib[Kalibrierungsmodus aktiv]
Calib --> Click[Nutzer klickt auf Screen-Ziele]
Click --> Collect[Sammle Handpositionen per Farbe]
Collect --> IsCalib{Genug Daten?}
IsCalib -- Nein --> Click
IsCalib -- Ja --> Compute[Berechne Homographie & Koordinatensystem]
Compute --> MainLoop[Hauptschleife Interaktionsmodus]
MainLoop --> ReadFrame[Kamerabild erfassen & Handkonturen filtern]
ReadFrame --> HandFound{Hand vorhanden?}
HandFound -- Ja --> CalcPhys[Physik: Berechne Abstoßungskraft zwischen Hand und Kacheln]
HandFound -- Nein --> ReturnRule{Letzte Bewegung > 10s her?}
CalcPhys --> UpdatePos[Kacheln bewegen sich Vektorberechnung]
ReturnRule -- Ja --> ReturnHome[Kacheln kehren linear zum Ursprung zurück]
ReturnRule -- Nein --> UpdatePos
ReturnHome --> UpdatePos
UpdatePos --> OutCheck{Alle Kacheln aus dem Bild?}
OutCheck -- Ja --> NextMedia[Bild-, Text- und Hintergrundwechsel]
OutCheck -- Nein --> Render[Rendere Bilder & Kacheln]
NextMedia --> DisableForce[force_out deaktivieren]
DisableForce --> Render
Render --> Show[Zeige Canvas im Fullscreen]
Show --> Inputs{Tastatureingaben}
Inputs -- q --> Ende([Programm beenden])
Inputs -- r --> ResetCalib[Kalibrierung zurücksetzen]
Inputs -- Keine --> MainLoop
ResetCalib --> Calib
Leitfragen der Handhabung:
- Wie schalte ich das Objekt an? Durch Starten des Skripts (z.B. Autostart des Raspberry Pis nach dem Booten). Das System geht sofort in den Kalibrierungsmodus.
- Was passiert, wenn es an ist? Zunächst sieht man das Kamerabild (als Maske). Ein Operator (oder der Nutzer) klickt auf die 4 Ecken (Targets) des Screens, um das Tracking auf die Leinwand auszurichten.
- Wie wähle ich eine Funktion aus? Die Hauptfunktion geschieht physisch über die Gestik der Hände vor der Kamera. Versteckte Optionen (z.B. nächstes Bild erzwingen) erfordern den Tastenbefehl
n. - Was passiert im Leerlauf? Zieht der Nutzer sich zurück (Kamera erkennt > 15 Sekunden keine Bewegung der Objekte mehr), fahren die Kacheln sanft automatisch an ihre Ursprungsposition zurück ("Return-Home"-Phase).
4. Prototypen-Ansätze
4.1 Der Funktions-Prototyp
Dieser Prototyp existiert momentan im Python Skript (aperio.py). Es nutzt vorläufig simple weiße Konturen bzw. Platzhalter-Kacheln, um den Algorithmus der Abstoßung zu testen (und verdeckte Grafiken freizulegen).
Der Fokus des Funktions-Prototypen ist nicht primär schön auszusehen. Es geht am Anfang um die Fragen:
- Gelingen die HSV-Farb-Erkennung (wird meine Hand sauber getrackt)?
- Ist die Latenz (Verzögerung) zwischen Handbewegung und Kachelbewegung in Echtzeit?
- Stimmt die Mathematik der Kollisionsabfrage, wenn man sehr schnell über die Kacheln wischt?
4.2 Der Look-Like Prototyp
In einem nächsten Schritt sollte ein Dummy-Monitor/Leinwand (z.B. aus Schaumpappe oder als Holzrahmen) gebaut werden, in dem veranschaulicht wird, wie der Nutzer letztlich vor dem Kunstobjekt steht. Dies dient als Mock-Up und vermittelt die Materialität ohne komplexe Technik dahinter integriert zu haben. Es soll helfen, formale Fragen zu klären wie:
- Wo ist die Kamera ästhetisch sinnvoll verbaut? Oben oder unten?
- Wie ist das Umgebungslicht in der finalen Ausstellung?
- Soll die Interaktion an einem tischähnlichen Flach-Grid liegen oder an einer Wand hängen?
5. Resultat & Ausblick
Das Ergebnis kombiniert Hardware, Mathematik (Computer Vision) und spielerische UI/UX zu einem organischen Entdeckungs-Medium. Die iterative Entwicklung (vom simplen Konturen-Tracking über die Ausweich-Matrix bis zur finalen Bildersetzung) ist modular organisiert, sodass sich Design-Content jederzeit unabhängig von Tracking-Code austauschen lässt.
