Arduino Blog »Criando um jogo de luta de robôs on-line usando o Arduino MKR1000 WiFi

Arduino Blog »Criando um jogo de luta de robôs on-line usando o Arduino MKR1000 WiFi

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Este é um post convidado da Surrogate, uma equipe de desenvolvedores que cria jogos que as pessoas jogam na vida real pela Internet.

Introduzimos esse conceito no ano passado e lançamos três jogos até agora. Nosso jogo final de 2019 foi o SumoBots Battle Royale – onde jogadores de qualquer lugar do mundo podem lutar contra robôs reais em uma arena no estilo battle royale. O objetivo do projeto era fazer o jogo rodar de maneira semi-autônoma, o que significa que os bots poderiam se auto-reiniciar entre os jogos, e a arena poderia rodar sozinha, sem interação humana. Este foi o nosso projeto mais complexo até o momento e queríamos compartilhar algumas partes do processo de construção com mais detalhes, especificamente, como construímos esses robôs e os conectamos on-line para que as pessoas controlem remotamente.

Seleção de robôs

Iniciamos nosso processo escolhendo quais robôs queremos usar para o jogo. Havia alguns requisitos para os robôs ao fazer a avaliação:

  • São capazes de suportar colisões 24/7
  • Facilmente modificável e corrigível
  • Pode girar no mesmo local
  • Deve ter espaço suficiente para caber na eletrônica

Depois de analisar vários robôs de consumo, projetos de criadores e robôs de combate competitivos, decidimos usar os robôs JSUMO BB1 para este jogo. Gostamos do fato de que esses robôs têm uma carcaça de metal que os torna muito duráveis, todas as peças são facilmente substituíveis e podem ser compradas separadamente, e possui 4 motores independentes (blindagens de motor incluídas), um para cada roda, o que permite girar no mesmo local.

Éramos bastante céticos em poder encaixar todos os componentes eletrônicos na carcaça original, mas decidimos seguir esse robô de qualquer maneira, pois ele tinha as melhores características gerais. Como este robô é facilmente modificável, sempre podemos imprimir em 3D uma carcaça extra para caber em todas as peças.

Qual é o quadro?

Agora que decidimos o robô, chegou a hora de definir quais eletrônicos devemos usar nesta compilação. Como sempre, tudo começa com os requisitos. Aqui está o que precisamos para que o jogo funcione sem problemas:

  • O robô deve conseguir se recuperar de qualquer posição
  • Pode ficar online enquanto carrega
  • Suporta conexão de rede WiFi e oferece conectividade confiável
  • Facilmente programável e suporta atualizações OTA
  • Pode controlar quatro motores simultaneamente
Leia Também  Monitorar processo e tendências gráficas usando o MATLAB

Com base nesses requisitos, tínhamos o seguinte layout eletrônico:

Tivemos que encontrar uma placa que fosse eficiente em termos de energia, pudesse enviar comandos aos motores, suporte a carregamento paralelo e tenha uma pequena pegada no tamanho do robô. Com tantos requisitos, encontrar o quadro perfeito pode ser um desafio.

Arduino para o resgate

Felizmente, o Arduino estava lá para nos ajudar. Eles oferecem uma rica seleção de painéis para atender a todos os projetos de robótica possíveis e possuem documentação muito detalhada para cada um dos painéis.

Mais importante, o Arduino é conhecido por sua alta qualidade, algo crucial para tipos de aplicações semi-autônomas. Vindo de um background de software incorporado e tendo que trabalhar com todos os tipos de hardware, geralmente vemos que alguns recursos ou funcionalidades da placa não estão totalmente concluídos, o que pode levar a todos os tipos de situações desagradáveis.

Depois de analisar a coleção de placas do Arduino, encontramos rapidamente um candidato perfeito para o nosso projeto, o WiFi do Arduino MKR1000. Esta placa atende a todos os nossos principais requisitos para os controles do motor, é facilmente programável via IDE do Arduino e, devido ao seu baixo consumo de energia, é extremamente eficiente em termos de energia, o que nos permite ter uma bateria de menor capacidade. Além disso, possui um chip WiFi separado a bordo, que se concentra apenas em fornecer uma conexão WiFi confiável, algo que é muito importante em nosso caso de uso.

Agora que decidimos o “cérebro” do nosso robô, estava na hora de escolher o restante dos componentes.

Hardware robusto significa software de trabalho

Algo a ter em mente é que, ao trabalhar com hardware, você deve sempre tentar evitar possíveis riscos. Isso significa que você deve sempre exceder seus requisitos mínimos de hardware sempre que possível. O motivo é: se o seu hardware não funcionar conforme o esperado, toda a sua pilha de software também ficará inutilizável. Sempre escolha componentes de hardware confiáveis ​​para aplicativos de missão crítica.

Alguns de nossos componentes elétricos podem parecer um pouco exagerados, mas devido à natureza de nossos projetos, eles são um requisito crítico.

Leia Também  Resultados do aprendizado de máquina nos concursos do mundo real - Notícias
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Evitando as explosões da bateria

Como há muita colisão de robôs envolvidos no jogo, decidimos usar uma solução de bateria de alto padrão de segurança. Depois de avaliar várias opções no mercado, decidimos ir com o RRC2040 da RRC (Alemanha). Ele possui uma capacidade de 2950 mAh que permite executar os robôs por até cinco horas com uma única carga. Possui um circuito interno para gerenciamento de energia, recursos de proteção e suporta comunicações SMBUS (quase como o I2C) e é certificado para todos os padrões de bateria de eletrônicos de consumo. Para carregar, usamos a solução de carregamento da RRC projetada especificamente para esta bateria e que oferece a possibilidade de alimentar a aplicação enquanto a bateria está sendo carregada.

Nota: o Arduino MKR1000 possui uma solução de carregamento bastante elegante na própria placa. Você pode conectar a bateria à placa diretamente como a principal fonte de energia e carregá-la diretamente através da porta micro USB do MKR1000. Nós realmente queríamos usá-lo para economizar espaço e ter um design mais robusto, mas devido à grande capacidade de nossa bateria, não conseguimos usá-lo em pleno potencial. Em nossos projetos futuros com robôs de menor escala, planejamos definitivamente usar o sistema de carregamento interno da placa, pois funciona perfeitamente para os pacotes de energia de 700 a 1.800 mAh.

Recuperação de bot

Para que o bot possa se recuperar de uma queda, implementamos um servo invertido. Como não queríamos correr o risco de torque insuficiente, optamos pelo DS3218, capaz de levantar até 20KG de peso. Veja como funciona:

Conectando tudo

Agora que decidimos sobre todos os elementos cruciais dessa configuração, era hora de conectar todos os elementos. Como primeiro passo, descobrimos qual seria a melhor maneira de localizar todas as peças dentro do bot. Em seguida, imprimimos em 3D uma carcaça para proteger os eletrônicos. Com todas as etapas preliminares concluídas, conectamos todos os componentes e os montamos dentro do revestimento. Veja como fica:

Foi realmente conveniente para nós que todos os pinos da placa pudessem ser conectados apenas conectando-os, isso evita muito tempo gasto na solda dos cabos para 12 robôs e, mais importante, nos permitiu reduzir o risco de solda ruim que geralmente não podem ser facilmente identificados.

Leia Também  Processos eletrônicos em molde mostram resultados promissores para o rápido desenvolvimento de projetos em forma de 3D

Arduino = código rápido

O Arduino MKR1000 nos ofereceu a conectividade necessária para o projeto. Cada robô de sumô hospeda seu próprio servidor UDP usando as bibliotecas WiFi MKR1000 para receber seus comandos de controle para um PC de controle central e transmitir o status de carga da bateria. Os comandos do usuário são traduzidos para três sinais PWM diferentes usando a biblioteca Servo Arduino para os controladores de motor de inversão, esquerda e direita. A placa usada possui suporte para saída PWM de hardware que foi útil para nós. No geral, conseguimos manter todo o código do Arduino em algumas centenas de linhas de código devido à disponibilidade das bibliotecas Servo e Wifi.

O suporte pronto para uso do ArduinoOTA para atualizar o código pelo Wi-Fi foi útil durante a fase de desenvolvimento, mas também sempre que atualizamos o firmware de vários robôs ao mesmo tempo. Não é necessário abrir as tampas e conectar um cabo USB! Criamos um script Bash simples usando a ferramenta de atualização OTA incluída no Arduino IDE para enviar atualizações de firmware para todos os robôs ao mesmo tempo.

Resumir

É incrível que vivemos na época em que você pode usar um mercado de massa, uma placa de tamanho pequeno como o Arduino MKR1000 e ter tanta funcionalidade. Tivemos uma ótima experiência no desenvolvimento do jogo SumoBots Battle Royale usando o tabuleiro. Tornou todo o processo muito suave e simplificado, a documentação estava no ponto certo e nunca tivemos um gargalo em que o hardware não funcionava conforme o esperado.

Mais importante, as placas provaram ser muito robustas ao longo do tempo. Esses SumoBots já foram usados ​​em mais de 3.000 jogos e não vimos uma única falha no MKR1000. Para um jogo em que você literalmente bate os robôs entre si em alta velocidade, isso é bastante impressionante, para dizer o mínimo.

Estamos ansiosos para trabalhar com o Arduino em nossos futuros jogos e mal podemos esperar para ver o que eles anunciarão em 2020!

Você pode acompanhar quaisquer respostas a esta entrada através do feed RSS 2.0.
Você pode deixar uma resposta ou fazer um trackback do seu próprio site.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br