Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

ROS2 LiDAR Data Replayen met RTI Recording Service en DDS

ROS2 LiDAR Data Replayen met RTI Recording Service en DDS

Real‑world testen is onmisbaar voor gedistribueerde en autonoom systemen, maar kan prohibitief duur zijn. Door sensordata op te nemen en te replayen, kunnen teams duurzame waarde genereren uit elke testsessie.

Stel u een semi‑autonoom voertuig voor uitgerust met GPS, camera's, LiDAR, RADAR, inertiële sensoren, en een complete suite van controle signalen. Het volume data gegenereerd tijdens een enkele rit is staggering, en de kosten van herhaalde on‑road proeven is hoog. Het opnemen van die data voor later replay – essentieel een digitale bibliotheek van testsessies creërend – zou test herhaalbaarheid en flexibiliteit dramatisch verbeteren.

Jarenlang hebben DDS gebruikers toegang gehad tot hoge‑bandbreedte opname en playback via RTI Recording Service. Het ondersteunt continue, 24/7 vastlegging van alle systeemdata tijdens uitgebreide deployments, zoals zeeproeven van maritieme schepen. Dankzij DDS's gedistribueerde architectuur, kunnen meerdere Recording Service instanties gelanceerd worden om tempo te houden met massive datastromen.

ROS2, wat op DDS vertrouwt voor inter‑proces communicatie, kan dezelfde veld‑geteste Recording Service benutten om hoge‑bandbreedte ROS2 topics zoals LiDAR point clouds vast te leggen. In het volgende voorbeeld zullen we een matige‑bandbreedte topic (ROS2 LiDAR data) opzetten en het terug replayen in ROS2 met alleen DDS tools.

Recorder Configuratie

RTI Recording Service wordt gedreven door een XML configuratiebestand dat specifickeert welke topics op te nemen, de gewenste QoS instellingen, en opslagopties. In deze setup instrueren we de recorder om de ROS2 PointCloud2 data als een enkele kolom te behandelen, wat kostbare deserialisatie voor deze grote datatype voorkomt.

Hieronder is het XML bestand dat we gebruiken, genaamd 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>

Om de Recording Service met deze configuratie te starten, voer het volgende commando uit vanuit de directory die ros2_record.xml bevat:

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

De service subscribet op het LiDAR topic en neemt continu op tot u het stopt. De output is een SQLite database genaamd ros2_replay_example.dat_0_0. Opvolgende opnamesessies voegen numerieke suffixen toe aan de bestandsnaam, wat ervoor zorgt dat elk bestand binnen een door de gebruiker gedefinieerde grootte blijft.

Replayer Configuratie

Met de data opgenomen, kunnen we het nu replayen in een ROS2 omgeving. Eerdere blogposts benadrukten dat ROS2 een paar QoS tweaks vereist voor naadloze interoperabiliteit. In dit voorbeeld onderdrukken we type‑code transmissie om de standaardconfiguratie van ROS2 "Bouncy Bolson" (of elke ROS2 release die rmw_connext_cpp gebruikt) te matchen.

Het volgende XML bestand, ros2_replay.xml, stuurt de 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>
<max_sequence>2147483647</max_sequence>
</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>

Om de opgenomen data terug te replayen in ROS2, voer uit:

rtireplay -cfgFile ros2_replay.xml -cfgName simple_example

Resultaten

Na het opnemen van een serie ROS2 LiDAR sessies, kan de data on‑demand gereplayed worden. De volgende screenshot toont de gereplayde point cloud binnen de ROS2 omgeving:

ROS2 LiDAR Data Replayen met RTI Recording Service en DDS

Deze benadering eli

[1] [2]  >

Internet of Things-technologie

  1. OpenDDS vs. RTI Connext DDS: De Juiste Data Distribution Service Oplossing Kiezen
  2. MQTT vs. DDS: De Juiste M2M Protocol Kiezen voor IoT
  3. Connext DDS in Industriële IoT: 5 Kerninzichten voor Betrouwbaarheid, Beveiliging en Schaalbaarheid
  4. ROS 2 en DDS Interoperabiliteit: Een Praktische Gids voor Naadloze Integratie
  5. De Vierde Industriële Revolutie: Hoe Industrie 4.0 de Productie Herschikt
  6. Datacompliance waarborgen in het Internet of Things
  7. Data benutten in het Internet of Reliability: Strategieën voor effectief beheer
  8. Internet of Things democratiseren: Next-gen Satelliet IoT brengt universele, betaalbare connectiviteit
  9. Vijf opkomende connectiviteitstrends die de moderne industrie vormgeven
  10. De Definitieve Gids naar de Top 10 Industriële IoT-platforms (2024)
  11. De Toekomst Van Datacenters: Trends, Tech En Duurzaamheid