Construa um robô de cobertura que percorre todo o ambiente
Um robô que percorre um ambiente sozinho, com apenas dois sensores de batida — e dados medidos para decidir se vale adicionar odometria e um planejador.
O que você está construindo
Um robô cuja tarefa não é chegar a algum lugar, mas ter passado por todos os lugares. Isso parece um problema menor que a navegação, mas é maior, porque não existe um destino que oriente o movimento nem uma forma de dizer, de onde você está observando, se está indo bem.
Este também é o projeto que mais recompensa medir antes de construir. Toda a primeira metade consiste em um robô com dois sensores de batida e nenhuma ideia de onde está, e ele funciona — uma descoberta genuinamente desconfortável se você estava prestes a passar um fim de semana construindo um mapa.
O número que conduz o projeto
A área do piso dividida pela largura da escova é a distância que um robô perfeito percorperia:
d_optimal = A / w
Um ambiente de 20 m² e uma escova de 250 mm dão 80 m. Cada estratégia é julgada como um múltiplo desse valor, e os múltiplos não são próximos:
| Estratégia | Distância para 90% | Nesse ambiente, a 0,25 m/s |
|---|---|---|
| Varredura perfeita | 1,0× | 5 min |
| Serpentina planejada | 1,35× | 7 min |
| Desvio aleatório | 2,9× | 15 min |
| Espiral com reposicionamento | 5,5× | 30 min |
Esses números vêm da execução do simulador de cobertura em cinco ambientes. Antes de comprar qualquer coisa, execute-o e arraste os móveis enquanto ele trabalha — os números mudam com o ambiente, e essa é a maior parte da lição.
Lista de materiais
| Peça | Qtd. | Custo aproximado | Observações |
|---|---|---|---|
| Arduino Uno | 1 | US$ 5–8 | O modo de desvio aleatório precisa de quase nada; a varredura planejada precisa dos encoders |
| Sensores de batida | 2 | US$ 1 | Esquerdo e direito, atrás de uma carcaça envolvente. O principal sensor aqui |
| Matriz de refletância IR | 1 | US$ 5 | Detecção de degrau — apontada para baixo, para a borda do piso, não para uma linha |
| Motores N20 com encoder | 2 | US$ 16 | Necessários para a varredura planejada; o movimento aleatório funciona sem eles |
| TB6612FNG | 1 | US$ 3 | |
| Chassi 2WD | 1 | US$ 10 | Redondo é melhor que quadrado aqui — ele não fica preso nos cantos |
| Pacote de bateria | 1 | US$ 8 | As execuções de cobertura são longas; a capacidade importa mais do que em outros projetos |
Total: aproximadamente US$ 50–65.
Este é o único projeto do site em que o sensor mais barato é o principal. Dois sensores de batida e uma mudança aleatória de direção cobrirão um ambiente inteiro se houver tempo suficiente — que é exatamente como funcionou a primeira geração de robôs aspiradores, e vale construir antes de recorrer a qualquer coisa mais sofisticada.
A matriz IR é usada de forma incomum aqui: apontada para baixo, para o piso, como sensor de degrau, em vez de para a frente, para uma linha. Um robô que percorre todo o ambiente encontrará o topo das escadas.
Ordem de construção
1 — Compare as estratégias no simulador. Uma hora aqui economiza um fim de semana. Observe a curva de cobertura se achatar e perceba que as três estratégias são idênticas na primeira metade do piso.
2 — Construa o sistema de tração e o para-choque, e nada mais. Dois microswitches de alavanca atrás de uma carcaça com mola que contorne pelo menos 45° de cada lado, conectados normalmente abertos para o terra com os resistores internos de pull-up ativados. Faça o debounce corretamente — um toque gera nove bordas, e uma interrupção que conta registrará uma colisão nove vezes.
3 — Adicione os sensores de degrau antes de o robô funcionar sem supervisão. Sensores de refletância apontados para baixo nos cantos dianteiros, lidos a cada passagem. Depois descubra a que velocidade você pode se mover: latência vezes velocidade, mais v²/2µg de frenagem, precisa caber na distância entre ver o degrau e alcançá-lo.
4 — Implemente o desvio aleatório e deixe o robô funcionar por uma hora. Avance em linha reta; ao bater, dê ré brevemente e vire um ângulo aleatório entre 90° e 270°. A aleatoriedade é indispensável — um ângulo de reflexão fixo transforma o ambiente em uma mesa de bilhar e faz o robô traçar um contorno fechado para sempre.
5 — Meça o resultado. Desenhe uma grade no piso com giz ou fita, execute por um tempo fixo e conte as células cobertas. Esta é a linha de base, e a única forma honesta de saber se a etapa 6 agrega algo que você valorize.
6 — Só agora, adicione odometria. Encoders e odometria de direção diferencial fornecem uma estimativa de posição. Planeje passadas em serpentina separadas pela largura da escova, com 10–20% de sobreposição, e contorne os móveis em vez de colidir com eles.
7 — Observe as passadas deixarem de ser paralelas. Isso acontecerá depois de cerca de dez, porque a odometria deriva. Não é um bug do planejador; é o motivo pelo qual máquinas comerciais carregam um giroscópio, uma câmera no teto ou um farol. Decidir se você adicionará um deles é a conclusão real deste projeto.
Observações dos componentes que importam
Chassi redondo, rodas no diâmetro. Um robô circular sempre consegue sair girando de uma colisão em que entrou. Um robô quadrado pode se encaixar diagonalmente em um canto e precisa de um para-choque traseiro e regras adicionais de comportamento para escapar.
A escova deve ser mais larga que o robô. Isso não é decoração. Um planejador mantém o corpo afastado de cada parede, então tudo o que está fora do alcance do corpo é piso que nunca será coberto — no simulador, 130 das 133 células que o planejador deixa de cobrir ficam a no máximo duas células de uma parede ou de uma perna de mesa. Uma escova saliente é o que permite recuperar essas células.
Duas metades de para-choque, não uma. Um único sensor informa que você atingiu algo. Dois informam qual lado, que é a informação necessária para escolher a direção da virada, e custa um pino a mais.
Dimensione a bateria em metros, não em minutos. Uma hora a 0,25 m/s correspondem a 900 m. Um ambiente com desvio aleatório requer cerca de 540 m para chegar a 99%. Não é possível cobrir três ambientes, e essa conta — não nenhuma intuição algorítmica — impulsionou toda a categoria de produtos rumo ao mapeamento.
Como fica um bom resultado
A cobertura é um dos poucos comportamentos de robô com um único indicador claro associado, e a comparação entre estratégias é dramática:
| Estratégia | Cobertura após percorrer 1× a área do ambiente | Após 3× | Após 10× |
|---|---|---|---|
| Desvio aleatório | ~35% | ~70% | ~93% |
| Espiral e depois desvio | ~45% | ~78% | ~95% |
| Varredura boustrophedon planejada | ~85% | ~99% | ~99% |
O comportamento dessas colunas é toda a lição. O desvio aleatório se aproxima da cobertura total asintoticamente e nunca chega completamente — os últimos poucos pontos percentuais levam mais tempo que os primeiros noventa. Uma varredura planejada chega lá em aproximadamente uma passagem e depois não tem mais nada para fazer.
Essa é a diferença entre ter memória e não tê-la, expressa como um número.
| Medição | Típico |
|---|---|
| Espaçamento entre linhas de varredura | 80–90% da largura efetiva do robô, para que as passagens se sobreponham |
| Deriva de orientação em uma passagem de 4 m | 3–8° sem giroscópio, menos de 2° com um |
| Erro de posição após dez passagens | 15–40 cm usando apenas odometria |
| Tamanho prático do ambiente com odometria pura | Até cerca de 4 × 4 m antes de a varredura ficar visivelmente enviesada |
A última linha é o limite honesto deste projeto. Uma varredura planejada depende de saber onde você está, e a odometria deriva sem limite — portanto, depois de cerca de 4 m, as passagens paralelas deixam de ser paralelas e surgem lacunas. Isso não é um problema de ajuste; é por que o mapeamento existe.
Quando algo dá errado
| Sintoma | Geralmente |
|---|---|
| Percorre o mesmo contorno indefinidamente | O ângulo de desvio é determinístico; torne-o aleatório |
| Cobre 90% rapidamente e depois parece parar | Funcionando como projetado — essa é a curva exponencial de cobertura |
| Uma batida é contada várias vezes | Não há debounce, ou a janela é menor que os 5 ms de oscilação da chave |
| Sai de um degrau | Velocidade alta demais para o orçamento do sensor de degrau, ou o laço está bloqueado |
| As passadas deixam de ser paralelas | Odometria, não o planejador. Adicione uma referência de orientação |
| Perde faixas entre as passadas | Espaçamento definido exatamente como a largura da escova, sem sobreposição |
| Fica preso em um canto | Chassi quadrado ou ausência de para-choque traseiro |
| Nunca passa por trás do sofá | O trajeto entre os trechos das fileiras nunca foi planejado |
Seis dessas oito situações envolvem sensores, mecânica ou aritmética, não algoritmos — a mesma distribuição do micromouse, pelo mesmo motivo.
Para a camada reativa que ele compartilha com todos os outros robôs móveis, o robô com desvio de obstáculos é o projeto mais simples com a maior parte dos mesmos componentes, e o caminho de navegação reativa cobre os sensores e o comportamento por baixo de ambos.
Roteiro do projeto
O caminho de construção
Siga a árvore tecnológica das peças até um robô funcionando. Cada nó é desbloqueado quando seus pré-requisitos são concluídos, e seu progresso fica salvo neste dispositivo.
0 / 18 concluídos
Componentes
- ControladorArduino UnoA placa de 8 bits que tolera erros de ligação, pela qual a maioria das pessoas começa na robótica.
- SensorMicrochave de alavancaA única informação de detecção que diz ao robô que ele já colidiu com alguma coisa.
- SensorMatriz de sensores IRUma fileira de olhos infravermelhos que informa ao robô onde está a linha.
- AtuadorMotorredutor com encoder N20Micro motorredutor de engrenagens metálicas com encoder traseiro, para o robô saber até onde foi.
- DriverDriver de motor TB6612FNGUma ponte H com MOSFET que preserva a tensão que você realmente pagou.
- ChassiChassi de robô 2WDA plataforma onde se fixam dois motores, uma rodinha livre e toda a eletrônica.
- AlimentaçãoBateria e fonte de alimentação do robôA diferença entre um robô que funciona e outro que fica reiniciando.
Tutoriais deste caminho
- Intermediário · 30 minPlanejamento de cobertura: varra um piso inteiroPor que um robô sem mapa precisa de sete vezes a distância para concluir a varredura do mesmo cômodo.
- Iniciante · 25 minSensores e microchaves de contato: debounce para robôsSensores de contato, nove transições e a interrupção que conta cada uma delas.
- Intermediário · 25 minParar em uma borda: latência e distância de frenagemAté onde um robô percorre depois da linha que acabou de ver e qual velocidade faz isso caber.
- Iniciante · 17 min de leituraLeia encoders de quadratura para medir distância e velocidadeTransforme pulsos de encoder de quadratura em medições confiáveis do sentido de rotação, da distância e da velocidade das rodas.
- Intermediário · 20 min de leituraOdometria de acionamento diferencial a partir de encoders de rodaIntegre o movimento das rodas esquerda e direita na pose de um robô móvel e identifique e calibre a deriva.
Pratique antes de fazer a fiação
Ajuste no simulador ao vivo
O caminho de construção passa por um laboratório no navegador. Acerte o comportamento aqui e depois transfira suas configurações para o robô real.
Perguntas frequentes
Este é um robô aspirador?
É a parte de navegação de um, que é a parte interessante. Adicionar sucção é um problema mecânico — um ventilador, uma roda escovadora, um recipiente de poeira e muito mais bateria — e não ensina nada que o problema de cobertura não ensine. Coloque um pano seco ou um pano de limpeza na parte inferior e ele realmente limpará um piso duro; todos os algoritmos são os mesmos que uma máquina comercial executa.
Por que começar com desvios aleatórios se a varredura planejada é melhor?
Porque o desvio aleatório funciona com sensores que você pode construir em uma tarde e porque oferece uma linha de base medida que o planejador precisa superar. No simulador, o movimento aleatório alcança metade do piso na mesma distância que o planejador — a diferença só aparece depois. Se construir o planejador primeiro, passará um fim de semana lutando contra a deriva da odometria sem nunca saber o quanto ele realmente trouxe de benefício.
Quanto o planejador realmente ganha?
Medido em cinco ambientes no laboratório: uma varredura planejada alcança 90% de cobertura a 1,35 vez a distância mínima teórica; o desvio aleatório precisa de 2,9 vezes; e a estratégia em espiral precisa de 5,5 vezes. Em um ambiente de 20 m², com uma escova de 250 mm a 0,25 m/s, isso são 7 minutos contra 15 contra 30. A ressalva é que o planejador nunca chega a 99%, porque mantém uma margem de segurança longe de cada parede e de cada perna de mesa.
Preciso dos encoders?
Não para o primeiro robô — ele não precisa deles. Eles estão na lista de peças porque a segunda metade do projeto precisa deles e porque instalar encoders em um chassi já construído é muito mais inconveniente do que colocá-los no início. Compre motores com encoders, deixe os fios desconectados e use-os quando chegar à varredura planejada.
O que impede que ele caia escada abaixo?
Sensores de refletância apontados para baixo nos cantos dianteiros, lidos a cada passagem do laço, e um limite de velocidade que sai de um cálculo, não de um palpite. O robô percorre sua própria latência vezes a velocidade antes mesmo de começar a frear; depois percorre uma distância de frenagem de v ao quadrado dividida por duas vezes μ × g. Os dois termos precisam caber na distância entre onde o sensor vê o degrau e onde as rodas chegam a ele.
Por que um chassi redondo?
Porque a área de ocupação de um robô circular não muda quando ele gira, então ele sempre pode girar no lugar para sair de uma colisão em que entrou. Um robô quadrado encaixado diagonalmente em um canto precisa dar ré primeiro, o que exige um para-choque traseiro e mais regras de comportamento. É o mesmo motivo pelo qual quase todo robô comercial de piso é redondo.