feat: expanded and added more tasks
This commit is contained in:
@@ -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?
|
||||
@@ -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?
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user