Zum Hauptinhalt springen

ROS 2 — Roboter-/AGV-Middleware

ROS 2 (Robot Operating System 2) ist die Standard-Middleware für mobile Roboter, AGVs, kollaborierende Roboter und Drohnen. Auf Basis von DDS (Data Distribution Service, RTPS over UDP/TCP) stellt sie publish/subscribe, service und action bereit. Üblich ist es, Topics (z. B. /odom, /imu, /battery_state) zu abonnieren und so den Roboterzustand zu überwachen.

Der ROS2-Treiber des Gateways ist ein real implementierter Treiber, der sich mit dem JSON-over-WebSocket-Endpunkt der ROS-2-Standardbrücke rosbridge_suite (rosbridge_server) verbindet und Topics abonniert. Da keine direkte DDS-Anbindung erfolgt, muss auf ROS-2-Seite lediglich rosbridge_server laufen. Der Treiber ist schreibgeschützt (read-only).


Vorbereitung — rosbridge_server

Auf ROS-2-Seite (Roboter selbst oder PC im selben Netzwerk) das Standardpaket rosbridge_suite installieren und starten.

# 예: ROS 2 Humble
sudo apt install ros-humble-rosbridge-suite
ros2 launch rosbridge_server rosbridge_websocket_launch.xml # 기본 ws 포트 9090

Eingabewerte im Registrierungsformular

EingabefeldWas wird eingetragenBeispiel
IP-AdresseHost des rosbridge_server192.168.0.30
Portrosbridge-WebSocket-Port9090 (Standard ws) / 9443 (Standard wss)
Pfad (rosbridge)Pfad des WebSocket-Endpunkts — Option path/ (Standard)
TLS verwendenfalse = ws / true = wss — Option tlsfalse (Standard)
Schreiben nicht unterstützt

Der ROS-2-Treiber ist read-only. Das Publizieren von Topics (z. B. Fahrbefehle über /cmd_vel) erfordert rosbridge advertise und wird nicht unterstützt. Nutzen Sie für das Senden von Roboterbefehlen einen separaten Weg.


PLC-Adressnotation der Tags

Die Adresse lautet <topic>:<field.dot.path> — der erste : trennt Topic und Feldpfad (ROS-Topics enthalten /, aber kein :).

NotationBedeutung
/temperature:dataFeld data von std_msgs/Float64
/imu:orientation.zverschachteltes Feld von sensor_msgs/Imu (dot-path)
/scan:ranges.0Array-Element — das numerische Segment ist der Index
/odomohne : die gesamte msg (JSON-String)
  • Blattfelder werden als Textwert, object/array als JSON-String zurückgegeben.
  • lazy subscribe — ein Topic wird beim ersten read einmalig abonniert; danach pusht rosbridge neue Samples. Der erste Wert trifft daher erst ab dem nächsten Erfassungszyklus ein.

Zuordnung der Datenformate

msg-FeldDatenformat
float-Feld (data, orientation.z …)Float / Double
int-/enum-FeldInteger
bool-FeldBoolean
String / gesamte msg (JSON)String

Häufig verwendete Topic-Zuordnungen (Referenz)

AdresseBedeutungEmpfohlenes Format
/battery_state:percentageBatterieladestand (sensor_msgs/BatteryState)Float
/odom:pose.pose.position.xRoboterposition x (nav_msgs/Odometry)Float
/odom:twist.twist.linear.xVorwärtsgeschwindigkeit (nav_msgs/Odometry)Float
/diagnosticsgesamte DiagnosemeldungString (JSON)

Bei großen Nachrichten wie /scan (LiDAR raw) sollten Sie nicht die gesamte msg erfassen, sondern nur die benötigten Elemente registrieren (z. B. /scan:ranges.0).


Häufige Probleme

SymptomMögliche UrsacheLösung
Wert unmittelbar nach der Registrierung leerlazy subscribe — der erste read führt nur das Abonnement ausbis zum nächsten Erfassungszyklus (1× timecycle) warten
Verbindung fehlgeschlagen (connect failed)rosbridge_server läuft nicht / Port stimmt nichtauf ROS-2-Seite rosbridge_server starten und Port (9090) prüfen
wss-Verbindung fehlgeschlagenTLS-Konfiguration / Zertifikatbei tls=true muss auch rosbridge mit TLS laufen (Standardport für wss: 9443)
Werte werden aktualisiert und bleiben dann stehenWebSocket-Abbruch — der Treiber wechselt sofort in den Zustand „nicht verbunden“ (es werden keine veralteten Cache-Werte weitergeliefert)Netzwerk prüfen / rosbridge neu starten
Topic-Name korrekt, aber leerer WertTippfehler im dot-path des Feldes (Pfad existiert in der msg nicht)msg-Struktur mit ros2 topic echo <topic> prüfen und Pfad korrigieren

Alternative Integrationswege (Referenz)

In Umgebungen, in denen rosbridge nicht einsetzbar ist, sind folgende Wege möglich.

SituationAlternative
viele Roboter + Erfassung bis in die Cloud erforderlichMQTT bridge → Sparkplug B / MQTT-Client
Industrieroboter-Controller (ABB / KUKA / UR)OPC UA Robotics Companion → OPC-UA