9 increíbles herramientas de código abierto para administrar sus rosbags

Nov 24 2022
Una selección hecha por los ingenieros de Evocargo Ya sea que recién esté comenzando con ROS o que ya sea un desarrollador profundo, puede sentir que ciertas cosas y operaciones se pueden hacer de manera más fácil, rápida o conveniente. Incluso podría pensar en crear alguna herramienta para ROS ahora mismo, por ejemplo, la que mostraría los metadatos de sus maletas en una vista agradable.

Una selección hecha por los ingenieros de Evocargo

Ya sea que recién esté comenzando con ROS o que ya sea un desarrollador profundo, puede sentir que ciertas cosas y operaciones se pueden hacer de manera más fácil, rápida o conveniente. Incluso podría pensar en crear alguna herramienta para ROS ahora mismo, por ejemplo, la que mostraría los metadatos de sus maletas en una vista agradable. Antes de hacerlo, consulte nuestra selección de paquetes ROS de código abierto; puede encontrar soluciones listas para usar que le ahorrarán mucho tiempo y esfuerzo.

En esta publicación, nos enfocamos en paquetes para bolsas ROS que lo ayudan a visualizar y editar datos de bolsas. Con algunos paquetes vamos más allá y demostramos cómo puede actualizarlos para las necesidades específicas de su producto.

Los vehículos autónomos generan enormes cantidades de datos necesarios para la percepción, la localización, la prevención de colisiones, el autodiagnóstico y otras tareas esenciales en un automóvil autónomo. Dichos datos son un activo muy valioso, ya que se utilizan para el entrenamiento de redes neuronales y la investigación de incidentes. Por ejemplo, la Administración Nacional de Seguridad del Tráfico en las Carreteras de EE. UU. ha obligado a algunos fabricantes y operadores a informar ciertos accidentes que involucran vehículos equipados con SAE Nivel 2 -5 Sistemas Avanzados de Asistencia al Conductor (ADAS) para investigar la seguridad de los sistemas autónomos y resumir los resultados en un informe de accidente Esto también puede convertirse en una práctica común en otros países.

Las estimaciones de los datos producidos pueden variar para diferentes vehículos debido al equipo a bordo y los escenarios de aplicación. Con múltiples cámaras de alta resolución, lidars, radares y otros sensores a bordo, un automóvil autónomo puede generar hasta 15 TB de datos para un viaje de unas pocas horas. Esto significa que los taxis robotizados que realizan viajes de pasajeros sin escalas supuestamente podrían generar 450 TB por día (busque más aquí y aquí ).

Si está utilizando ROS, todos los datos se escriben en archivos de bolsa que se graban y almacenan para que luego pueda indexarlos, anotarlos y reproducirlos.

Figura 1. Una lista de archivos de bolsa ROS

Entonces, termina con una impresionante lista de archivos que necesita para navegar y analizar. Para hacerlo, puede usar paquetes ROS gratuitos que hemos seleccionado para describir en este artículo. Algunos de ellos están incluidos en el Índice ROS , otros no. Y algunos de ellos están diseñados solo para ROS 1; tomaremos notas al respecto.

Visualización de bolsas en una interfaz de usuario agradable

Como puede ver en la Figura 1 , las bolsas son básicamente archivos en un directorio. Debe usar la interfaz de línea de comandos para trabajar con ellos, y no hay mucho que pueda hacer: de forma predeterminada, ROS le permite reproducir un archivo de bolsa, ver información sobre la bolsa, su tamaño y duración, ver temas, tipos de mensajes y su cantidad. Cuantos más datos acumule, más difícil será encontrar algo que necesite.

La herramienta Bag Database del Southwest Research Institute ofrece una interfaz web amigable para monitorear su directorio en busca de archivos bag ROS. Le permite ver muchos metadatos útiles como la fecha de grabación, la ruta, la imagen correspondiente y más.

¡Tu interacción con las bolsas se vuelve mucho más fácil y eficiente!

Figura 2. Visualización de maletas en Bag Database

Además, Bag Database le permite agregar varios scripts de procesamiento posterior que luego se pueden ejecutar en contenedores Docker aislados. Por ejemplo, en Evocargo, hemos escrito un bag_indexerscript que muestra un resumen completo del contenido de la maleta en una sola imagen PNG.

Figura 3. Resumen de la bolsa generado con el script en Bag Database

Con un vistazo de un ojo, puede hacerse una idea de lo siguiente:

  • La calidad del carril, la luz y las condiciones climáticas a través de las miniaturas.
  • Ruta de referencia y desviación de la misma según odometría, GNSS y localización
  • Velocidad en cualquier momento o posición dada
  • Modo de control del vehículo, o cuánto tiempo tuvo que operarse manualmente el vehículo
  • Distancia y duración del viaje
  • Nombre de la bolsa y más

Los parámetros de las instantáneas, como la posición y los colores de los bloques de información y el número de miniaturas de las imágenes de la cámara, se definen en un archivo de configuración.

En Bag Database , el bag_indexerscript tiene el siguiente aspecto:

Figura 4. La ventana para agregar scripts de posprocesamiento

Para obtener más detalles y ejemplos de scripts, consulte la documentación de Bag Database .

Agregar metadatos

Los metadatos de la bolsa contienen detalles sobre las condiciones de grabación de la bolsa, como la ubicación de la grabación, el sistema operativo y la versión del software, los dispositivos conectados, las condiciones climáticas y la tarea. Normalmente, almacena dichos datos en un archivo separado. Sin embargo, algunos visualizadores de bolsas, por ejemplo, Bag Database , requieren que los metadatos se integren en los archivos de bolsas.

Para escribir metadatos directamente en los archivos bag de ROS1, puede usar el paquete rosbag_metadata . De fábrica, guarda sus comentarios junto con los datos del sistema, como la versión del paquete ROS, información sobre repositorios git y hashes git-commit, variables ambientales, configuración de red. Todos estos datos se agregan como texto en un archivo YAML al tema /metadata.

Puede usar rosbag_metadata tal como está o adaptarlo para satisfacer sus necesidades especiales de productos. Por ejemplo, para el servicio de logística de Evocargo, necesitábamos información más específica a la mano, como el modelo y el número del automóvil, información de calibración sin procesar y mapas. De ahí que creamos nuestro propio paquete basado en rosbag_metadata , más adaptado a la gestión de vehículos autónomos. Y podemos agregar fácilmente más campos cuando sea necesario.

Figura 8. Adición de metadatos específicos del producto a las bolsas

Reproducción y visualización

Una de las opciones para ROS 1 sería Webviz , una herramienta web de reproducción y visualización de bolsos desarrollada y de código abierto por los ingenieros de Cruise . Le permite arrastrar y soltar archivos de bolsa ROS para obtener una visión visual inmediata de los datos. ¡Tan sencillo como eso! Además, es una aplicación web, por lo que no es necesario implementar ningún entorno especial.

Figura 5. Esta ilustración se tomó del artículo "Webviz: An Open Source Platform for Robotics Data Visualization" de Esther S. Weon

Su interfaz es personalizable, lo que le permite agregar paneles y ver datos más relevantes en un solo lugar. Además, puede integrarlo con otras herramientas; por ejemplo, puede abrir Webviz directamente desde la ventana Base de datos de bolsas . (Esta configuración se describe aquí ).

Figura 6. Apertura de la aplicación web Webviz desde el menú en Bag Database

Otra herramienta que me gustaría mencionar aquí es Foxglove Studio . Tiene el mismo propósito de visualización y análisis en robótica, pero va más allá al admitir tanto ROS 1 como ROS 2 y ofrecer soporte comercial. Comenzó como una bifurcación del proyecto Webviz de Cruise y ahora se está desarrollando activamente y ampliando su conjunto de funciones. Está disponible como una aplicación web multiplataforma y como una aplicación de escritorio que desbloquea más funciones y extensiones de panel personalizadas en dispositivos Linux, macOS y Windows.

Figura 7. Jugando una bolsa en la interfaz Foxglove

Puede leer más sobre el desarrollo y las actualizaciones de Foxglove Studio en su blog en Medium o visite su sitio web .

Edición de bolsas

Si desea editar archivos bag en ROS 1, consulte el rosbag_editor de Davide Faconti . Esta herramienta no le permite aplicar cambios por lotes a archivos de bolsa, pero puede ser útil para editar ciertas bolsas, por ejemplo, para demostración. Su interfaz de usuario simple le permite renombrar y eliminar temas manualmente, cambiar la duración de la bolsa cortando el inicio o el final del archivo, cambiar el tipo de compresión para reducir el tamaño del archivo y eliminar transformaciones.

En Evocargo, necesitábamos una herramienta que permitiera la edición por lotes de maletas grabadas en ROS1, por lo que nuestro ingeniero Vladimir Burmistrov creó el paquete ros_bag_migration . Le permite cambiar el formato de los mensajes en paquetes grabados, no solo cambiar el nombre y eliminar mensajes, sino también dividir un mensaje en dos y aplicar reglas definidas a ciertas versiones de mensajes. Este paquete funciona perfectamente para situaciones en las que decide registrar nuevas maletas con un conjunto actualizado de definiciones de mensajes y desea cambiar las maletas más antiguas en consecuencia para la compatibilidad.

Construyendo gráficos

A continuación, vamos a hablar sobre PlotJuggler , un increíble generador de gráficos (otro paquete de Davide Faconti ). PlotJuggler le permite analizar cualquier dato que fluya dentro de su sistema o robot. La depuración se vuelve mucho más fácil gracias a sus características:

  • Puede crear gráficos para datos en temas de ROS en tiempo real o cargando uno o varios archivos .bag en PlotJuggler .
  • Figura 9. Deslizamiento a través del archivo de bolsa
  • Agregar y administrar múltiples gráficos de datos es muy fácil de usar. Por ejemplo, puede crear una pestaña XY tomando algunos datos 2D y trazarlos para visualizar posiciones 2D para cada marca de tiempo.
  • Hay muchas oportunidades integradas de transformación de datos para gráficos, por ejemplo, puede eliminar la compensación de datos, escalarlos, integrarlos, eliminar valores atípicos, etc. Incluso puede crear combinaciones de transformaciones, lo cual es muy útil para comparar datos de diferentes fuentes.
  • Si no ha encontrado una función de transformación adecuada, puede crear la suya propia. Por ejemplo, podría escribir una función para extraer y visualizar el ángulo de guiñada de los cuaterniones.
  • ¡Por último, pero no menos importante! La característica principal: cuando se trata de bolsas, puede habilitar "ROS Topic Re-Publisher". Eso significa que puede arrastrar el control deslizante de tiempo al momento que desee y PlotJuggler publicará datos de todos los temas correspondientes a una marca de tiempo elegida. Esto es muy útil cuando desea ver imágenes de las cámaras para un momento en particular, consultar mensajes de diagnóstico o incluso visualizar cada dato en alguna otra herramienta de visualización como RVIZ.

Entrega de mensajes

Para fines de prueba y depuración, es importante que los resultados de sus experimentos se reproduzcan de manera estable. Por ejemplo, cuando prueba un algoritmo de localización en una bolsa que contiene ciertos datos de sensores, seguramente espera el mismo resultado cada vez que ejecuta este algoritmo. Sin embargo, la lógica de publicación-suscripción en ROS no puede garantizar la entrega de mensajes al 100% y es probable que sus nodos no procesen todos los mensajes en un paquete en el mismo orden.

El paquete batch_ros para ROS 1 le permite especificar los temas en el archivo bag que son críticos para su tarea. batch_ros esperará la llamada de servicio de sincronización después de publicar cada mensaje de estos temas. Garantiza que los mensajes del archivo bag se publicarán después de que su nodo los procese uno por uno en el orden definido.

Figura 10. Después de enviar un mensaje sobre uno de los temas, la reproducción se detiene y espera a que se invoque un servicio de activación desde su nodo que indica al reproductor que continúe publicando

Por lo tanto, batch_ros garantiza un procesamiento determinista y repetible de las bolsas.

Estado de grabación

Mientras se graba una bolsa, la configuración predeterminada de ROS 1 solo muestra el mensaje "Grabando...". Si algo sale mal, lo descubre solo cuando la tarea se completa y falla. Para que el proceso de grabación sea más informativo, pruebe la interfaz de terminal rosbag_fancy para ROS 1. Muestra datos útiles en tiempo real, como los temas que se están grabando, el uso de la memoria, el tamaño del archivo bag y más, todo en una tabla súper simple.

Figura 11. Esta ilustración está tomada de la página rosbag_fancy en github

También puede ver la cantidad de mensajes caídos ( Drops ), lo que nos lleva al siguiente problema y la posible solución.

Gracias por leer hasta aquí. ¡Debe gustarte mejorar tu experiencia con ROS tanto como a nosotros! Resumamos. En esta publicación, analizamos los siguientes paquetes de ROS: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy y batch_ros .

Si encuentra útil esta selección de paquetes, háganoslo saber aplaudiendo y comentando. Estaremos encantados de compartir más de tales descripciones generales en nuestro blog, por ejemplo, hay paquetes ROS notables para pruebas, simulación, documentación y otros fines.