9 incríveis ferramentas de código aberto para gerenciar seus rosbags

Nov 24 2022
Uma seleção feita pelos engenheiros da Evocargo Quer você esteja apenas começando com o ROS ou já seja um desenvolvedor experiente, você pode sentir que certas coisas e operações podem ser feitas de maneira mais fácil, rápida ou conveniente. Você pode até pensar em criar alguma ferramenta para o ROS agora, por exemplo, uma que mostre os metadados de suas malas em uma bela vista.

Uma seleção feita pelos engenheiros da Evocargo

Se você está apenas começando com o ROS ou já é um desenvolvedor profundo, pode sentir que certas coisas e operações podem ser feitas de maneira mais fácil, rápida ou conveniente. Você pode até pensar em criar alguma ferramenta para o ROS agora, por exemplo, uma que mostre os metadados de suas malas em uma bela vista. Antes de fazer isso, confira nossa seleção de pacotes ROS de código aberto — você pode encontrar soluções prontas que economizarão muito tempo e esforço.

Neste post, nos concentramos em pacotes para bolsas ROS que ajudam você a visualizar e editar dados de bolsas. Com alguns pacotes, vamos além e demonstramos como você pode atualizá-los para atender às necessidades específicas de seu produto.

Veículos autônomos geram grandes quantidades de dados necessários para percepção, localização, prevenção de colisões, autodiagnóstico e outras tarefas essenciais em um carro autônomo. Esses dados são um ativo altamente valioso, pois são usados ​​para treinamento de redes neurais e investigação de incidentes. Por exemplo, a Administração Nacional de Segurança no Tráfego Rodoviário dos EUA obrigou alguns fabricantes e operadores a relatar certas colisões envolvendo veículos equipados com Sistemas Avançados de Assistência ao Motorista (ADAS) Nível 2-5 da SAE para investigar a segurança dos sistemas autônomos e resumir os resultados em um relatório de acidente . Isso também pode se tornar uma prática comum em outros países.

As estimativas dos dados produzidos podem variar para diferentes veículos devido ao equipamento a bordo e aos cenários de aplicação. Com várias câmeras de alta resolução, lidars, radares e outros sensores a bordo, um carro autônomo pode gerar até 15 TB de dados para um trajeto de algumas horas. Isso significa que os robotaxis que fazem viagens de passageiros sem parar podem fazer 450 TB por dia (procure mais aqui e aqui ).

Se você estiver usando o ROS, todos os dados são gravados em arquivos bag que são gravados e armazenados para que você possa indexá-los, anotá-los e reproduzi-los posteriormente.

Figura 1. Uma lista de arquivos de bolsa ROS

Assim, você acaba com uma lista impressionante de arquivos pelos quais precisa navegar e analisar. Para fazer isso, você pode usar pacotes ROS gratuitos que selecionamos para descrever neste artigo. Alguns deles estão incluídos no Índice ROS , outros não. E alguns deles são projetados apenas para ROS 1 - faremos anotações sobre isso.

Visualizando bolsas em uma interface de usuário agradável

Como você pode ver na Figura 1 , bags são basicamente arquivos em um diretório. Você precisa usar a interface de linha de comando para trabalhar com eles e não há muito o que fazer — por padrão, o ROS permite que você reproduza um arquivo de bag, visualize informações sobre a bag, seu tamanho e duração, visualize tópicos, tipos de mensagens e sua quantidade. Quanto mais dados você acumula, mais difícil é encontrar algo que você precisa.

A ferramenta Bag Database do Southwest Research Institute oferece uma interface web amigável para monitorar seu diretório em busca de arquivos de bolsa ROS. Ele permite que você visualize muitos metadados úteis, como a data da gravação, a rota, a imagem correspondente e muito mais.

Sua interação com as bolsas fica muito mais fácil e eficiente!

Figura 2. Visualização de bagagens no Bag Database

Além disso, o Bag Database permite adicionar vários scripts de pós-processamento que podem ser executados em contêineres Docker isolados. Por exemplo, na Evocargo, escrevemos um bag_indexerscript que exibe um resumo abrangente do conteúdo da sacola em uma única imagem PNG.

Figura 3. Resumo da Bag gerado com o script no Bag Database

Com um vislumbre de olho, você pode ter a ideia do seguinte:

  • A qualidade da pista, luz e condições meteorológicas através das miniaturas
  • Rota de referência e desvio dela com base em odometria, GNSS e localização
  • Velocidade em qualquer momento ou posição
  • Modo de controle do veículo, ou quanto tempo o veículo teve que ser operado manualmente
  • Distância e duração do passeio
  • Nome da bolsa e muito mais

Os parâmetros dos instantâneos, como a posição e as cores dos blocos de informações e o número de miniaturas das imagens da câmera, são definidos em um arquivo de configuração.

No Bag Database , o bag_indexerscript tem a seguinte aparência:

Figura 4. A janela para adicionar scripts de pós-processamento

Para obter mais detalhes e exemplos de scripts, consulte a documentação do Bag Database .

Adicionando metadados

Os metadados da bolsa contêm detalhes sobre as condições de gravação da bolsa, como local de gravação, sistema operacional e versão do software, dispositivos conectados, condições climáticas, tarefa. Normalmente, você armazena esses dados em um arquivo separado. No entanto, alguns visualizadores de malas, por exemplo Bag Database , exigem que os metadados sejam integrados aos arquivos de malas.

Para gravar metadados diretamente nos arquivos bag do ROS1, você pode usar o pacote rosbag_metadata . Pronto para uso, ele salva seus comentários junto com dados do sistema, como versão do pacote ROS, informações sobre repositórios git e hashes git-commit, variáveis ​​ambientais, configuração de rede. Todos esses dados são adicionados como texto em um arquivo YAML ao tópico /metadata.

Você pode usar rosbag_metadata como está ou atendê-lo para atender às suas necessidades especiais de produto. Por exemplo, para o serviço de logística da Evocargo, precisávamos de informações mais específicas, como modelo e número do carro, informações brutas de calibração e mapas. Assim, criamos nosso próprio pacote baseado em rosbag_metadata , mais adaptado ao gerenciamento de veículos autônomos. E podemos facilmente adicionar mais campos quando necessário.

Figura 8. Adicionando metadados específicos do produto às sacolas

Reprodução e visualização

Uma das opções para o ROS 1 seria o Webviz , uma ferramenta web de reprodução e visualização de bolsas desenvolvida e de código aberto pelos engenheiros da Cruise . Ele permite que você arraste e solte os arquivos do ROS bag para obter uma visão visual imediata dos dados. Tão simples como isso! Além disso, é um aplicativo da web, então você não precisa implantar nenhum ambiente especial.

Figura 5. Esta ilustração foi retirada do artigo “Webviz: An Open Source Platform for Robotics Data Visualization” de Esther S. Weon

Sua interface é personalizável permitindo que você adicione painéis e veja os dados mais relevantes em um só lugar. Além disso, você pode integrá-lo a outras ferramentas — por exemplo, você pode abrir o Webviz diretamente da janela Bag Database . (Esta configuração é descrita aqui ).

Figura 6. Abrindo o aplicativo Web Webviz a partir do menu no Bag Database

Outra ferramenta que gostaria de mencionar aqui é o Foxglove Studio . Ele tem o mesmo objetivo de visualização e análise em robótica, mas vai além ao oferecer suporte ao ROS 1 e ao ROS 2 e oferecer suporte comercial. Começou como uma bifurcação do projeto Webviz de Cruise e agora está sendo ativamente desenvolvido e expandindo seu conjunto de recursos. Ele está disponível como um aplicativo da Web multiplataforma e como um aplicativo de desktop que desbloqueia mais recursos e extensões de painel personalizadas em dispositivos Linux, macOS e Windows.

Figura 7. Jogando uma bolsa na interface Foxglove

Você pode ler mais sobre o desenvolvimento e as atualizações do Foxglove Studio em seu blog no Medium ou visitar seu site .

Editando sacolas

Se você deseja editar arquivos bag no ROS 1, confira o rosbag_editor de Davide Faconti . Esta ferramenta não permite que você aplique alterações em lote a arquivos de malas, mas pode ser útil para editar certas malas, por exemplo, para demonstração. Sua interface simples permite renomear e remover tópicos manualmente, alterar a duração do saco cortando o início ou o final do arquivo, alterar o tipo de compactação para diminuir o tamanho do arquivo e remover transformações.

Na Evocargo, precisávamos de uma ferramenta que permitisse a edição em lote de malas registradas no ROS1, então nosso engenheiro Vladimir Burmistrov criou o pacote ros_bag_migration . Ele permite que você altere o formato das mensagens em malas gravadas — não apenas renomeie e exclua mensagens, mas também divida uma mensagem em duas e aplique regras definidas a determinadas versões de mensagem. Este pacote funciona perfeitamente para situações em que você decide gravar novas malas com um conjunto atualizado de definições de mensagens e deseja alterar as malas antigas de acordo com a compatibilidade.

Construindo gráficos

A seguir, falaremos sobre o PlotJuggler , um incrível construtor de gráficos (outro pacote de Davide Faconti ). O PlotJuggler permite que você analise qualquer dado que flua dentro do seu sistema ou robô. A depuração torna-se muito mais fácil graças às suas características:

  • Você pode criar gráficos para dados em tópicos do ROS em tempo real ou carregando um ou vários arquivos .bag no PlotJuggler .
  • Figura 9. Deslizando pelo arquivo bag
  • Adicionar e gerenciar vários gráficos de dados é muito fácil de usar. Por exemplo, você pode criar uma guia XY pegando alguns dados 2D e plotando-os para visualizar posições 2D para cada carimbo de data/hora.
  • Há muitas oportunidades de transformação de dados integradas para plotagens, por exemplo, você pode remover o deslocamento dos dados, dimensioná-los, integrá-los, remover valores discrepantes e assim por diante. Você pode até criar combinações de transformações, o que é muito útil para comparar dados de diferentes fontes.
  • Se você não encontrou uma função de transformação adequada, pode criar sua própria. Por exemplo, você pode escrever uma função para extrair e visualizar o ângulo de guinada de quaternions.
  • Por último, mas não menos importante! O recurso matador: quando você está lidando com malas, pode ativar o “ROS Topic Re-Publisher”. Isso significa que você pode arrastar o controle deslizante de tempo para qualquer momento que desejar e o PlotJuggler publicará dados de todos os tópicos correspondentes a um registro de data e hora escolhido. Isso é muito útil quando você deseja ver as imagens das câmeras em um determinado momento, verificar mensagens de diagnóstico ou até mesmo visualizar cada dado em alguma outra ferramenta de visualização como o RVIZ.

entrega de mensagem

Para fins de teste e depuração, é importante que os resultados de seus experimentos sejam reproduzidos de forma estável. Por exemplo, quando você testa um algoritmo de localização em uma bolsa contendo determinados dados do sensor, certamente espera o mesmo resultado toda vez que executa esse algoritmo. No entanto, a lógica de publicação-assinatura no ROS não pode garantir 100% de entrega de mensagens e é provável que seus nós não processem todas as mensagens em um pacote na mesma ordem.

O pacote batch_ros para ROS 1 permite que você especifique os tópicos no arquivo bag que são críticos para sua tarefa. batch_ros aguardará a chamada do serviço de sincronização após publicar cada mensagem desses tópicos. Ele garante que as mensagens do arquivo bag sejam publicadas depois que seu nó as processar uma a uma na ordem definida.

Figura 10. Depois que uma mensagem é enviada em um dos tópicos, a reprodução é interrompida e aguarda que um serviço de acionamento seja chamado de seu nó, o que sinaliza ao player para continuar publicando

Dessa forma , batch_ros garante processamento determinístico e repetível de sacos.

Status da gravação

Enquanto uma bolsa está sendo registrada, a configuração padrão do ROS 1 mostra apenas a mensagem “Recording…”. Se algo der errado, você só saberá quando a tarefa for concluída e falhar. Para tornar o processo de gravação mais informativo, experimente a interface do terminal rosbag_fancy para ROS 1. Ele exibe dados úteis em tempo real, como tópicos que estão sendo gravados, uso de memória, tamanho do arquivo bag e muito mais — tudo em uma tabela super simples.

Figura 11. Esta ilustração foi retirada da página rosbag_fancy no github

Você também pode ver o número de mensagens descartadas ( Drops ), o que nos leva ao próximo problema e possível solução.

Obrigado por ler até aqui - você deve gostar de melhorar sua experiência com o ROS tanto quanto nós! Vamos resumir. Nesta postagem, vimos os seguintes pacotes ROS: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy e batch_ros .

Se você achar esta seleção de pacotes útil, avise-nos batendo palmas e comentando. Ficaremos felizes em compartilhar mais dessas visões gerais em nosso blog, por exemplo, existem pacotes ROS notáveis ​​para teste, simulação, documentação e outros propósitos.