Roboter arbeiten an den unterschiedlichsten Orten mit unterschiedlichen Netzwerkbedingungen, von stabilem Ethernet bis hin zu inkonsistenten Mobilfunk- oder Satellitenverbindungen. Erfahren Sie, wie Sie gRPC und WebRTC für Roboter und andere intelligente Maschinen verwenden können, um zuverlässiger zu kommunizieren.
Ich habe vor Kurzem einen neuen Job bei Viam angetreten und war neugierig, mehr über deren Systemarchitektur zu erfahren. Viele Robotersysteme bestehen aus Geräten mit geringem Stromverbrauch und geringer Bandbreite oder arbeiten unter schlechten Netzwerkbedingungen. Viam ist eine Open-Source-Robotik-Softwareplattform, die speziell dafür entwickelt wurde, Robotern und anderen intelligenten Maschinen zu helfen, zuverlässiger zu kommunizieren.
Es verwendet gRPC für eine schnelle, strukturierte Client-Server-Kommunikation und WebRTC für eine direkte Peer-to-Peer-Kommunikation zwischen Maschinen. Lassen Sie uns die Vorteile der Verwendung von gRPC und WebRTC genauer untersuchen.
Es gibt eine Reihe von Gründen, gRPC für die Robotik zu verwenden, beispielsweise eine verbesserte Entwicklerproduktivität und Entwicklererfahrung. Der überzeugendste Grund ist jedoch, dass es auf Geschwindigkeit optimiert ist, möglicherweise bis zu 7–10x schneller als REST-APIs über HTTP, mit leichtgewichtigem Protobuf-Messaging.
Komponenten und Dienste in der Viam-API werden als sprachunabhängige Protocol Buffer (Protobuf)-Dienste dargestellt, und gRPC ist für den Transport und die Kommunikation von Protobuf-Nachrichten beim Aufrufen von Protobuf-Methoden verantwortlich.
Insbesondere verwendet Viam gRPC für hochrangige Interaktionen zwischen Maschinenteilen und SDK-basierten Anwendungen und ermöglicht so strukturierten Datenaustausch und Steuerbefehle mit geringer Latenz. Dies ist eine effiziente Möglichkeit, die zu erledigenden Aufgaben zu koordinieren, z. B. das Abrufen von Punktwolken von Kameras, das Analysieren von Daten zur Objektsegmentierung und das Anweisen von Roboterarmen, Aufgaben basierend auf berechneten Posen auszuführen.
Protobuf minimiert die Größe der übertragenen Daten und spart so Netzwerkbandbreite während der Übertragung.
Es gibt eine Reihe von Gründen, WebRTC in der Robotik zu verwenden, beispielsweise aus Sicherheitsgründen und wegen der plattformübergreifenden Kompatibilität. Der überzeugendste Grund ist jedoch, dass es eine direkte Verbindung verwendet.
Viam setzt bei der Peer-to-Peer-Kommunikation auf WebRTC und ermöglicht so direkte Video- und Datenströme zwischen Maschinenteilen und dem Viam SDK. Das bedeutet, dass Ihre Daten nach dem Herstellen der ersten Verbindung nicht mehr den langen Weg über einen zentralen Server zurücklegen müssen, um mit einer anderen Maschine zu kommunizieren. Dieses Setup optimiert die Echtzeit-Reaktionsfähigkeit und Betriebseffizienz, insbesondere bei komplexen Maschinenkonfigurationen.
WebRTC ermöglicht eine direkte Peer-to-Peer-Kommunikation und vermeidet Zwischenserver, die Verzögerungen oder Fehlerquellen verursachen könnten.
Sehen wir uns an, wie dies am Beispiel eines Arcade-Greifspiels funktioniert, das aus zwei Maschinenteilen besteht: einer Kamera und einem Arm.
Die Viam-App (app.viam.com) wartet auf Verbindungsanfragen, sendet Verbindungsdetails und lässt dann die beiden Peers direkt kommunizieren. Die ersten Verbindungen werden über gRPC ermöglicht.
Sobald die Verbindung hergestellt ist, kommunizieren die Maschinenteile über WebRTC, sodass alle Interaktionen zwischen SDKs und Maschinen über WebRTC mithilfe von gRPC-Methodenaufrufen erfolgen können. Mit anderen Worten: Das gRPC-Schema bestimmt, wie die Daten aussehen und wie sie verpackt werden, während WebRTC die eigentliche Übermittlung dieser Daten von einem Ort zum anderen übernimmt.
Sie könnten zwar selbst eine ähnliche Infrastruktur aufbauen, aber Viam bietet diese Möglichkeit mit handelsüblicher Robotik-Software. Die On-Machine-Funktionalität ist Open Source und kostenlos nutzbar. Wenn Sie irgendwann mit der Verwaltung einer Flotte beginnen, erfolgt die Abrechnung für Cloud-Dienste und Datenspeicherung nutzungsabhängig.
Die Viam-Web-App und SDKs wurden entwickelt, um Ihnen die Arbeit mit Ihren Maschinen zu erleichtern. Wenn Sie jedoch sehen möchten, was hinter den Kulissen passiert, sehen Sie sich den öffentlichen Arbeitsbereich der Viam-APIs in Postman an. Dort finden Sie schrittweise Anleitungen zum Arbeiten mit den zugrunde liegenden Viam-gRPC-APIs, darunter:
Autorisieren von gRPC-API-Aufrufen
Aufrufen von Methoden zur Steuerung von Hardwarekomponenten
Aufrufen von Methoden zum Verwalten von Softwarediensten
Sie haben vielleicht keinen Roboterarm zur Verfügung, aber Sie können dies mit einer günstigeren Maschine wie einem Rover wie Yahboom oder SCUTTLE ausprobieren. Viam hat auch einen Open-Source-Rover entwickelt, um Leuten dabei zu helfen, etwas über Robotik zu lernen.
Verwenden Sie gRPC und WebRTC, um einen Rover zu betreiben
Um zu beginnen, verzweigen Sie die Beispielsammlung „Spin a Viam Rover“ in Ihren eigenen Arbeitsbereich, indem Sie unten auf die Schaltfläche „In Postman ausführen“ klicken.
Und folgen Sie diesen Ressourcen:
Technische Überprüfung durch: Nick Hehr