Einführung von RTI Labs und Connector für Connext DDS mit Python
Es ist viel passiert seit dies war Beitrag ursprünglich veröffentlicht. Wussten Sie, dass Sie jetzt mit Python oder Javascript auf DDS zugreifen können? Sie können den Betatestern unseres RTI Labs-Programms dafür danken, dass sie die Nachfrage als RTI Connector für Connext
®
. gesteigert haben DDS ist jetzt als Teil der Connext-Produktsuite verfügbar.
Diese Woche freuen wir uns, RTI Labs ankündigen zu können, ein kostenloses Programm, das unseren Kunden frühzeitig Zugang zu neuen Technologien bietet, die wir für das industrielle IoT entwickeln. Wir nennen sie experimentelle Projekte. Kunden, die RTI Labs nutzen, haben die Möglichkeit, Technologien der nächsten Generation zu nutzen und unsere Produkt-Roadmap zu beeinflussen, indem sie Feedback zu den experimentellen Funktionen geben. Es ist eine Win-Win-Situation!
Wir starten das Programm mit drei neuen experimentellen Projekten, von denen das erste RTI (R) Connector für Connext DDS ist. Wenn Sie RTI Connext 5.3.0 bereits heruntergeladen und den RTI Launcher gestartet haben, sehen Sie im Reiter „Lab“ ein paar neue Symbole. Eines dieser Symbole ist für Connector.
Wenn Sie auf das Connector-Symbol klicken, gelangen Sie zur RTI-Connector-Seite im Community-Portal. Connector wurde vom Forschungsteam von RTI entwickelt, um bei der Erstellung von Demos und schnellen Tests zu helfen. Connector begann mit der Lua-Schnittstelle zu RTI Prototyper, und dann haben wir uns hinreißen lassen und Unterstützung für Skriptsprachen wie Python und JavaScript/node.js hinzugefügt.
Aber was ist RTI Connector?
RTI Connector für Connext DDS ist eine schnelle und einfache Möglichkeit, über eine Vielzahl verschiedener Skriptsprachen, einschließlich JavaScript, Python und Lua, auf die Leistungsfähigkeit und Funktionalität von RTI Connext DDS zuzugreifen. Es baut auf mehreren leistungsstarken Funktionen von Connext DDS auf, darunter XML-App-Erstellung und dynamische Daten.
Dieser Blogbeitrag konzentriert sich auf die Python-Schnittstelle von RTI Connector, aber die meisten Konzepte lassen sich genauso gut auf JavaScript/node.js und lua/prototyper anwenden.
Anwendungsfälle
Es gibt viele Anwendungsfälle für RTI Connector. Einige der Anwendungsfälle von Early Adopters sind:
- Testen : Wenn Sie ein komplexes verteiltes System entwickeln, sind oft einige der Komponenten nicht bereit; In diesem Fall wird Connector verwendet, um das Verhalten einer DDS-Komponente zu emulieren, die später oder von einer anderen Gruppe fertiggestellt wird. Auf diese Weise können Sie Komponenten isoliert testen – was entweder nützlich ist, wenn Sie in einem verteilten Team arbeiten, oder wenn Sie mit dem Testen nicht warten möchten, bis alle Komponenten erstellt sind.
- Prototyping: In der Softwareentwicklung ist es oft erforderlich, eine Idee zu validieren, bevor alle Details vorliegen. Machen Sie es mit einer Skriptsprache wie Python und einer vereinfachten DDS-API sehr einfach und schnell, eine Demo oder einen Machbarkeitsnachweis zu entwickeln – mit einer Größenordnung weniger Code!
- Benutzeroberflächen: Die Entwicklung einfacher Benutzeroberflächen (Visualisierung oder Senden von DDS-Daten mithilfe von Schaltflächen und einfachen Auslösern) wird wirklich einfach wenn der RTI Connector mit einer für Python verfügbaren UI-Technologie, wie Python QT, gekoppelt ist.
- Integration: Python und andere Skriptsprachen verfügen über ein riesiges Ökosystem. Als dieser Blog geschrieben wurde, hatte PyPl 112.439 Pakete. Wenn Sie versuchen, etwas zu integrieren, besteht eine gute Chance, dass es ein Python-Paket gibt, das Ihnen hilft, und jetzt können Sie Connector verwenden, um DDS zu sprechen!
- Ihr Anwendungsfall hier: lass es uns in unserem Forum wissen, wenn du RTI Connector auf andere Weise verwendest!
Erste Schritte mit RTI
In diesem Blogbeitrag gehen wir davon aus, dass Sie bereits mit Python vertraut sind. RTI Connector funktioniert sowohl mit Python 3 als auch <3. Er wird auf allen großen Enterprise-Systemen und auch auf Boards wie dem Raspberry Pi unterstützt. Die Liste der verfügbaren Plattformen können Sie hier einsehen. Wenn Sie Unterstützung für etwas anderes benötigen, zögern Sie nicht, im Forum nachzufragen. Um RTI Connector für Connext DDS in Python zu installieren, können Sie das auf PyPI verfügbare Paket verwenden:
pip install rticonnextdds_connector
Eine andere Möglichkeit besteht darin, das Repository einfach zu klonen:
git-Klon https://github.com/rticommunity/rticonnextdds-connector.git
Im Repository finden Sie auch einige Beispiele für den Einstieg:
- simple/writer.js:zeigt, wie Sie einen Writer erstellen, eine Instanz festlegen und Beispiele veröffentlichen.
- simple/reader.js:zeigt, wie man einen Leser bekommt, Muster erhält und auf deren Inhalt zugreift.
- simple/read_and_write.py:zeigt, wie ein Sample für jedes empfangene Feld geschrieben wird, nachdem zwei Felder invertiert wurden.
- gemischt/:Diese Beispiele werden regelmäßig aktualisiert und enthalten verschiedene Beispiele für den Zugriff auf die Länge einer Sequenz, die Verwendung von wait() und mehr.
API-Übersicht
Sehen wir uns an, wie die API aussieht. Wenn Sie detailliertere Informationen wünschen, können Sie die README in unserem GitHub-Repository anzeigen.
Als erstes müssen Sie die RTI Connector-Bibliothek importieren:
rticonnextdds_connector als rti . importieren
Nachdem Sie einen Verweis auf RTI Connector haben, können Sie die API aufrufen, um einen neuen Connector zu erstellen:
Connector =rti.Connector("MyParticipantLibrary::Zero","./ShapeExample.xml");
Der erste String ist der Name der Konfiguration, die Sie verwenden möchten, während der zweite String die XML-Datei ist, die die XML-Base-App-Erstellungskonfiguration enthält. Ein Beispiel für diese Datei können Sie hier sehen.
Sobald der Connector erstellt wurde, können Sie mit der getOutput-API auf alle Data Writer zugreifen:
output =connector.getOutput("MyPublisher::MySquareWriter")
oder Sie können auf die gleiche Weise auf die Datenleser zugreifen:
input =connector.getInput("MySubscriber::MySquareReader");
Beide APIs erhalten einen String als Parameter, der den Namen der Entität darstellt, wie er in der XML-Datei definiert wurde.
Sobald Sie eine Referenz auf den Data Writer haben (Ausgabe in unserem Beispiel), können Sie die Felder der zugehörigen Instanz setzen. Sie können dies tun, indem Sie ein Wörterbuch übergeben:
output.instance.setDictionary(Beispiel);
oder indem Sie jedes Feld einzeln einstellen:
output.instance.setNumber("y", 2);
Auf der Seite des Datenlesers (in diesem Beispiel Eingabe) können Sie read oder take aufrufen:
input.read();
oder
input.take();
Dann können Sie die erhaltenen Beispiele durchlaufen:
numOfSamples =input.samples.getLength();
für j im Bereich (1, numOfSamples+1):
if input.infos.isValid(j):
x =input.samples.getNumber(j, "x");
y =input.samples.getNumber(j, "y");
....
Auf ein Beispiel kann auf zwei Arten zugegriffen werden. Als Wörterbuch:
probe =input.samples.getDictionary(j);
oder Feld für Feld:
y =input.samples.getNumber(j, "y");
size =input.samples.getNumber(j, "shapesize");
Denken Sie daran, den Zugriff auf Ihren Connector zu schützen, wenn Sie Multithreading-Bibliotheken verwenden. Ein Beispiel dafür finden Sie hier.
All diese Macht hat Grenzen
RTI Connector ist großartig und kann viele Herausforderungen lösen! Aber wie alles ist es nicht für alles perfekt. Es hat eine begrenzte Anzahl von APIs:Einige Dinge, die Sie mit Connext DDS Pro tun können, können mit dem RTI Connector nicht durchgeführt werden. Es funktioniert nur mit dynamischen Daten und nicht mit kompilierten Typen. Um die Verwendung und die Portierung zu vereinfachen, haben wir einige Annahmen getroffen, die bestimmte Anwendungsfälle berücksichtigen. Es kann sein, dass dies Ihren speziellen Anwendungsfall nicht löst oder nicht der effizienteste Weg ist, ihn zu lösen, aber wir haben wahrscheinlich ein anderes Tool oder einen anderen Dienst dafür Ihr konkretes Anliegen:Fragen Sie uns einfach!
Internet der Dinge-Technologie
- Open DDS vs. RTI DDS-Software
- Telegraf-Plugin für Connext DDS:Erstellen Sie ein Zeitreihen-Überwachungssystem mit DDS und InfluxDB
- Verbindung 6:Jetzt verfügbar!
- Connext DDS und das industrielle IoT:Die 5 wichtigsten Dinge, die Sie wissen sollten
- Ankündigung des neuesten RTI-Perftest für Connext DDS
- Hier ist, warum jeder RTI Connext DDS für autonome Fahrzeuge verwendet
- Unsere Top-7-Ressourcen für IIoT-Entwickler 2017
- So entwerfen Sie industrielle IoT-Systeme mit DDS und LabVIEW 2017
- Roboter bauen mit Raspberry Pi und Python
- type() und isinstance() in Python mit Beispielen