Roteiro de aprendizagemIniciante

Navegação reativa: ensina um robô a desviar de obstáculos

Você pode fazer um robô detectar obstáculos e decidir sozinho para onde ir — sem mapa, apenas com leituras confiáveis e um laço de comportamento.

A navegação reativa é a primeira forma pela qual a maioria dos robôs aprende a se locomover: em vez de manter um mapa e planejar uma rota, o robô simplesmente reage ao que seus sensores informam neste instante. Sinta o espaço à frente, decida, mova-se e repita, muitas vezes por segundo. É barato, robusto e suficiente para deixar um robô vagar por uma sala cheia de obstáculos sem bater em nada — o comportamento por trás de todo robô iniciante que desvia de obstáculos.

Esta trilha constrói essa habilidade uma camada por vez. Você começa convertendo um pulso ultrassônico bruto em uma distância confiável, depois aprende por que as leituras dos sensores mudam e como filtrá-las. Compara ultrassom com laser por tempo de voo para saber qual sensor mente e quando, adiciona uma varredura com servo para o robô ver qual direção em relação a ele está aberta, envolve tudo em uma máquina de estados de comportamento e termina ajustando o laço completo em um simulador.

Siga os nós em ordem — cada um libera o próximo depois de concluído, e seu progresso fica salvo neste dispositivo. Quando estiver pronto para construir a versão real, esta trilha desemboca diretamente no projeto de robô que desvia de obstáculos.

Antes de começar

Você precisa conseguir ler um sensor e acionar dois motores — a trilha de controle de motores cobre a parte de acionamento. Não há mapa, localização nem algoritmo de planejamento envolvidos; isso é deliberado e é o que torna a navegação reativa a primeira abordagem adequada.

O que você será capaz de fazer

  • Converter um pulso ultrassônico em uma distância útil, com tempo limite para que a ausência de eco não cause travamento do laço e filtro de mediana para que uma leitura ruim não desvie o robô.
  • Dizer qual sensor confiar em uma superfície específica e por que sensores a laser por tempo de voo e ultrassônicos falham em materiais completamente diferentes.
  • Varrer um sensor ao longo de um arco e escolher a direção mais aberta em relação ao robô a partir das leituras.
  • Expressar o comportamento como estados explícitos, em vez de condicionais aninhadas, para que “o que o robô está fazendo agora” sempre tenha resposta.

Onde as pessoas costumam travar

Ler o sensor antes de o servo parar de se mover. A medição corresponde ao alvo para o qual o sensor apontava no meio da varredura, então o robô vira com confiança para uma parede. Adicione um atraso de estabilização depois de comandar o ângulo e antes de emitir o pulso.

Não definir tempo limite para o eco. Se nada retorna — e em uma superfície macia ou inclinada isso acontece com frequência; uma chamada ingênua a pulseIn bloqueia todo o laço. O robô parece congelar aleatoriamente.

Confiar em uma única leitura. Sensores ultrassônicos produzem de vez em quando valores muito distantes do esperado. Uma leitura espúria de 20 cm em espaço aberto basta para disparar um giro de emergência. Faça três leituras e use a do meio.

Superfícies inclinadas e macias. O som se reflete em uma parede encontrada em ângulo agudo para longe do sensor, de modo que uma parede a 45° pode ser lida como espaço aberto. Almofadas e cortinas absorvem o pulso por completo. Este é um limite físico, não um bug — projete o comportamento para conviver com esse limite.

Oscilação em um limiar. Com uma única distância de parada, um robô próximo a ela alterna entre avançar e girar muitas vezes por segundo. Use dois limiares — pare mais perto e retome mais longe — para que o comportamento tenha histerese e se comprometa com uma decisão.

O que você precisa

Item Por que esta trilha precisa dele Observações
Um HC-SR04 ou VL53L0X A medição de distância na qual toda a trilha se baseia ~$2 e ~$5, respectivamente
Um servo comum Para que o sensor possa olhar para outro lugar que não seja diretamente à frente SG90 basta para uma cabeça com sensor
Uma microchave de alavanca ou duas O único sensor que nunca mente sobre uma colisão Proteção barata contra todas as falhas de medição de distância relacionadas
Uma base móvel de robô Dois motores e um driver que você já consiga comandar A trilha de controle de motores chega a este ponto
Um piso cheio de obstáculos O ambiente de teste, que deve incluir uma superfície macia e outra inclinada Uma almofada e uma porta aberta são os dois melhores obstáculos de teste

Por que a trilha segue esta ordem

Percepção antes de decisão, sempre. Quase todo comportamento de desvio que falha está agindo corretamente sobre uma leitura ruim. Até que uma medida de distância seja confiável — limite de tempo para um eco ausente, mediana de três leituras contra picos; nenhuma quantidade de lógica de comportamento produzirá um robô que se comporte bem. Depurar na ordem inversa significa suspeitar da máquina de estados por uma falha que está no sensor.

Comparar sensores antes de escolher um. O nó de comparação existe porque sonar e laser falham em materiais completamente diferentes, e o sensor correto depende inteiramente da sala em que o robô vai operar. Tomar essa decisão conscientemente uma vez custa muito menos do que descobrir depoois que um chassi foi construído para o sensor errado.

Filtrar antes de varrer. Uma varredura com servo multiplica a taxa de erro do sensor pelo número de ângulos amostrados. Se uma leitura não for confiável, uma varredura de nove pontos oferece nove chances de escolher a direção errada, e o robô vira com confiança para uma parede.

Varrer antes de decidir. Um robô que só enxerga para a frente tem exatamente duas opções — parar ou girar às cegas. A capacidade de medir várias direções em relação ao robô transforma o desvio de um reflexo em uma escolha, e é o ponto em que o comportamento começa a parecer inteligente.

A máquina de estados antes do algoritmo. O algoritmo de desvio é uma máquina de estados; aprender a estrutura separadamente faz com que o nó final trate de robótica, não de desembaralhar o fluxo de controle.

Detecção de contato ao longo de toda a trilha. A microchave não é deixada para o final de propósito. Todo sensor de distância desta trilha tem superfícies que não enxerga, então um robô sem detecção de contato está a uma cortina de terminar empurrando algo até quebrar. É a medida de confiabilidade mais barata do robô inteiro.

Pontos de verificação: como saber que uma etapa foi dominada

Etapa Verificação Como é um resultado aprovado
Leitura de distância Aponte o sensor para uma parede a 30 cm e exiba o valor por um minuto Estável dentro de um ou dois centímetros, sem zeros e sem travamentos ao apontar para o teto
Tempo limite Aponte o sensor para o ar livre e observe a taxa do laço O laço mantém o intervalo — a ausência de eco não pode significar um robô congelado
Filtro de mediana Passe uma mão pelo feixe repetidamente Valores muito distantes desaparecem da saída; a aproximação real continua aparecendo
Comparação de sensores Meça uma almofada, uma parede a 45° e uma superfície escura e fosca Você consegue prever qual sensor falhará em qual caso, antes de medir
Varredura com servo Varra e exiba a distância por ângulo diante de uma porta aberta A porta aparece claramente como o máximo, e as leituras se repetem em cada varredura
Atraso de estabilização Remova deliberadamente o atraso de estabilização As leituras se espalham entre os ângulos — agora você sabe como essa falha aparece
Máquina de estados Exiba o estado atual a cada laço Você sempre consegue nomear o que o robô está fazendo, e cada transição tem uma causa visível
Microchave Pressione-a lentamente e conte os eventos Um toque produz exatamente um evento, não os nove gerados por uma chave crua
Comportamento completo Execute em uma sala cheia de obstáculos por cinco minutos Ele sobrevive e, quando fica preso, você consegue dizer em qual estado estava

Onde esta trilha termina

A navegação reativa tem um limite rígido que vale declarar claramente: um robô reativo não pode ser enviado a lugar nenhum. Ele não tem memória, portanto não pode ir até a cozinha, garantir que percorreu todo o piso nem evitar o canto em que ficou preso da última vez. Essas não são lacunas de implementação — são consequências de não ter mapa.

A trilha também termina antes de dois assuntos que você vai querer em seguida. Seguimento de parede é a extensão natural e o primeiro comportamento que começa a parecer um plano, porque um robô que mantém uma distância fixa de uma parede em um lado percorrerá uma sala inteira de forma determinística. E cobertura — varrer de fato uma área em vez de vagar por ela — é onde a falta de memória finalmente se torna intolerável.

Quando isso acontecer, a resposta será o planejamento de caminhos e mapeamento, e esta trilha é a preparação certa: todo robô de mapeamento ainda precisa dos reflexos construídos aqui para o momento em que seu mapa se revelar errado.

Roteiro de aprendizagem

O caminho

Siga os nós em ordem — cada um desbloqueia o próximo depois que você o conclui. Seu progresso fica salvo neste dispositivo.

0 / 11 concluídos

100%
Tutorial

Escolha o sensor de distância certo

Conceito

Abrir tutorial
Simulador

Veja o ruído e a filtragem ao vivo

Interativo

Abrir simulador
Tutorial

Máquinas de estados de comportamento

Conceito

Abrir tutorial
Tutorial

O algoritmo de desvio de obstáculos

22 min

Abrir tutorial

Dúvidas comuns

Perguntas frequentes

O que é navegação reativa em robótica?

Navegação sem mapa e sem plano. O robô percebe o que está à sua frente neste instante, decide o que fazer, move-se e repete — muitas vezes cinquenta vezes por segundo. Ele nunca pergunta onde está, porque nunca precisa saber. Isso a torna barata, robusta e imune aos erros de localização que quebram a navegação baseada em mapa, ao custo de não conseguir fazer nada que exija memória: não pode ir a um lugar nomeado, garantir que percorreu toda uma sala ou escapar de ficar indefinidamente preso em um canto côncavo.

Por que meu robô que desvia de obstáculos entra direto nas paredes?

Quase sempre o problema é o sensor, não a lógica, e normalmente há uma de três causas. Um sensor ultrassônico que encontra uma parede em ângulo agudo reflete o pulso para longe, em vez de devolvê-lo; assim, uma parede a 45° é lida como espaço aberto — isso é física, não uma falha. Superfícies macias, como cortinas e almofadas, absorvem o pulso por completo. E, se você lê o sensor antes de o servo de varredura terminar de se mover, a distância corresponde ao alvo para o qual ele apontava no meio da varredura. Adicione um atraso de estabilização depois de comandar um ângulo e instale uma microchave de contato para que a colisão seja sempre detectada, mesmo quando a medição de distância falha.

Por que meu robô oscila para frente e para trás diante de um obstáculo?

Um único limiar de parada. Quando o robô permanece próximo a ele, pequenas mudanças na medição invertem a decisão muitas vezes por segundo, e ele hesita em vez de se decidir. Use dois limiares com um intervalo entre eles — pare a 20 cm e não retome até 30 cm. Esse intervalo é histerese e obriga o comportamento a se comprometer. O mesmo padrão corrige quase toda oscilação baseada em limiares no código de robôs, não apenas esta.

Ultrassom ou laser por tempo de voo para desviar de obstáculos?

Eles falham em situações opostas, e isso torna a escolha fácil depois que você conhece o ambiente. O ultrassom tem um cone largo, de cerca de 15° de meio ângulo, então detecta uma perna de mesa sem conseguir localizá-la e não enxerga superfícies macias ou muito inclinadas. O sensor a laser VL53L0X tem um feixe estreito, então localiza com precisão, mas pode perder completamente um obstáculo fino e tem dificuldade com superfícies escuras, foscas e espelhadas sob luz ambiente intensa. Para vaguear por uma sala cheia de obstáculos, o cone largo do sonar é uma vantagem real. Para medir a distância até algo específico, o laser vence.

Preciso de uma máquina de estados para desviar de obstáculos?

Você precisa de uma no instante em que o comportamento tiver mais de dois estados, e o desvio de obstáculos chega a esse ponto quase imediatamente: avançar, parar, varrer, girar, dar ré, recuperar. Escrito com condicionais aninhadas, fica ilegível em poucas horas e, pior, você perde a capacidade de responder 'o que o robô está fazendo agora' — a pergunta com que toda sessão de depuração começa. Uma máquina de estados explícita transforma a resposta em uma única variável que você pode exibir.

Um robô reativo pode ficar preso?

Sim, e isso é uma propriedade da abordagem, não um bug que você possa corrigir. Um robô sem memória, em um canto côncavo ou um beco sem saída em forma de U, vira para a direção mais aberta em relação ao robô, avança e retorna ao ponto de partida para sempre. As mitigações habituais são um componente aleatório na escolha do giro e um detector de travamento que dispara uma manobra de fuga maior após várias tentativas malsucedidas. A solução real é a memória, ou seja, um mapa — e isso é outra trilha.