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