TL;DR
- Foxglove in 2 Minuten über Desktop, Web oder Docker installieren.
- Verbindung zu ROS 2 mit
ros2 topic listund dem Foxglove-ROS-Bridge herstellen. - MCAP-Logs schneller visualisieren als ROS-Bag-Dateien (mit
mcap record). - Dashboards mit Drag-and-Drop für 3D-Ansichten, Bilder und Diagramme erstellen.
- Live- und aufgezeichnete Daten mit Zeitsteuerung debuggen.
- Foxglove erweitern mit benutzerdefinierten TypeScript-Panels für proprietäre Schemata.
1. Foxglove installieren und mit ROS 2 verbinden
Foxglove installieren
Wählen Sie Ihre bevorzugte Methode:
Desktop (Empfohlen für ROS 2)
# macOS (Homebrew)
brew install --cask foxglove-studio
# Linux (AppImage)
wget https://github.com/foxglove/studio/releases/download/v2.12.0/FoxgloveStudio-2.12.0.AppImage
chmod +x FoxgloveStudio-*.AppImage
./FoxgloveStudio-*.AppImage
# Windows (Winget)
winget install Foxglove.FoxgloveStudio
Web-App (Keine Installation nötig)
Öffnen Sie https://app.foxglove.dev in Chrome oder Firefox.
Docker (Für CI/CD)
docker run -p 8080:8080 foxglove/studio
Verbindung zu ROS 2 herstellen
-
Überprüfen Sie, ob ROS 2 läuft:
ros2 topic listBeispielausgabe:
/cmd_vel /scan /tf /odom -
Foxglove starten und verbinden:
- Öffnen Sie Foxglove → Klicken Sie auf "Verbinden" → Wählen Sie "ROS 2".
- Geben Sie Ihre ROS 2 Domain-ID ein (Standard:
0):ros2 run foxglove_bridge foxglove_bridge --ros-domain-id 0 - Wählen Sie in Foxglove dieselbe Domain-ID.
-
Erwartetes Ergebnis:
- Foxglove listet alle ROS 2-Topics auf. Klicken Sie auf "Abonnieren", um den Stream zu starten.
2. Das MCAP-Log-Format
Warum MCAP?
MCAP (Micro-Container And Payload) ist schneller und kompakter als ROS-Bag-Dateien Quelle: MCAP-Spezifikation. Nutzen Sie es für:
- Große Roboterdatensätze.
- Cloud-Speicher (z. B. Foxglove Data Platform).
MCAP-Daten aufzeichnen
# MCAP-Tools installieren
pip install rosbags-mcap
# ROS 2-Topics aufzeichnen
ros2 bag record -a --storage mcap -o my_robot_data.mcap
Wiedergabe in Foxglove
- Öffnen Sie Foxglove → Ziehen Sie
my_robot_data.mcapin die Anwendung. - Nutzen Sie den Zeitregler, um durch die Daten zu navigieren.
3. Visualisierungslayouts erstellen
Ein Dashboard erstellen
-
Panels hinzufügen:
- Ziehen Sie "3D-Panel", "Bild-Panel" oder "Diagramm-Panel" aus der linken Seitenleiste.
- Beispiel: Visualisieren Sie
/scan(LiDAR) in 3D und/image_rawals Bild.
-
Layout speichern:
# Als JSON exportieren foxglove studio export-layout --output my_dashboard.jsonBeispiel
my_dashboard.json:{ "panels": [ { "type": "3D", "topic": "/scan", "frame": "base_link" }, { "type": "Image", "topic": "/image_raw" } ] } -
Layout laden:
- Öffnen Sie Foxglove → "Layout laden" → Wählen Sie
my_dashboard.json.
- Öffnen Sie Foxglove → "Layout laden" → Wählen Sie
4. 3D-, Bild- und Diagramm-Panels
3D-Panel (LiDAR/URDF)
- 3D-Panel hinzufügen → Wählen Sie das
/scan-Topic. - Konfigurieren:
- Setzen Sie
frameaufbase_link(aus/tf). - Aktivieren Sie "TF-Rahmen anzeigen", um die Roboterposition zu visualisieren.
- Setzen Sie
Bild-Panel (Kamera)
- Bild-Panel hinzufügen → Wählen Sie
/image_raw. - Anpassen:
- Setzen Sie
encodingaufbgr8(häufig bei ROS 2-Kameras).
- Setzen Sie
Diagramm-Panel (Zeitreihen)
- Diagramm-Panel hinzufügen → Wählen Sie
/odom/pose/pose/position/x. - Anpassen:
- Fügen Sie eine zweite Reihe hinzu:
/twist/twist/linear/x. - Nutzen Sie "Automatische Skalierung" für dynamische Bereiche.
- Fügen Sie eine zweite Reihe hinzu:
5. Live-Debugging vs. Aufgezeichnete Wiedergabe
Live-Debugging
- ROS 2-Daten in Echtzeit streamen:
ros2 run foxglove_bridge foxglove_bridge --ros-domain-id 0 - Wiedergabe pausieren/fortsetzen mit den Zeitsteuerungen.
Aufgezeichnete Wiedergabe
- MCAP-Datei laden:
foxglove studio open my_robot_data.mcap - Zeitsynchronisation:
- Nutzen Sie "Zeitsynchronisation", um mehrere Logs abzugleichen.
6. Benutzerdefinierte Erweiterungen und Nachrichtenschemata
Ein benutzerdefiniertes Panel hinzufügen
- TypeScript-Erweiterung erstellen:
npx @foxglove/create-extension my-custom-panel cd my-custom-panel src/panel.tsbearbeiten:import { Panel } von '@foxglove/studio'; export class MyCustomPanel extends Panel { render() { return <div>Benutzerdefinierte Visualisierung für my_topic</div>; } }- Erstellen und Laden:
npm run build foxglove studio load-extension ./dist
Benutzerdefinierte Nachrichtenschemata definieren
- Schema in
foxglove.config.jsonhinzufügen:{ "schemas": { "my_namespace/MyMessage": { "fields": [ {"name": "x", "type": "float32"}, {"name": "y", "type": "float32"} ] } } } - In Foxglove verwenden:
- Wählen Sie das Topic → Foxglove parst das benutzerdefinierte Schema.
7. Teamworkflows für Flotten-Debugging
Live-Sitzung teilen
- Sitzung hosten:
foxglove studio share --port 8080 - Teammitglieder einladen über https://app.foxglove.dev mit dem Link.
Cloud-Speicher (Foxglove Data Platform)
- Daten hochladen:
foxglove data upload my_robot_data.mcap - In Foxglove zugreifen:
- Melden Sie sich an → Wählen Sie "Cloud" → Laden Sie den Datensatz.
Was kommt als Nächstes?
- Eine vollständige Roboter-Mission aufzeichnen und analysieren mit
mcap record. - Ein benutzerdefiniertes Dashboard für die wichtigsten Roboter-Kennzahlen erstellen.
- Foxglove erweitern mit einem TypeScript-Panel für proprietäre Topics.
Für physische KI-Infrastruktur und Bereitstellung erkunden Sie Hyperions Tools für embodied VLA-Systeme und Edge-Runtimes. Kontaktieren Sie uns, um Ihr Projekt zu besprechen.
