Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Teknologi Internet of Things

Memutar Ulang Data LiDAR ROS2 dengan RTI Recording Service dan DDS

Memutar Ulang Data LiDAR ROS2 dengan RTI Recording Service dan DDS

Pengujian di dunia nyata tidak dapat digantikan untuk sistem terdistribusi dan otonom, namun dapat sangat mahal. Dengan menangkap dan memutar ulang data sensor, tim dapat menghasilkan nilai bertahan dari setiap sesi pengujian.

Bayangkan kendaraan semi-otonom yang dilengkapi GPS, kamera, LiDAR, RADAR, sensor inersial, dan serangkaian sinyal kontrol lengkap. Volume data yang dihasilkan selama satu lari sangat besar, dan biaya uji coba berulang di jalan raya tinggi. Merekam data tersebut untuk diputar ulang nanti—esensialnya menciptakan perpustakaan digital dari sesi pengujian—akan secara dramatis meningkatkan repeatabilitas dan fleksibilitas pengujian.

Selama bertahun-tahun, pengguna DDS telah memiliki akses ke perekaman dan pemutaran bandwidth tinggi melalui RTI Recording Service. Ini mendukung tangkapan berkelanjutan, 24/7 dari semua data sistem selama penerapan yang diperpanjang, seperti uji coba di laut dari kapal angkatan laut. Berkat arsitektur terdistribusi DDS, beberapa instance Recording Service dapat diluncurkan untuk mengikuti aliran data masif.

ROS2, yang bergantung pada DDS untuk komunikasi antar-proses, dapat memanfaatkan Recording Service yang telah teruji lapangan ini untuk menangkap topik ROS2 bandwidth tinggi seperti titik awan LiDAR. Dalam contoh berikut, kami akan menyiapkan topik bandwidth sedang (data LiDAR ROS2) dan memutarnya ulang ke dalam ROS2 menggunakan alat DDS saja.

Konfigurasi Rekaman

RTI Recording Service dikendalikan oleh file konfigurasi XML yang menentukan topik mana yang akan direkam, pengaturan QoS yang diinginkan, dan opsi penyimpanan. Dalam pengaturan ini, kami menginstruksikan perekam untuk memperlakukan data ROS2 PointCloud2 sebagai satu kolom, menghindari deserialisasi yang mahal untuk tipe data besar ini.

Berikut adalah file XML yang kami gunakan, bernama 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>

Untuk memulai Recording Service dengan konfigurasi ini, jalankan perintah berikut dari direktori yang berisi ros2_record.xml:

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

Layanan ini berlangganan ke topik LiDAR dan merekam secara berkelanjutan sampai Anda menghentikannya. Outputnya adalah database SQLite bernama ros2_replay_example.dat_0_0. Sesi perekaman berikutnya menambahkan awalan angka ke nama file, memastikan setiap file tetap dalam batas ukuran yang ditentukan pengguna.

Konfigurasi Pemutaran Ulang

Dengan data yang direkam, kami sekarang dapat memutarnya ulang ke dalam lingkungan ROS2. Posting blog sebelumnya menyoroti bahwa ROS2 membutuhkan beberapa penyesuaian QoS untuk interoperabilitas yang mulus. Dalam contoh ini, kami menekan transmisi type-code agar cocok dengan konfigurasi default ROS2 “Bouncy Bolson” (atau rilis ROS2 apa pun yang menggunakan rmw_connext_cpp).

File XML berikut, ros2_replay.xml, menggerakkan 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>
<max_sequence>2147483647</max_sequence>
</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>

Untuk memutar ulang data yang direkam ke dalam ROS2, jalankan:

rtireplay -cfgFile ros2_replay.xml -cfgName simple_example

Hasil

Setelah merekam serangkaian sesi LiDAR ROS2, data dapat diputar ulang sesuai permintaan. Tangkapan layar berikut menunjukkan titik awan yang diputar ulang di dalam lingkungan ROS2:

Memutar Ulang Data LiDAR ROS2 dengan RTI Recording Service dan DDS

[1] [2]  >

Teknologi Internet of Things

  1. OpenDDS vs. RTI Connext DDS: Memilih Solusi Data Distribution Service yang Tepat
  2. MQTT vs. DDS: Memilih Protokol M2M yang Tepat untuk IoT
  3. Connext DDS di IIoT: 5 Wawasan Utama untuk Keandalan, Keamanan, dan Skalabilitas
  4. Revolusi Industri Keempat: Bagaimana Industri 4.0 Mengubah Manufaktur
  5. Memastikan Kepatuhan Data di Internet of Things
  6. Memanfaatkan Data di Internet of Reliability: Strategi untuk Manajemen yang Efektif
  7. Membumikan Internet of Things: Satelit IoT Generasi Berikutnya Menyediakan Konektivitas Universal dan Terjangkau
  8. Lima Tren Konektivitas Baru yang Bentuk Industri Modern
  9. Panduan Definitif untuk 10 Platform IIoT Teratas (2024)
  10. Masa Depan Data Center: Tren, Teknologi, dan Keberlanjutan