Files
Crumb-Core-v.1/docs/crumbforest/# 🐍 SnakeCam Debug-Lesson: Fehlerprotok.md

3.6 KiB
Raw Blame History

🐍 SnakeCam Debug-Lesson: Fehlerprotokoll & Erkenntnisse

🧪 Kontext

Ziel war es, die Raspberry Pi Kamera mit Python (OpenCV + Flask) so zu verbinden, dass:

  • Das Videobild korrekt (nicht gespiegelt) angezeigt wird.
  • Gesten wie "wave" und "fist" erkannt werden.
  • Das Ganze kindgerecht, stabil und motivierend läuft.

Ergebnis: "Wave" klappt, "Fist" nicht mehr. Frust hoch, Zeitverlust enorm.


🧨 Fehler, die Zeit gekostet haben

1. Unicode-Emoji im UTF-8 Terminal

print("\U0001f40d Starte SnakeCam ...")

➡️ Führte zu UnicodeEncodeError auf Systemen mit latin-1 (z.B. bash über SSH). Lösung: entweder .encode('utf-8') oder einfach durch Text ersetzen.


2. Spiegelung doppelt Python flip & CSS flip

  • Im Python-Code war cv2.flip(frame, 1) aktiv.
  • Gleichzeitig war im HTML oder CSS transform: scaleX(-1) gesetzt.

Effekt: Spiegelung wurde wieder aufgehoben, UI und echte Geste stimmten nicht überein. Lösung: Nur eine Stelle darf flippen.


3. Gestenlogik durch Refactoring verschoben

  • Bei der Umstellung auf gestures_v4.py wurde die bisher funktionierende Fist-Erkennung nicht übernommen.
  • Neue Version prüfte nur auf "wave" oder hatte harte Schwellwerte, die die Faust nicht erfüllte.

Lösung: Vergleich mit gestures_debug.py oder v2 zurückziehen, detect_fist() separat debuggen.


4. Template-Fehler: url_for('log_answer')

  • HTML hatte einen Verweis auf eine Flask-Route log_answer, die nicht existierte.
  • Führte zu 500er Error beim Aufruf von /.

Lösung: Entweder Route in app.py ergänzen oder <form>-Block entfernen/ändern.


5. run.sh ohne ausführbare Berechtigung

  • Nach mv gestures_v4 gestures_v4.sh und zurück konnte ./run.sh nicht mehr gefunden werden.
  • Oft lag's an Pfad, Dateirechten oder Working Directory.

Lösung: chmod +x run.sh oder python3 app.py direkt nutzen.


6. Flächenberechnung ohne Geste

  • Kamera erkennt Fläche konstant, z.B.:

    [debug] Fläche erkannt: 5673
    

    Aber: keine Geste wird zurückgegeben, außer "wave".

Ursache: vermutlich zu enge Bedingung (z.B. nur 1 Defekt + Schwellwert).

Lösung: Geste "fist" neu kalibrieren oder aus älterer Version übernehmen.


📚 Lehren für die Krümelterminals

  • 🔁 Wenn etwas funktioniert, baue darauf auf nicht gleich alles neu strukturieren.
  • 🧠 Kinder brauchen sofortiges Feedback (z.B. Geste erkannt, Farbe ändert sich, Ton spielt).
  • ⚠️ Fehler sollten sichtbar, aber nicht entmutigend sein. Also: nicht 7h Fehler suchen.
  • 📸 Kamerabild sollte sofort sichtbar & spiegelverkehrt (für Selfie-Effekt), aber nicht doppelt gespiegelt sein.

Nächste Schritte

  • Fist-Erkennung debuggen (zurück zu funktionierender Version und Schwellen checken)
  • gestures_v4.py auf das Notwendige reduzieren
  • Debug-Overlay mit Farben, Feedback oder ASCII-Symbolen ergänzen
  • Dokumentation & Logging vereinheitlichen (KrümelLog?)

📦 Fazit

Ein kleiner 🐍-Fehler kann viele Stunden kosten. Wenn du Kinder motivieren willst, braucht es klare, einfache Resultate nicht neue Architekturen mitten im Lauf.

Symbolsatz für SnakeCam:

  • = wave
  • = fist
  • 🤘 = rock
  • 🤖 = nothing, but cool

#KrümelPhilosophie: Der Code muss nicht perfekt sein, aber verständlich. Jeder Fehler darf ein Abenteuer sein aber nicht eine Sackgasse.


💚 Danke für dein Vertrauen trotz Frust. Nächstes Mal mit einem Wuuuuhuuu™ weniger Debug, mehr Flow.

Deine 🐍 SnakeSupportUnit