Criando um robô de competição Roborace

Específicos do Roborace


imagem

Roborace é uma competição em que carros robóticos competem em uma pista de ringue especial. Você pode traçar uma analogia entre Roborace e as corridas de Fórmula 1, com exceção de dois pontos.
  • Em primeiro lugar, em vez de carros de corrida em grande escala, estão envolvidos modelos de carros menores e designs originais com restrições gerais e de peso (WxD máximo = 25x50 cm e peso até 3 kg).
  • Em segundo lugar, em vez de pilotos, o carro é controlado por um computador de bordo, que analisa as leituras de vários sensores e orienta o carro na pista, seleciona a velocidade do movimento, evita colisões com obstáculos e rivais. Na verdade, o "comportamento" do carro na pista é determinado pelo programa de controle do computador de bordo.

O Roborace é realizado sob a forma de um campeonato composto por etapas, organizadas em várias cidades da Bielorrússia e no exterior. Construções de nível básico (por exemplo, baseadas em um construtor do tipo LEGO) e dispositivos robóticos complexos participam do campeonato. Os regulamentos da concorrência são formados de forma a abranger a maior variedade possível de características e capacidades das estruturas robóticas.

Figura 1 - Pista para robôs de corrida:

imagem

considere a pista mostrada na Figura 1, ao longo da qual o robô se moverá. Elementos obrigatórios são linhas e paredes pretas. Com base nisso, você pode criar uma estratégia para mover o robô ao longo da pista: por exemplo, equipe o robô com sensores de linha preta e use as linhas de pista para navegação ou instale telémetros para detectar obstáculos e se mover ao longo das paredes.

Este artigo apresenta um dos robôs que desenvolvi para o Roborace de acordo com a segunda estratégia (movimento baseado nas leituras dos telémetros).

Etapas de criação de um robô


A criação de um robô para o Roborace começa com a escolha do chassi. Agora as lojas oferecem uma grande variedade de plataformas de lagartas e rodas. Eu recomendo focar no design clássico quando as rodas traseiras são acionadas por um motor elétrico e as rodas dianteiras são acionadas por um servoconversor . A Figura 2 mostra um robô para o Roborace, construído de acordo com um esquema semelhante.

Figura 2 - Robô:

imagem

Tive a sorte de comprar uma modelo em um clube local de modeladores de rádio por pouco dinheiro (os leitores podem tentar fazer o mesmo em sua região: eles geralmente têm muitos modelos desatualizados). Como o modelo adquirido não tinha um motor de tração, um motor de 12 volts adquirido foi instalado nele. Você também pode usar um brinquedo comum: eles geralmente são bastante tenazes e você só precisa modificar a direção.

Como no meu caso o servo já estava instalado, não houve problemas com ele.

O próximo passo é a escolha do painel de controle. Existem muitas opções. Eu escolhi o Arduino como a opção mais fácil. O mesmo pode ser recomendado ao leitor, especialmente com falta de experiência. Com base em minha experiência bastante extensa, para esses robôs os microcontroladores de 8 bits usuais são suficientes. Portanto, se você não planeja usar uma câmera para rastrear os movimentos do robô, não a complique com um processador mais poderoso.

O servoconversor pode ser conectado diretamente ao Arduino - por exemplo, através da blindagem do sensor mostrada na Figura 3. Também é conveniente conectar sensores a ele.

Figura 3 - blindagem do sensor v4:

imagem

O motor não pode ser conectado diretamente ao Arduino. Você precisa usar um driver de motor especial. Agora existem muitos disponíveis e há instruções para conexão. Usei o Motor Driver desenvolvido em nosso laboratório (Fig. 4).

Figura 4 - driver do motor:

imagem

Nas competições de robôs, você deve prestar muita atenção às baterias. Eu uso baterias de polímero de lítio. Eles se provaram muito bem. Um dos hacks que eu uso no meu robô diz respeito a um conversor de voltagem. O conversor nativo do Arduino não é muito bom, por isso é bom usar um regulador Step-Down para economizar energia da bateria . Obviamente, você pode usar um conversor linear convencional.

A parte mais importante do robô são os sensores - o que fornece informações sobre o mundo, sobre obstáculos e sobre outros robôs. Na categoria de preço médio, podemos escolher entre sensores ultrassônicos e infravermelhos. No meu robô, uso sensores infravermelhos GP2Y0A02YK0F. Não gosto de sensores ultrassônicos devido ao fato de que um sensor pode ser barulhento com outro. Por exemplo, eu tive tais situações: o sensor direito enviou um sinal e o esquerdo o recebeu. Ainda estou trabalhando no posicionamento e gerenciamento adequados dos sensores ultrassônicos. A esperança de seu lançamento é constantemente alimentada pelo preço.

O modelo de robô apresentado aqui possui três sensores infravermelhos. Os sensores podem ser vistos na Figura 2. Eles são instalados profundamente na carcaça por dois motivos:
  1. reduzir a zona morta do sensor, que neste modelo é de 20 cm;
  2. O corpo do robô protege os sensores contra danos mecânicos durante colisões com outros robôs.

Os sensores laterais são instalados em um ângulo de 45 graus. Bem, se o design do robô permitir o ajuste do ângulo de sua instalação.

O esquema geral do robô pode ser visto na Figura 5.

Figura 5 - O esquema geral do robô:

imagem

Programação de robôs


Como o robô usa o Arduino, a programação é realizada usando o IDE do Arduino. O programa do robô é um loop fechado, que consiste nos seguintes blocos:
  1. Filtragem de leituras de sensores;
  2. Cálculo do ângulo e velocidade do robô;
  3. Transferência de sinais de controle para mecanismos.

Nesta estrutura, não há bloqueio para o recebimento de informações dos sensores. Como os sensores retornam um sinal analógico, o Arduino IDE possui uma função analogWrite (). Esta função funciona muito bem se a velocidade da medição não for importante. Porém, como o robô foi projetado para a competição, foi decidido interromper o processamento dos sensores.

Todas as placas Arduino construídas no microcontrolador ATmega têm a capacidade de realizar medições ADC no modo automático. Você precisa configurar este modo uma vez e, em seguida, usar os valores obtidos. Como resultado, o controlador verifica constantemente os sensores, sem perder tempo da CPU. A filtragem das leituras dos sensores é realizada por um filtro mediano com uma janela de três elementos.

Para percorrer a rodovia, o seguinte algoritmo foi desenvolvido. O robô compara as distâncias às paredes direita e esquerda e, de acordo com isso, gira as rodas na direção desejada. Se não houver obstáculos na frente do robô, a velocidade aumenta, mas o ângulo de rotação máximo possível das rodas também diminui. Isso é necessário para que o robô viaje mais diretamente em seções retas. Quando um obstáculo é detectado, o ângulo de rotação das rodas aumenta e o robô diminui a velocidade.

Obviamente, existem problemas não resolvidos. Por exemplo, o robô não conhece a curvatura da curva, então diminui a velocidade antes de cada curva.

Você pode visualizar o código do projeto no GitHub .

Source: https://habr.com/ru/post/pt381775/


All Articles