Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Rejouer Données LiDAR ROS2 avec RTI Recording Service et DDS

Rejouer Données LiDAR ROS2 avec RTI Recording Service et DDS

Le test réel est indispensable pour systèmes distribués et autonomes, yet il peut être prohibitivement coûteux. En capturant et rejouant données capteurs, équipes peuvent générer valeur durable de chaque session test.

Imaginez véhicule semi-autonome équipé GPS, caméras, LiDAR, RADAR, capteurs inertiels, et full suite signaux contrôle. Volume données généré pendant single run est staggering, et coût repeated on-road trials est high. Enregistrer ces données pour relecture ultérieure – essentially creating digital library test sessions – améliorerait dramatiquement repeatabilité et flexibilité test.

Depuis années, utilisateurs DDS ont accès à enregistrement et playback haute bande passante via RTI Recording Service. Il supporte capture continue, 24/7 de toutes données système pendant déploiements extended, comme trials at-sea navires navals. Grâce à architecture distribuée DDS, multiples instances Recording Service peuvent être lancées pour keep pace avec massive data streams.

ROS2, qui repose sur DDS pour communication inter-processus, peut lever le même Recording Service field-tested pour capturer topics ROS2 haute bande passante comme point clouds LiDAR. Dans l'exemple suivant, nous configurerons topic bande passante modérée (données LiDAR ROS2) et le rejouerons back into ROS2 utilisant seulement outils DDS.

Configuration Recorder

RTI Recording Service est driven par fichier configuration XML spécifiant topics à enregistrer, QoS settings désirés, et options stockage. Dans ce setup, nous instructons recorder à traiter ROS2 PointCloud2 data comme single column, évitant costly deserialization pour ce large data type.

Ci-dessous fichier XML utilisé, nommé ros2_record.xml :

<dds xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://community.rti.com/schema/5.3.1/rti_record.xsd">

<recorder name="simple_example">
<!-- Enable remote access to RTI Recorder. The Recorder creates one
DataReader and one DataWriter in the specified domain. -->
<remote_access>
<enabled>true</enabled>
<remote_access_domain>0</remote_access_domain>
</remote_access>

<!-- Base name for the set of files that will store recorded data -->
<recorder_database>
<database_name>ros2_replay_example.dat</database_name>
<overwrite>true</overwrite>
</recorder_database>

<!-- Record data from one domain -->
<domain name="domain0">
<domain_id>0</domain_id>
<!-- Turn off deserialization for ROS2 'PointCloud2' data type (over 5k elements) -->
<deserialize_mode>RTIDDS_DESERIALIZEMODE_NEVER</deserialize_mode>
</domain>

<!-- Create a TopicGroup that only records rt/velodyne_points topics -->
<topic_group name="ros-rt">
<topics><topic_expr>rt/velodyne_points</topic_expr></topics>
<field_expr>*</field_expr>
</topic_group>

<!-- Create a RecordGroup -->
<record_group name="RecordAll">
<!-- Specify which domains to record from -->
<domain_ref><element>domain0</element></domain_ref>
<!-- Specify which TopicGroups to record -->
<topic_ref><element>ros-rt</element></topic_ref>
</record_group>

<!-- Add domain and typecode info to record ROS2 'PointCloud2' type -->
<domain_type_config>
<domain_group>
<element>
<domain_filter>
<element>domain0</element>
</domain_filter>
<type_config>
<xml>
<file_group>
<element>
<file_name>
<element>PointCloud2.xml</element>
</file_name>
<type>
<element>
<register_top_level>false</register_top_level>
<type_name>sensor_msgs::msg::dds_::PointCloud2_</type_name>
<registered_type_name>
<element>sensor_msgs::msg::dds_::PointCloud2_</element>
</registered_type_name>
<topics><element>rt/velodyne_points</element></topics>
</element>
</type>
<max_sequence>2147483647</max_sequence>
</element>
</file_group>
<path>
<element>.</element>
</path>
</xml>
</type_config>
</element>
</domain_group>
</domain_type_config>
</recorder>
</dds>

Pour démarrer Recording Service avec cette configuration, exécutez commande suivante depuis répertoire contenant ros2_record.xml :

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

Le service souscrit au topic LiDAR et enregistre continuellement jusqu'à arrêt. Output est base SQLite nommée ros2_replay_example.dat_0_0. Sessions enregistrement subséquentes append suffixes numériques au filename, assurant chaque fichier reste within user-defined size limit.

Configuration Replayer

Avec données enregistrées, nous pouvons maintenant les rejouer dans environnement ROS2. Posts blog antérieurs soulignaient que ROS2 requiert quelques QoS tweaks pour interopérabilité seamless. Dans cet exemple, nous supprimons transmission type-code pour matcher configuration default ROS2 "Bouncy Bolson" (ou tout release ROS2 utilisant rmw_connext_cpp).

Fichier XML suivant, ros2_replay.xml, drive RTI Replay Service :

<?xml version="1.0"?>
<dds xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://community.rti.com/schema/5.3.1/rti_replay.xsd">

<!-- Example configuration for RTI Replay Service 2.0, tailored for ROS2 rt/* topics (PointCloud2) -->
<replay_service name="simple_example">
<annotation>
<documentation>Replay service example</documentation>
</annotation>
<time_control>
<rate>1</rate> <!-- Optional rate multiplier -->
<start_mode>AUTO</start_mode>
<start_offset><sec>5</sec></start_offset>
</time_control>

<!-- Source Database, Required -->
<replay_database name="simple_config">
<filename>ros2_replay_example.dat_0_0</filename>
<readonly>false</readonly>

<!-- Participant configuration. Suppress sending typeCode info (for ROS2) -->
<participant>
<domain_id>0</domain_id>
<participant_qos>
<resource_limits>
<type_code_max_serialized_length>0</type_code_max_serialized_length>
<type_object_max_serialized_length>0</type_object_max_serialized_length>
</resource_limits>
</participant_qos>
</participant>

<!-- Get typeCode info for playback (PointCloud2 type) -->
<type_config>
<xml>
<file_group>
<element>
<file_name>
<element>PointCloud2.xml</element>
</file_name>
<type>
<element>
<register_top_level>false</register_top_level>
<type_name>sensor_msgs::msg::dds_::PointCloud2_</type_name>
<registered_type_name>
<element>sensor_msgs::msg::dds_::PointCloud2_</element>
</registered_type_name>
<topics><element>rt/velodyne_points</element></topics>
</element>
</type>
</element>
</file_group>
<path><element>.</element></path>
</xml>
</type_config>

<session name="A_Session">
<!-- Default values for <time_control> * -->
<replay_topic name="All_Topic">
<input>
<topic_name>*</topic_name>
<type_name>*</type_name>
<record_group_name>*</record_group_name>
<domain_name>*</domain_name>
</input>
</replay_topic>
</session>
</replay_database>
</replay_service>
</dds>

Pour rejouer données enregistrées back into ROS2, exécutez :

rtireplay -cfgFile ros2_replay.xml -cfgName simple_example

Résultats

Après enregistrement série sessions ROS2 LiDAR, données peuvent être rejouées on-demand. Screenshot suivant démontre point cloud rejoué dans environnement ROS2 :

Rejouer Données LiDAR ROS2 avec RTI Recording Service et DDS

Cette approche élimine besoin simulateur automobile dédié ou véhicule physique pendant testing. En tweaking <time_control><rate> setting dans replay XML, vous pouvez accélérer playback – eff

[1] [2]  >

Technologie de l'Internet des objets

  1. OpenDDS vs RTI Connext DDS : Choisir la bonne solution Data Distribution Service
  2. MQTT vs DDS : Choisir le bon protocole M2M pour l'IoT
  3. La Quatrième Révolution Industrielle : comment l'Industrie 4.0 redessine le manufacturing
  4. Assurer la conformité des données dans l'Internet des objets
  5. Exploiter les données dans l'Internet de la fiabilité : stratégies pour une gestion efficace
  6. Démocratiser l'Internet des objets : la prochaine génération satellite IoT apporte connectivité universelle, abordable
  7. Cinq tendances de connectivité émergentes façonnant l'industrie moderne
  8. Le guide définitif des 10 meilleures plateformes IoT industrielles (2024)
  9. L'avenir des centres de données : tendances, technologies et durabilité