Robôs trabalham em todos os tipos de lugares com condições de rede variáveis, de Ethernet estável a conexões celulares ou de satélite inconsistentes. Aprenda como você pode usar gRPC e WebRTC para robôs e outras máquinas inteligentes se comunicarem de forma mais confiável.
Recentemente comecei um novo emprego na Viam e estava curioso para aprender mais sobre a arquitetura do sistema deles. Muitos sistemas de robótica são compostos de dispositivos de baixa potência e baixa largura de banda, ou operam em condições de rede precárias. A Viam é uma plataforma de software de robótica de código aberto que foi projetada especificamente para ajudar robôs e outras máquinas inteligentes a se comunicarem de forma mais confiável.
Ele usa gRPC para comunicação cliente-servidor rápida e estruturada e WebRTC para comunicação direta ponto a ponto entre máquinas. Vamos explorar os benefícios de usar gRPC e WebRTC em mais detalhes.
Há uma série de razões para usar gRPC para robótica, como para melhorar a produtividade e a experiência do desenvolvedor. No entanto, a razão mais convincente é que ele é otimizado para velocidade, talvez até 7–10x mais rápido do que REST APIs sobre HTTP, com mensagens Protobuf leves.
Os componentes e serviços na API Viam são representados como serviços de Protocol Buffer (protobuf) independentes de linguagem, e o gRPC é responsável pelo transporte e comunicação de mensagens protobuf ao chamar métodos protobuf.
Especificamente, a Viam usa gRPC para interações de alto nível entre peças de máquinas e aplicativos baseados em SDK, permitindo troca de dados estruturados e de baixa latência e comandos de controle. Esta é uma maneira eficiente de coordenar o trabalho a ser feito, como recuperar nuvens de pontos de câmeras, analisar dados para segmentação de objetos e instruir braços robóticos a executar tarefas com base em poses computadas.
O Protobuf minimiza o tamanho dos dados transmitidos, economizando largura de banda da rede durante a transmissão.
Há uma série de razões para usar WebRTC em robótica, como segurança e compatibilidade entre plataformas. No entanto, a razão mais convincente é que ele usa uma conexão direta.
A Viam depende do WebRTC para comunicação peer-to-peer, permitindo fluxos diretos de vídeo e dados entre partes da máquina e o Viam SDK. Isso significa que, uma vez que a conexão inicial é estabelecida, seus dados não precisam percorrer um longo caminho passando por um servidor central em seu caminho para falar com outra máquina. Essa configuração otimiza a capacidade de resposta em tempo real e a eficiência operacional, especialmente com configurações complexas de máquina.
O WebRTC permite comunicação direta ponto a ponto, evitando servidores intermediários que podem causar atrasos ou pontos de falha.
Vamos ver como isso funciona no exemplo de um jogo de garra de arcade composto de duas partes de máquina: uma câmera e um braço.
O aplicativo Viam (app.viam.com) escuta solicitações de conexão, envia detalhes de conexão e então permite que os dois pares se comuniquem diretamente. As conexões iniciais são facilitadas por gRPC.
Uma vez conectadas, as partes da máquina se comunicam por WebRTC, permitindo que todas as interações entre SDKs e máquinas aconteçam por WebRTC usando chamadas de método gRPC. Em outras palavras, o esquema gRPC decide como os dados se parecem e como eles são empacotados, enquanto o WebRTC lida com a entrega real desses dados de um lugar para outro.
Embora você possa construir uma infraestrutura semelhante por conta própria, a Viam fornece essa capacidade com software de robótica pronto para uso. A funcionalidade na máquina é de código aberto e gratuita para operar. Se você eventualmente começar a gerenciar uma frota, é um faturamento baseado no uso para serviços de nuvem e armazenamento de dados.
O aplicativo web e os SDKs do Viam foram projetados para ajudar você a trabalhar com suas máquinas. No entanto, se quiser explorar o que está acontecendo nos bastidores, confira o espaço de trabalho público das APIs do Viam no Postman para obter instruções passo a passo sobre como trabalhar com as APIs gRPC subjacentes do Viam, incluindo:
Autorizando chamadas de API gRPC
Invocando métodos para controlar componentes de hardware
Invocando métodos para gerenciar serviços de software
Você pode não ter um braço robótico à sua disposição, mas pode tentar isso com uma máquina mais acessível, como um rover, como Yahboom ou SCUTTLE . Viam também projetou um rover de código aberto para ajudar as pessoas a aprender sobre robótica.
Use gRPC e WebRTC para operar um rover
Para começar, bifurque a coleção de amostras do Spin a Viam Rover para seu próprio espaço de trabalho clicando no botão Executar no Postman abaixo.
E acompanhe estes recursos:
Revisão técnica por: Nick Hehr