Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Tecnología de Internet de las cosas

Reproduciendo Datos LiDAR ROS2 con RTI Recording Service y DDS

Reproduciendo Datos LiDAR ROS2 con RTI Recording Service y DDS

Las pruebas en el mundo real son indispensables para sistemas distribuidos y autónomos, pero pueden ser prohibitivamente costosas. Al capturar y reproducir datos de sensores, los equipos pueden generar valor duradero de cada sesión de prueba.

Imagine un vehículo semi-autónomo equipado con GPS, cámaras, LiDAR, RADAR, sensores inerciales y una suite completa de señales de control. El volumen de datos generado en una sola corrida es asombroso, y el costo de ensayos repetidos en carretera es alto. Grabar esos datos para reproducción posterior —esencialmente creando una biblioteca digital de sesiones de prueba— mejorarían drásticamente la repetibilidad y flexibilidad de las pruebas.

Durante años, los usuarios de DDS han tenido acceso a grabación y reproducción de alto ancho de banda a través de RTI Recording Service. Soporta captura continua 24/7 de todos los datos del sistema durante despliegues extendidos, como pruebas en mar de buques navales. Gracias a la arquitectura distribuida de DDS, múltiples instancias de Recording Service pueden lanzarse para mantener el ritmo con flujos de datos masivos.

ROS2, que depende de DDS para comunicación inter-proceso, puede aprovechar el mismo Recording Service probado en campo para capturar tópicos ROS2 de alto ancho de banda como nubes de puntos LiDAR. En el siguiente ejemplo, configuraremos un tópico de ancho de banda moderado (datos LiDAR ROS2) y lo reproduciremos de vuelta en ROS2 usando solo herramientas DDS.

Configuración del Grabador

RTI Recording Service se controla mediante un archivo de configuración XML que especifica qué tópicos grabar, ajustes QoS deseados y opciones de almacenamiento. En esta configuración, instruimos al grabador para tratar los datos ROS2 PointCloud2 como una sola columna, evitando deserialización costosa para este tipo de datos grande.

A continuación se muestra el archivo XML que usamos, llamado 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">
 <!-- Habilitar acceso remoto a RTI Recorder. El Recorder crea un
 DataReader y un DataWriter en el dominio especificado. -->
 <remote_access>
 <enabled>true</enabled>
 <remote_access_domain>0</remote_access_domain>
 </remote_access>

 <!-- Nombre base para el conjunto de archivos que almacenarán datos grabados -->
 <recorder_database>
 <database_name>ros2_replay_example.dat</database_name>
 <overwrite>true</overwrite>
 </recorder_database>

 <!-- Grabar datos de un dominio -->
 <domain name="domain0">
 <domain_id>0</domain_id>
 <!-- Desactivar deserialización para tipo de datos ROS2 ‘PointCloud2’ (más de 5k elementos) -->
 <deserialize_mode>RTIDDS_DESERIALIZEMODE_NEVER</deserialize_mode>
 </domain>

 <!-- Crear un TopicGroup que solo grabe tópicos rt/velodyne_points -->
 <topic_group name="ros-rt">
 <topics><topic_expr>rt/velodyne_points</topic_expr></topics>
 <field_expr>*</field_expr>
 </topic_group>

 <!-- Crear un RecordGroup -->
 <record_group name="RecordAll">
 <!-- Especificar qué dominios grabar -->
 <domain_ref><element>domain0</element></domain_ref>
 <!-- Especificar qué TopicGroups grabar -->
 <topic_ref><element>ros-rt</element></topic_ref>
 </record_group>

 <!-- Agregar info de dominio y typecode para grabar tipo ROS2 ‘PointCloud2’ -->
 <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>

Para iniciar el Recording Service con esta configuración, ejecute el siguiente comando desde el directorio que contiene ros2_record.xml:

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

El servicio se suscribe al tópico LiDAR y graba continuamente hasta que lo detenga. La salida es una base de datos SQLite llamada ros2_replay_example.dat_0_0. Sesiones de grabación subsiguientes añaden sufijos numéricos al nombre de archivo, asegurando que cada archivo permanezca dentro de un límite de tamaño definido por el usuario.

Configuración del Reproductor

Con los datos grabados, ahora podemos reproducirlos en un entorno ROS2. Publicaciones anteriores destacaron que ROS2 requiere algunos ajustes QoS para interoperabilidad fluida. En este ejemplo, suprimimos la transmisión de type-code para coincidir con la configuración por defecto de ROS2 "Bouncy Bolson" (o cualquier release ROS2 usando rmw_connext_cpp).

El siguiente archivo XML, ros2_replay.xml, impulsa el 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">

 <!-- Configuración de ejemplo para RTI Replay Service 2.0, adaptada para tópicos ROS2 rt/* (PointCloud2) -->
 <replay_service name="simple_example">
 <annotation>
 <documentation>Ejemplo de servicio de reproducción</documentation>
 </annotation>
 <time_control>
 <rate>1</rate> <!-- Multiplicador de tasa opcional -->
 <start_mode>AUTO</start_mode>
 <start_offset><sec>5</sec></start_offset>
 </time_control>

 <!-- Base de Datos Origen, Requerida -->
 <replay_database name="simple_config">
 <filename>ros2_replay_example.dat_0_0</filename>
 <readonly>false</readonly>

 <!-- Configuración de Participante. Suprimir envío de info typeCode (para 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>

 <!-- Obtener info typeCode para reproducción (tipo PointCloud2) -->
 <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>
 </element>
 </file_group>
 <path><element>.</element></path>
 </xml>
 </type_config>

 <session name="A_Session">
 <!-- Valores por defecto para <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>

Para reproducir los datos grabados de vuelta en ROS2, ejecute:

rtireplay -cfgFile ros2_replay.xml -cfgName simple_example

Resultados

Después de grabar una serie de sesiones ROS2 LiDAR, los datos pueden reproducirse bajo demanda. La siguiente captura de pantalla demuestra la nube de puntos reproducida dentro del entorno ROS2:

Reproduciendo Datos LiDAR ROS2 con RTI Recording Service y DDS

Este enfoque elimina la necesidad de un simulador automotriz dedicado o vehículo físico durante las pruebas. Ajustando la configuración <time_control><rate> en el XML de reprod

[1] [2]  >

Tecnología de Internet de las cosas

  1. OpenDDS vs. RTI Connext DDS: Elegir la Solución DDS Adecuada
  2. MQTT vs. DDS: Elegir el Protocolo M2M Adecuado para IoT
  3. Connext DDS en IIoT: 5 Claves para Fiabilidad, Seguridad y Escalabilidad
  4. ROS 2 e Interoperabilidad DDS: Guía Práctica para Integración Sin Fisuras
  5. La Cuarta Revolución Industrial: Cómo la Industria 4.0 Está Reconfigurando la Fabricación
  6. Garantizando cumplimiento de datos en el Internet de las Cosas
  7. Aprovechar los datos en el Internet de la Fiabilidad: estrategias para una gestión efectiva
  8. Democratizando el Internet de las Cosas: IoT satelital de nueva generación brinda conectividad universal y asequible
  9. Cinco tendencias emergentes de conectividad que moldean la industria moderna
  10. La Guía Definitiva del Top 10 de Plataformas Industrial IoT (2024)
  11. El Futuro de los Centros de Datos: Tendencias, Tecnología y Sostenibilidad