Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

ROS2 + DDS:Spielen Sie es noch einmal

Real-World-Tests sind notwendig – und oft teuer – Teil der Schaffung verteilter und autonomer Systeme. Tests wurden entwickelt, um das System durch viele verschiedene Szenarien zu führen, und die Echtzeit-Datenerfassung kann aus diesen Tests einen dauerhaften Wert schaffen.

Denken Sie darüber nach, ein (semi-)autonomes Fahrzeug auf der Straße zu testen, das GPS, Kameras, LiDAR, RADAR, Beschleunigungsmesser, Gyroskope, Kompass, Tachometer, Kontrollsignale sowie Kartierung und Umgebung umfasst Daten. Das sind * viele * Daten ... und sehr teuer in der Anschaffung. Wäre es nicht schön, wenn all diese Daten für die On-Demand-Wiedergabe aufgezeichnet werden könnten, als würde ein tatsächlicher Test laufen? Was wäre, wenn Sie eine digitale Bibliothek jeder Testsitzung erstellen und diese bei der Wiedergabe ändern könnten – und dadurch noch wiederholbarere Testszenarien erstellen könnten?

Wussten Sie, dass DDS-Benutzer seit vielen Jahren mit dem RTI Recording Service aufzeichnen und wiedergeben mit hoher Bandbreite/hoher Kapazität? Ein beispielhafter Anwendungsfall für den RTI-Aufzeichnungsdienst wäre die kontinuierliche (24/7) Aufzeichnung aller Systemdaten während eines ausgedehnten Feldeinsatzes, wie z. B. bei einer Seeerprobung eines Marineschiffs. Aufzeichnungsbandbreite und -kapazität sind aufgrund der verteilten Natur von DDS nahezu unbegrenzt – mehrere Instanzen des Aufzeichnungsdienstes können gestartet werden, um mit der Datenflut Schritt zu halten.

Das ROS-Ökosystem hat seinen eigenen Aufnahmedienst namens Rosbag, aber zum jetzigen Zeitpunkt war Rosbag erst vor kurzem für ROS2 veröffentlicht worden. Glücklicherweise verwendet ROS2 DDS als zugrunde liegendes Konnektivitäts-Framework, daher sollte es einfach sein, den praxiserprobten RTI-Aufzeichnungsdienst zu verwenden, um Daten mit hoher Bandbreite von ROS2 zur jederzeitigen Wiedergabe aufzuzeichnen.

Lass uns das schaffen...

Rekorderkonfiguration

RTI Recording Service kann durch eine XML-Datei konfiguriert werden, um alle oder ausgewählte Themen mit den erforderlichen QoS-Einstellungen aufzuzeichnen. In diesem Beispiel werde ich ein Thema mit mittlerer Bandbreite (ROS2-LiDAR-Daten) aufzeichnen und es dann in ROS2 wiedergeben – alles aus einem reinen DDS-Toolset.

RTI Recording Service deserialisiert normalerweise die Daten für die Aufzeichnung in die Spalten einer herkömmlichen Datenbank. Die ROS2-LiDAR-Daten haben eine große Anzahl von Punkten pro Abtastung, daher werde ich den Rekorder in diesem Fall anweisen, die Daten nicht zu deserialisieren und als einzelne Spalte in der Datenbank aufzuzeichnen. Der Rest der XML-Datei teilt dem Rekorder mit, welches Thema und welcher Datentyp aufgezeichnet werden soll und wo die Daten gespeichert werden sollen.

Dies ist in einer von mir erstellten XML-Datei mit dem Namen „ros2_record.xml“ enthalten:

 xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/5.3.1/rti_record.xsd"> 




wahr
0




ros2_replay_example.dat
wahr




0

RTIDDS_DESERIALIZEMODE_NIE




rt/velodyne_points
*





domain0


ros-rt







domain0






PointCloud2.xml



falsch
sensor_msgs::msg::dds_::PointCloud2_

sensor_msgs::msg::dds_::PointCloud2_


rt/velodyne_points



2147483647



.







Um den RTI Recording Service mit der obigen XML-Datei zu starten, verwende ich den folgenden Befehl (ausgeführt aus demselben Verzeichnis wie die obige XML-Datei):

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

Dadurch wird der Aufzeichnungsdienst gestartet, der die LiDAR-Daten abonniert und kontinuierlich aufzeichnet, bis ich das Programm schließe. Das Endergebnis ist eine SQLite-Datenbankdatei namens „ros2_replay_example.dat_0_0“

Zahlen werden an den Dateinamen angehängt, um zwischen Aufzeichnungssitzungen (die erste Zahl) und welcher Datenbankdatei in einer Sequenz zu unterscheiden (die Dateien werden automatisch auf eine vom Benutzer wählbare begrenzt) Größe; wenn sie zu groß werden, werden sie geschlossen und eine andere Datei wird geöffnet, um die nächste Datenperiode aufzunehmen. Dies verhindert, dass die Datenbankdateien zu groß werden).

Replayer-Konfiguration

Da ich nun die ROS2-LiDAR-Daten aufgezeichnet habe, wollen wir sehen, ob sie in ROS2 wiedergegeben werden können.

Wie in früheren Blog-Artikeln (A Field Guide to Interoperability and When Ecosystems Merge) erwähnt, erfordert ROS2 einige Einstellungen, um die Kompatibilität sicherzustellen. In diesem Beispiel wurde das Senden der Typcodeinformationen während der Erkennung unterdrückt, um mit der Standardkonfiguration der ROS2-Version „Bouncy Bolson“ kompatibel zu sein, aber diese Anpassung könnte auch in ROS2 vorgenommen werden, wenn rmw_connext_cpp ausgeführt wird als RMW-Schicht.

Diese Einstellungen – zusammen mit Themen-, Domänen- und Dateiinformationen – werden in einer anderen XML-Datei abgelegt:

 
xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/5.3.1/rti_replay.xsd">






Anmerkung>
Beispiel für einen Wiedergabedienst


1
AUTO
5




ros2_replay_example.dat_0_0
falsch



0


0
0










PointCloud2.xml



falsch
sensor_msgs::msg::dds_::PointCloud2_

sensor_msgs::msg::dds_::PointCloud2_

rt/velodyne_points


2147483647


.

[1] [2] 下一页

Internet der Dinge-Technologie

  1. Open DDS vs. RTI DDS-Software
  2. MQTT und DDS:Machine-to-Machine-Kommunikation im IoT
  3. Connext DDS und das industrielle IoT:Die 5 wichtigsten Dinge, die Sie wissen sollten
  4. Die vierte industrielle Revolution
  5. Datenkonform im IoT bleiben
  6. Was mache ich mit den Daten?!
  7. Demokratisierung des IoT
  8. 5 Trends in der Konnektivität
  9. Top 10 der IIoT-Plattformen
  10. Die Zukunft der Rechenzentren