Projekt zur Bereitstellung von spezfischen Rover-Nachrichten
Messages in diesem Folder werden als Topics (publish/subsribe) verwendet
Messagers in diesem folder werden als Service-Messages verwendet
| Kriterium | Topic (.msg) |
Service (.srv) |
|---|---|---|
| Kommunikationsart | Asynchron, ungerichtet | Synchron, anfragebasiert, gerichtet |
| Beziehung | Publisher ↔ Subscriber | Client ↔ Server |
| Antwort notwendig? | Nein | Ja (Request → Response) |
| Wiederholung | Periodisch oder Event-getriggert | Nur bei konkretem Aufruf |
| Typische Beispiele | Sensorwerte, Steuerbefehle, Status | Konfiguration, Befehle mit Antwort |
- ⚠ Topics sind "fire-and-forget"
→ Es gibt keine Bestätigung, ob jemand zuhört oder die Nachricht verarbeitet - ✅ Services bieten Rückmeldung
→ Du bekommst garantiert eine Antwort (oder Timeout) - 🔁 Kombination möglich
→ z. B. per Service „Start Messung“ → Status als Topic publizieren
- Sensoren: Lidar, IMU, Kamera, Ultraschall etc. → liefern kontinuierliche Daten
- Statusanzeigen: Batteriestand, Temperatur, Diagnosen
- LED-Muster: einfache visuelle Signale wie z. B.
LEDPattern.msgvia/led
ros2 topic pub /led rover/LEDPattern "{pattern: 3}"- Einmalige Konfigurationen
z. B. I2C-Adresse setzen, Mapping starten, Parameter setzen - Lifecycle-Kommandos
configure,activate,shutdown, etc. - Gezielte Datenabfragen
z. B. ein ADC-Wert bei Bedarf (nicht gestreamt) - Zentralisierte Steuerung
z. B. Ein- und Ausschalten von Subsystemen, Reset-Kommandos - ESP32: z. B. gewünschte Geschwindigkeit oder Richtung. Hintergrund ist, das automatisch auf einen Befehl hin auch ein Response gesetzt werden kann
ros2 service call /i2c_node/get_adc rover/GetADC "{channel: 1}"i2c_node: Zentrale Komponente für alle I2C-Kommandos- Andere Nodes kommunizieren ausschließlich über ROS 2 mit dem I2C-Node
- 📥 Service (
.srv): Für gezielte Schreib-/Leseoperationen - 📤 Topic (
.msg): Für kontinuierlich erfasste Sensordaten
rover/
├── msg/
│ └── LEDPattern.msg
├── srv/
│ └── GetADC.srv
│ └── WriteI2C.srv
├── src/rover/
│ ├── nodes/
│ │ ├── led_node.py
│ │ ├── i2c_node.py
│ │ └── driver_controller.py
| Wenn du… | Dann verwende… |
|---|---|
| regelmäßig Daten senden willst | Topic (.msg) |
| eine Aktion gezielt mit Antwort auslösen willst | Service (.srv) |
| Status streamen möchtest | Topic |
| eine gezielte Information brauchst | Service |