feat: expanded and added more tasks

This commit is contained in:
2026-07-08 23:33:26 +02:00
parent 8fdf69e11f
commit d0b776485a
97 changed files with 3121 additions and 427 deletions
-43
View File
@@ -1,43 +0,0 @@
# Aufgabe 01: Einen Servo bewegen
## Ziel
Du lernst, einen Servo-Motor gezielt auf Winkelpositionen zu bewegen.
## Aufgabe
Baue ein Programm:
```text
$ servo --angle 90
```
Der Servo soll auf 90 Grad fahren.
## Hardware-Ideen
- Raspberry Pi GPIO
- PCA9685 Servo-Controller
- Arduino/RP2040 als Servo-Controller mit serieller Schnittstelle
## Lernpunkte
- PWM
- Servo-Winkel
- Stromversorgung für Servos
- Warum Servos nicht direkt vom Pi versorgt werden sollten
- Jitter und Kalibrierung
## Akzeptanzkriterien
- Servo fährt auf 0, 90 und 180 Grad.
- Winkelgrenzen sind konfigurierbar.
- Falsche Winkel werden abgelehnt.
## Erweiterung
Baue eine sanfte Bewegung:
```text
$ servo --from 20 --to 120 --duration 2s
```
@@ -0,0 +1,39 @@
# Aufgabe 01: Servo-Grundlagen verstehen
## Ziel
Du steuerst einen einzelnen Servo sicher in wenige Testpositionen.
## Warum ist das wichtig?
Der Roboterkopf bewegt reale Mechanik; Fehler können Bauteile beschädigen.
## Voraussetzungen
- Servo
- geeignete Stromversorgung
- Raspberry Pi/PCA9685 oder Simulator
## Theorie
Servos werden über PWM-Signale positioniert. Sie ziehen unter Last deutlich mehr Strom als ein GPIO liefern kann.
## Aufgabe
Baue einen minimalen Test, der Mitte, links und rechts anfährt oder im Simulator ausgibt.
## Akzeptanzkriterien
- Servo bewegt sich kontrolliert oder Simulation zeigt Werte.
- Stromversorgung ist dokumentiert.
- Winkel bleiben in sicherem Bereich.
## Erweiterungen
- Miss Stromaufnahme unter Last, falls möglich.
## Reflexionsfragen
- Warum darf ein Servo nicht direkt aus jedem Pin versorgt werden?
- Was ist die Neutralposition?
- Welche Bewegung wäre mechanisch riskant?
-42
View File
@@ -1,42 +0,0 @@
# Aufgabe 02: Pan-Tilt-Kopf bauen
## Ziel
Du baust einen einfachen Roboterkopf mit zwei Servos:
- Pan: links/rechts
- Tilt: hoch/runter
## Aufgabe
Baue Befehle:
```text
$ head look-left
$ head look-right
$ head look-center
$ head look-up
$ head look-down
```
## Lernpunkte
- Koordinatensystem für Kopfbewegung
- sichere Winkelbereiche
- Nullposition/Kalibrierung
- sanfte Bewegungen statt ruckartiger Sprünge
## Akzeptanzkriterien
- Kopf kann nach links, rechts, oben, unten und zur Mitte schauen.
- Bewegungen sind begrenzt und beschädigen die Mechanik nicht.
- Es gibt eine zentrale Konfigurationsdatei für Min-/Max-Winkel.
## Erweiterung
Baue ein HTTP-API:
```text
POST /motion/head/look
{"pan": 30, "tilt": -10}
```
@@ -0,0 +1,38 @@
# Aufgabe 02: PWM und Winkel kalibrieren
## Ziel
Du ermittelst die Pulsbreiten oder Controllerwerte für reale Winkel.
## Warum ist das wichtig?
Jeder Servo und jede Mechanik hat eigene Grenzen.
## Voraussetzungen
- Aufgabe 01
- Lineal oder Winkelmarkierung
## Theorie
PWM-Werte sind nicht automatisch Gradwerte. Kalibrierung verbindet Softwarekoordinaten mit realer Mechanik.
## Aufgabe
Erstelle eine Kalibrierdatei mit min, max, center und optional invert pro Achse.
## Akzeptanzkriterien
- Grenzwerte sind sicher getestet.
- Center-Position ist reproduzierbar.
- Config wird vom Testprogramm geladen.
## Erweiterungen
- Baue einen interaktiven Kalibriermodus.
## Reflexionsfragen
- Warum sind Herstellerwerte nur Startpunkte?
- Wie erkennst du mechanischen Anschlag?
- Warum ist Invert pro Achse nützlich?
@@ -0,0 +1,38 @@
# Aufgabe 03: Stromversorgung und Not-Aus planen
## Ziel
Du baust Sicherheitsregeln für Servo-Strom und Abschaltung.
## Warum ist das wichtig?
Instabile Stromversorgung verursacht Resets, Zittern und gefährliche Bewegungen.
## Voraussetzungen
- Aufgaben 01-02
- Grundwissen Elektrik
## Theorie
Motoren sind elektrische Lasten mit Spitzenströmen. Gemeinsame Masse, externe Versorgung und Sicherungen sind praktische Grundregeln.
## Aufgabe
Dokumentiere Verdrahtung, Strombudget, gemeinsame Masse und eine Not-Aus-Strategie.
## Akzeptanzkriterien
- Strombedarf pro Servo ist geschätzt.
- Gemeinsame Masse ist erklärt.
- Not-Aus oder Software-Disable ist definiert.
## Erweiterungen
- Füge eine Sicherung oder Schalter in den Plan ein.
## Reflexionsfragen
- Was passiert bei zu schwachem Netzteil?
- Warum braucht Signal eine gemeinsame Masse?
- Wie hältst du die Mechanik bei Softwarecrash sicher?
@@ -0,0 +1,38 @@
# Aufgabe 04: Pan-Tilt-Kopf montieren
## Ziel
Du montierst zwei Achsen und definierst ein Koordinatensystem.
## Warum ist das wichtig?
Pan und Tilt sind die sichtbare Körperlichkeit des Roboterkopfs.
## Voraussetzungen
- Aufgaben 01-03
- Pan-Tilt-Halterung
## Theorie
Ein Koordinatensystem verhindert Verwirrung: Pan links/rechts, Tilt hoch/runter, Center als ruhige Ausgangslage.
## Aufgabe
Montiere oder simuliere den Kopf und schreibe Kommandos für center, left, right, up und down.
## Akzeptanzkriterien
- Alle Grundrichtungen funktionieren.
- Koordinaten sind dokumentiert.
- Center ist sicher und wiederholbar.
## Erweiterungen
- Füge ein kleines CLI-Menü hinzu.
## Reflexionsfragen
- Welche Richtung ist positiv?
- Wie groß darf Tilt werden?
- Welche Kabelbewegung begrenzt Pan?
@@ -0,0 +1,37 @@
# Aufgabe 05: Sichere Winkelbereiche erzwingen
## Ziel
Du kapselst Winkelbegrenzung zentral in Code und Config.
## Warum ist das wichtig?
Das LLM oder ein Bug darf keine gefährlichen Servopositionen direkt auslösen.
## Voraussetzungen
- Aufgabe 04
## Theorie
Sicherheitsgrenzen gehören in die unterste Motion-Schicht. Höhere Schichten dürfen nur innerhalb dieser Grenzen arbeiten.
## Aufgabe
Implementiere `clamp_angle` oder einen Motion-Controller, der alle Zielwinkel validiert und begrenzt.
## Akzeptanzkriterien
- Zu große Winkel werden begrenzt oder abgelehnt.
- Grenzen kommen aus Config.
- Tests decken Grenzfälle ab.
## Erweiterungen
- Unterscheide harte Fehler und sanftes Clamping.
## Reflexionsfragen
- Wo sollte die Sicherheitsgrenze liegen?
- Wann ist Ablehnen besser als Clamping?
- Wie loggst du gefährliche Befehle?
@@ -0,0 +1,37 @@
# Aufgabe 06: Sanfte Bewegungen implementieren
## Ziel
Du bewegst den Kopf in kleinen Schritten statt mit abrupten Sprüngen.
## Warum ist das wichtig?
Ruckartige Bewegungen wirken schlecht und belasten Mechanik und Stromversorgung.
## Voraussetzungen
- Aufgaben 04-05
## Theorie
Motion Profiles beschreiben Geschwindigkeit und Beschleunigung. Schon lineare Schritte sind besser als direkte Sprünge.
## Aufgabe
Baue eine Funktion `move_to(pan, tilt, duration_ms)`, die Zwischenpositionen erzeugt.
## Akzeptanzkriterien
- Bewegung ist sichtbar sanfter.
- Dauer ist konfigurierbar.
- Neue Ziele können kontrolliert behandelt werden.
## Erweiterungen
- Teste Ease-in/ease-out.
## Reflexionsfragen
- Warum sind Sprünge problematisch?
- Wie reagierst du auf neue Befehle während Bewegung?
- Welche Geschwindigkeit wirkt angenehm?
@@ -0,0 +1,38 @@
# Aufgabe 07: Motion API bereitstellen
## Ziel
Du stellst Kopfbewegungen als lokalen Service bereit.
## Warum ist das wichtig?
Der Agent soll Motion als Tool nutzen, ohne Servo-Code zu importieren.
## Voraussetzungen
- Aufgaben 05-06
- HTTP-Grundlagen
## Theorie
Eine Motion API ist eine Hardwaregrenze. Sie validiert, begrenzt und kann im Simulationsmodus laufen.
## Aufgabe
Baue `/health`, `/motion/head/look`, `/motion/head/center` und `/motion/head/state`.
## Akzeptanzkriterien
- Look akzeptiert nur sichere Ziele.
- State liefert aktuelle Position.
- Simulationsmodus funktioniert ohne Hardware.
## Erweiterungen
- Füge Auth oder Localhost-Beschränkung hinzu.
## Reflexionsfragen
- Welche Befehle dürfen remote erreichbar sein?
- Warum ist Simulationsmodus wichtig?
- Welche Zustände braucht die API?
@@ -0,0 +1,38 @@
# Aufgabe 08: Agent Tool look integrieren
## Ziel
Du verbindest die Motion API mit dem Agenten-Tool `look`.
## Warum ist das wichtig?
Sprachbefehle wie "Schau nach links" sollen kontrolliert Hardware bewegen.
## Voraussetzungen
- Aufgabe 07
- Modul 01 Aufgabe 08
## Theorie
Das LLM interpretiert Sprache, aber die Motion-Schicht entscheidet über erlaubte Zielwerte. Natürliche Richtungen werden auf sichere Winkel übersetzt.
## Aufgabe
Ergänze Tool Schema und Dispatcher für `look(direction)` mit left, right, up, down, center.
## Akzeptanzkriterien
- Sprachbefehl löst Motion API aus.
- Ungültige Richtung wird abgelehnt.
- Agent bestätigt kurz die Bewegung.
## Erweiterungen
- Erlaube relative Winkel im Debugmodus.
## Reflexionsfragen
- Welche Wörter mapst du auf Richtungen?
- Was passiert bei widersprüchlichen Befehlen?
- Wie bestätigst du Bewegung knapp per Sprache?
@@ -0,0 +1,37 @@
# Aufgabe 09: Person im Bild zentrieren
## Ziel
Du nutzt Vision-Boxen, um den Kopf langsam auf eine Person auszurichten.
## Warum ist das wichtig?
Der Roboter wirkt präsenter, wenn er Personen im Bild verfolgen kann.
## Voraussetzungen
- Aufgaben Modul 03 Aufgabe 07 und Modul 05 Aufgabe 06
## Theorie
Zentrierung ist eine einfache Regelung: Fehler zwischen Bildmitte und Boxmitte wird in Pan/Tilt-Korrektur übersetzt.
## Aufgabe
Implementiere einen Prototyp, der eine erkannte Person auswählt und kleine Pan/Tilt-Korrekturen ausgibt oder ausführt.
## Akzeptanzkriterien
- Boxmitte wird berechnet.
- Korrektur bleibt begrenzt.
- Bei keiner Person fährt der Kopf nicht hektisch.
## Erweiterungen
- Füge Totzone gegen Zittern hinzu.
## Reflexionsfragen
- Warum braucht Tracking eine Totzone?
- Welche Person wählst du bei mehreren?
- Wie verhinderst du Oszillation?
+19
View File
@@ -0,0 +1,19 @@
# Robot Motion
Servo-Grundlagen, PWM, Pan-Tilt-Mechanik, Motion API und visuelles Zentrieren.
## Aufgaben
- [01: Servo-Grundlagen verstehen](01-servo-grundlagen-verstehen.md)
- [02: PWM und Winkel kalibrieren](02-pwm-und-winkel-kalibrieren.md)
- [03: Stromversorgung und Not-Aus planen](03-stromversorgung-und-not-aus-planen.md)
- [04: Pan-Tilt-Kopf montieren](04-pan-tilt-kopf-montieren.md)
- [05: Sichere Winkelbereiche erzwingen](05-sichere-winkelbereiche-erzwingen.md)
- [06: Sanfte Bewegungen implementieren](06-sanfte-bewegungen-implementieren.md)
- [07: Motion API bereitstellen](07-motion-api-bereitstellen.md)
- [08: Agent Tool look integrieren](08-agent-tool-look-integrieren.md)
- [09: Person im Bild zentrieren](09-person-im-bild-zentrieren.md)
## Arbeitsweise
Bearbeite die Aufgaben nacheinander. Jede Aufgabe soll ein kleines, überprüfbares Ergebnis liefern und ist bewusst auf etwa 1 bis 4 Stunden ausgelegt.