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
+38
View File
@@ -0,0 +1,38 @@
# Aufgabe 01: ROS2 Zweck einordnen
## Ziel
Du verstehst, was ROS2 löst und was es nicht automatisch löst.
## Warum ist das wichtig?
ROS2 ist mächtig, aber für frühe AI-Prototypen nicht immer der beste Startpunkt.
## Voraussetzungen
- Linux
- Grundwissen Services
## Theorie
ROS2 bietet Kommunikationsmuster, Tools und Robotik-Konventionen. Es ersetzt aber keine gute Architektur und macht AI-Integration nicht magisch einfacher.
## Aufgabe
Schreibe eine kurze Entscheidungshilfe: Wann nutzt du ROS2 in diesem Projekt, wann bleibst du bei Services?
## Akzeptanzkriterien
- Mindestens drei Pro- und Contra-Punkte sind genannt.
- Bezug zum Roboterkopf ist konkret.
- Entscheidung für den Kursstand ist begründet.
## Erweiterungen
- Vergleiche mit MQTT/REST aus Modul 06.
## Reflexionsfragen
- Welches Problem löst ROS2 sofort?
- Was wird durch ROS2 komplexer?
- Wann lohnt sich die Migration?
@@ -0,0 +1,38 @@
# Aufgabe 02: Workspace und Package anlegen
## Ziel
Du richtest einen ROS2-Workspace mit einem einfachen Package ein.
## Warum ist das wichtig?
Alle weiteren ROS2-Übungen brauchen reproduzierbare Basisstruktur.
## Voraussetzungen
- ROS2 installiert
- Terminal
## Theorie
Ein Workspace enthält Packages, die mit colcon gebaut werden. Source-Setup entscheidet, welche Pakete im Terminal sichtbar sind.
## Aufgabe
Erstelle einen Workspace, ein Python- oder C++-Package und baue es mit colcon.
## Akzeptanzkriterien
- Build läuft ohne Fehler.
- Package ist nach `source install/setup...` sichtbar.
- README notiert die Befehle.
## Erweiterungen
- Füge einen `just`-Befehl fürs Build hinzu.
## Reflexionsfragen
- Warum muss setup gesourced werden?
- Was ist ein Package?
- Wie trennst du ROS2-Code vom Restprojekt?
+37
View File
@@ -0,0 +1,37 @@
# Aufgabe 03: Erste Node schreiben
## Ziel
Du schreibst eine Node, die regelmäßig Status loggt.
## Warum ist das wichtig?
Nodes sind die kleinste laufende Einheit in ROS2.
## Voraussetzungen
- Aufgabe 02
## Theorie
Eine Node kapselt Verhalten und kommuniziert über ROS2-Mechanismen. Timer sind ein einfacher Einstieg ohne externe Nachrichten.
## Aufgabe
Implementiere eine Node `robot_head_status`, die jede Sekunde einen Status ausgibt.
## Akzeptanzkriterien
- Node startet mit `ros2 run`.
- Timer läuft regelmäßig.
- Shutdown beendet sauber.
## Erweiterungen
- Füge Parameter für Intervall hinzu.
## Reflexionsfragen
- Was unterscheidet Node und Prozess?
- Wie stoppst du eine Node sauber?
- Welche Zustände sollte der Roboterkopf melden?
@@ -0,0 +1,37 @@
# Aufgabe 04: Topics publishen und subscriben
## Ziel
Du sendest und empfängst einfache Nachrichten über Topics.
## Warum ist das wichtig?
Sensor- und Statusdaten werden in ROS2 typischerweise über Topics verteilt.
## Voraussetzungen
- Aufgabe 03
## Theorie
Topics sind asynchrone Datenströme. Publisher kennen Subscriber nicht direkt, was lose Kopplung ermöglicht.
## Aufgabe
Baue einen Publisher für `person_count` und einen Subscriber, der den Wert loggt.
## Akzeptanzkriterien
- Topic ist mit `ros2 topic list` sichtbar.
- Nachrichten kommen regelmäßig an.
- Datentyp ist dokumentiert.
## Erweiterungen
- Nutze einen eigenen Message-Typ als Experiment.
## Reflexionsfragen
- Warum passt PersonCount zu Topic?
- Wann wäre ein Service besser?
- Wie debuggt man Topic-Daten?
@@ -0,0 +1,37 @@
# Aufgabe 05: Services in ROS2 nutzen
## Ziel
Du implementierst einen Request/Response-Service für Kopfzentrierung.
## Warum ist das wichtig?
Viele Roboteraktionen brauchen eine direkte Antwort, ob der Befehl angenommen wurde.
## Voraussetzungen
- Aufgaben 03-04
## Theorie
ROS2 Services sind synchrone oder request/response-artige Aufrufe. Sie passen zu kurzen Aktionen, nicht zu langen Bewegungen.
## Aufgabe
Baue einen Service `center_head`, der Erfolg und Nachricht zurückgibt.
## Akzeptanzkriterien
- Service ist per CLI aufrufbar.
- Antwort enthält Erfolg.
- Fehlerfall ist simuliert.
## Erweiterungen
- Verbinde den Service mit der Motion API im Mockmodus.
## Reflexionsfragen
- Warum ist ein langer Scan kein guter Service?
- Welche Antwort braucht ein Caller?
- Wie gehst du mit Timeout um?
@@ -0,0 +1,37 @@
# Aufgabe 06: Actions für längere Bewegungen
## Ziel
Du modellierst eine Scanbewegung als ROS2 Action.
## Warum ist das wichtig?
Lange Bewegungen brauchen Feedback, Fortschritt und Abbruchmöglichkeit.
## Voraussetzungen
- Aufgabe 05
## Theorie
Actions bestehen aus Goal, Feedback und Result. Sie passen zu Aufgaben, die dauern und eventuell abgebrochen werden sollen.
## Aufgabe
Implementiere oder skizziere eine Action `scan_for_person` mit Fortschritt und Ergebnis.
## Akzeptanzkriterien
- Goal kann gestartet werden.
- Feedback wird regelmäßig gesendet.
- Cancel ist bedacht oder implementiert.
## Erweiterungen
- Verbinde später mit Vision-Erkennung.
## Reflexionsfragen
- Warum ist Scan eine Action?
- Welche Feedbackdaten sind nützlich?
- Was passiert bei Cancel?
@@ -0,0 +1,37 @@
# Aufgabe 07: Launch Files und Parameter
## Ziel
Du startest mehrere Nodes mit Parametern über ein Launch File.
## Warum ist das wichtig?
Ein Roboter startet selten nur einen Prozess.
## Voraussetzungen
- Aufgaben 03-06
## Theorie
Launch Files beschreiben, welche Nodes mit welchen Parametern starten. Parameter machen Verhalten ohne Codeänderung anpassbar.
## Aufgabe
Erstelle ein Launch File für Status-, PersonCount- und Motion-Mock-Node.
## Akzeptanzkriterien
- Mehrere Nodes starten gemeinsam.
- Parameter werden gesetzt.
- Startbefehle sind dokumentiert.
## Erweiterungen
- Füge Namespace `robot_head` hinzu.
## Reflexionsfragen
- Welche Parameter ändern sich pro Umgebung?
- Warum sind Launch Files besser als viele Terminals?
- Wie organisierst du Namespaces?
+37
View File
@@ -0,0 +1,37 @@
# Aufgabe 08: TF grob verstehen
## Ziel
Du modellierst grob Koordinatenrahmen für Kamera und Kopf.
## Warum ist das wichtig?
Bewegung und Sicht brauchen gemeinsame Bezugssysteme.
## Voraussetzungen
- Aufgaben 04-07
## Theorie
TF beschreibt Transformationen zwischen Frames. Für den Kurs reicht zunächst zu verstehen, wo Kamera, Kopfmitte und Welt relativ zueinander liegen.
## Aufgabe
Zeichne Frames für base, head_pan, head_tilt und camera und beschreibe Transformationen qualitativ.
## Akzeptanzkriterien
- Mindestens vier Frames sind beschrieben.
- Parent/Child-Beziehungen sind klar.
- Bezug zur Pan-Tilt-Mechanik ist hergestellt.
## Erweiterungen
- Publiziere statische TFs als Experiment.
## Reflexionsfragen
- Warum ist Kameraposition wichtig?
- Was ändert sich bei Pan?
- Welche Vereinfachung ist für 2D-Tracking okay?
@@ -0,0 +1,38 @@
# Aufgabe 09: Bridge zur bestehenden Architektur
## Ziel
Du verbindest REST-Service und ROS2-Welt in einem kleinen Adapter.
## Warum ist das wichtig?
So kannst du bestehende Services nutzen, ohne alles sofort auf ROS2 umzuschreiben.
## Voraussetzungen
- Modul 06
- Aufgaben 04-08
## Theorie
Eine Bridge übersetzt zwischen Protokollen. Sie sollte dünn bleiben und keine Fachlogik verstecken.
## Aufgabe
Baue eine Node, die einen ROS2-Service oder Topic-Aufruf an einen bestehenden HTTP-Mock weiterleitet.
## Akzeptanzkriterien
- ROS2-Aufruf erreicht HTTP-Mock.
- Fehler werden übersetzt.
- Bridge-Code bleibt klein.
## Erweiterungen
- Bridge PersonCount Topic aus Vision-Service.
## Reflexionsfragen
- Welche Logik gehört nicht in die Bridge?
- Wie behandelst du HTTP-Timeouts?
- Wann würdest du native ROS2-Nodes schreiben?
+19
View File
@@ -0,0 +1,19 @@
# ROS2 Basics
Nodes, Topics, Services, Actions, Launch Files, Parameter, TF und Architektur-Brücken.
## Aufgaben
- [01: ROS2 Zweck einordnen](01-ros2-zweck-einordnen.md)
- [02: Workspace und Package anlegen](02-workspace-und-package-anlegen.md)
- [03: Erste Node schreiben](03-erste-node-schreiben.md)
- [04: Topics publishen und subscriben](04-topics-publishen-und-subscriben.md)
- [05: Services in ROS2 nutzen](05-services-in-ros2-nutzen.md)
- [06: Actions für längere Bewegungen](06-actions-fuer-laengere-bewegungen.md)
- [07: Launch Files und Parameter](07-launch-files-und-parameter.md)
- [08: TF grob verstehen](08-tf-grob-verstehen.md)
- [09: Bridge zur bestehenden Architektur](09-bridge-zur-bestehenden-architektur.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.