Projeto Webots

Esta página contém os detalhes de um projeto de redação técnica aceito para a Google Season of Docs.

Resumo do projeto

Organização de código aberto:
Webots
Redator técnico:
Canal Soft Illusion
Nome do projeto:
Série de tutoriais em vídeo para Webots (integração com ROS2)
Duração do projeto:
Duração padrão (três meses)

Project description

Aprendizados:

Esta série de tutoriais em vídeo vai permitir que novos usuários comecem a usar o Webots da melhor forma possível e oferecer soluções claras passo a passo para realizar simulações específicas.

Meta:

Ao final desta série, os espectadores poderão criar nós ROS2 básicos e interagir com Webots, além de ganhar a confiança para trabalhar em projetos avançados de robôs móveis. Esta série de vídeos também vai oferecer boas explicações teóricas de vários conceitos essenciais na área de robótica.

Detalhes da série de vídeos:

  1. Instalação do ROS 2 e configuração de um repositório no Visual Studio Code. Isso inclui a instalação do ROS2 por comando e os conceitos básicos de funcionamento. Em segundo lugar, também inclui a configuração do espaço de trabalho do ROS no VS Code e a funcionalidade das guias básicas no VS Code.

  2. Exemplo básico de ROS2 e Webots. Alguns exemplos do Webots ROS2 serão usados para envolver os espectadores na compreensão das maravilhas que podem ser feitas se usarmos o ROS2 com o Webots para simulação. Isso também inclui teorias básicas de comunicação entre ROS2 e Webots.

  3. Como usar os serviços do ROS2 para interagir com o Webots. Ensino os conceitos básicos do serviço ROS, explicando a diferença entre os serviços no ROS e no ROS2. Em segundo lugar, mostrar tutoriais passo a passo para chamar serviços e ativar o tópico do sensor para leituras e atuadores de movimento.

  4. Controle um robô personalizado com o ROS2 Publisher. Aprenda a publicar mensagens usando publishers ROS2 no Webots. Podemos implementar um exemplo de controle de movimento do robô publicando a saída do teclado em um tópico que pode ser usado pelos serviços do ROS para movimento no Webots.

  5. Receba feedback do robô com o assinante ROS2. Neste vídeo, vamos nos inscrever nas leituras dos sensores de distância e parar o robô se ele estiver prestes a colidir. Basicamente, será um nó de evitação de obstáculos com mensagens interativas sendo publicadas.

  6. Robôs mestre(publicador) e escravo(inscritor) com ROS2. Neste vídeo, vamos controlar um robô com um teclado e fazer com que outro fuja do robô manual. Semelhante a um cenário de ladrões e policiais :) [Esta será a continuação dos vídeos 3, 4 e 5]. Isso permite que os espectadores testem a comunicação e recebam falhas na simulação se houver um problema no ROS.

  7. Como configurar o Rviz (mostrar uma saída de sensor diferente). Neste vídeo, adicionaremos outros sensores e publicaremos os dados deles no Rviz. Ao final do vídeo, o espectador poderá configurar o Rviz (ou seja, adicionar sensores como Lidar, Câmera etc.para visualização), salvando a configuração e gerando a configuração salva na próxima vez.

  8. Depurando vídeo (Rostopic echo, Rostopic info, RQT_graph). Este vídeo inclui funcionalidades incorretas deliberadas de alguns tópicos para ajudar a entender a técnica de depuração. Seguiremos um processo para visualizar o gráfico de RQT e saber quais tópicos são responsáveis pelo problema. Use o rostopic echo para verificar se o tópico está sendo publicado e, no final, verificar as informações do rostopic para encontrar o problema. Resolver o problema e ter a funcionalidade normal.

  9. Vídeo de depuração(rqt_console, rqt_gui) Neste vídeo, mensagens do ROS(informações, depuração, erro etc.) serão usadas no nó, e o uso do rqt_console será explorado. Este vídeo também será estendido para usar rqt_gui para publicar mensagens simuladas e ter a funcionalidade necessária. Essa pode ser uma abordagem alternativa para corrigir alguns bugs.

  10. Vídeos de tópicos avançados: sobre a integração da biblioteca SLAM em um ambiente desconhecido (toolbox SLAM ou LaMa) [Parte 1] Este vídeo começa com a teoria básica dos problemas de SLAM. Depois disso, vamos usar a infraestrutura dos conceitos ensinados acima para entender o ponto principal do projeto. Por fim, vamos gerar os nós necessários pelo terminal e conferir a saída de mapeamento no Rviz.

  11. Vídeos de tópicos avançados: sobre a integração da biblioteca SLAM em um ambiente desconhecido (SLAM toolbox ou LaMa) [Parte 2] Como continuação do 10º vídeo, neste vídeo, vou ensinar como criar um arquivo de inicialização para iniciar todos os nós juntos e examinar rqt_graph para uma compreensão adequada dos conceitos no framework ROS. No final, vamos salvar o mapa gerado pelo pacote usando um servidor de mapas.

  12. Vídeos de temas avançados: sobre a integração do OpenCV (detecção de tags de RA, pacote Ar_track_alvar) [Parte 1] O vídeo começa explicando o que são tags de RA e sua importância na localização usando visão computacional. Depois, vamos mostrar como funciona o pacote de rastreamento de RA do Alvar. Isso vai ajudar a fornecer uma perspectiva geral do projeto. Por fim, o serviço será feito para ativar um fluxo de frames de vídeo do Webots para um tópico do ROS.

  13. Vídeos de tópicos avançados: sobre a integração do OpenCV (detecção de tag AR, pacote Ar_track_alvar) [Parte 2] Este vídeo é uma continuação do 12o vídeo, em que o stream de imagem acima será usado pelo pacote, e será publicado um tópico de transformação entre o robô e a tag AR. Ele pode ser visualizado no Rviz. Por fim, ao mover o robô, vamos ver diferentes tags sendo localizadas e a posição delas mudando no Rviz e nas mensagens do rostopic.

Conclusão:

Este projeto GSOD é um pacote independente para permitir um entendimento básico da integração do ROS2 com o Webots. Esse pacote também inclui a implementação prática dos conceitos em ROS2, como tópicos, serviços, nós, arquivos de inicialização, editores, assinantes, diferentes ferramentas de depuração e o uso do código VS. Isso também envolverá projetos de tópicos avançados, como SLAM e OpenCV. Isso vai dar aos espectadores um paradigma de um trabalho de ponta a ponta usando ROS2 e Webots.