Migração para websockets com ROSBridge
Contexto
Nas últimas sprints, enfrentamos problemas significativos de latência e instabilidade na visualização da câmera do nosso robô. Anteriormente, o backend do projeto instanciava nodes ROS que atuavam como subscribers da câmera e da teleoperação do robô, e então se comunicavam via WebSockets com o frontend. Essa abordagem resultava em alta latência e instabilidade na visualização da câmera, além de exigir que o ROS fosse instalado na máquina que executa o backend.
A Solução: ROSBridge
Para resolver esses problemas, decidimos migrar para uma arquitetura que utiliza ROSBridge para a comunicação via WebSockets. A implementação dessa solução resultou em uma visualização da câmera mais estável e com menor latência.
Os principais benefícios observados foram:
- Redução de Latência: A comunicação direta via ROSBridge diminuiu significativamente a latência na transmissão de imagens.
- Estabilidade Melhorada: A visualização da câmera se tornou mais estável, sem interrupções frequentes.
- Independência do Backend: Eliminar a necessidade de instalar ROS na máquina do backend simplificou a infraestrutura do sistema.
Como Funciona
Arquitetura
- Envio de Imagens pela Câmera do Robô: A câmera do robô captura imagens e envia diretamente para um tópico do ROS.
- Middleware ROSBridge: O ROSBridge atua como um intermediário, recebendo as imagens do tópico e disponibilizando-as para aplicações web através de WebSockets.
- Aplicação Web: A aplicação web se conecta ao ROSBridge, recebe as imagens e as exibe em tempo real.
Demonstração
Para testar e ilustrar a eficiência dessa nova arquitetura, fizemos um teste indo do laboratório até a biblioteca. Abaixo está o link para o vídeo:
Apesar de apresentar uma latência grande em alguns momentos, realizar essa movimentação com a arquitetura antiga era impensável.
Seguindo estas etapas e considerando os benefícios mencionados, a migração para WebSockets com ROSBridge não só melhorou a performance do nosso sistema como também simplificou sua manutenção e escalabilidade.