Caminho de construçãoAvançadoDois ou três fins de semana

Construa um rover GPS de pontos de passagem que dirige sozinho

Um rover que percorre sozinho uma lista de pontos de passagem GPS em um campo, mantendo a trajetória dentro de um metro e parando por conta própria se sair da cerca geográfica.

Esquema técnico de Construa um rover GPS de pontos de passagem que dirige sozinhoLOOKAHEADGOAL POINTCOMMANDED PATH

O que você está construindo

Um robô ao qual você entrega uma lista de coordenadas, coloca na grama e deixa.

Todos os outros robôs móveis deste site reagem ao que está diretamente à sua frente — uma linha, uma parede, um obstáculo, uma borda. Este executa um plano, em um mundo sem referências, usando um sensor que mente para ele algumas vezes por minuto. Essa combinação é o que faz dele a construção móvel mais difícil aqui e aquela que mais ensina.

As três coisas que decidem tudo

O seguidor é a parte fácil. O pure pursuit tem doze linhas e um único ajuste. Com uma estimativa de posição perfeita, ele mantém 0,09 m de erro RMS no percurso do laboratório.

A estimativa de posição é o projeto inteiro. O mesmo controlador, com uma correção GPS de 1 Hz e ruído na escala de metros, mantém 1,25 m — quatorze vezes pior — e precisa de quatro vezes e meia mais correção de esterçamento para fazer isso. O controlador contribui com menos de um décimo do erro final.

Portanto, a ordem de construção é: seguidor em ambiente interno, estimativa em ambientes externos. Prove o esterçamento onde a posição é quase exata e depois vá enfrentar o sensor. Fazer as duas coisas ao mesmo tempo produz um robô que vagueia por motivos que você não consegue separar.

Lista de materiais

Peça Qtd. Custo aproximado Observações
Arduino Uno ou Mega 1 US$ 5–12 Vale a pena um Mega: quatro pinos de interrupção para decodificação completa ×4 dos encoders, mais UARTs extras
Módulo GPS (NEO-6M) 1 US$ 8–12 Um NEO-M8N é a melhor melhoria aqui — multiconstelação e geometria melhor
MPU-6050 1 US$ 2 Orientação entre as correções. Sem ele, o rover não sabe para onde está voltado
Motores N20 com encoder 2 US$ 16 Encoders não são opcionais nesta construção
TB6612FNG 1 US$ 3
Chassi 2WD 1 US$ 10–20 Rodas maiores ajudam em ambientes externos; a grama é hostil a uma roda de 65 mm
Pacote de bateria 1 US$ 10 2×18650 protegidas ou 3S com regulador
Suporte alto para antena 1 US$ 2 A antena plana precisa de visão direta do céu — metal acima dela custa satélites

Total: aproximadamente US$ 55–80.

A peça que mais muda o projeto é o receptor. Um NEO-6M funciona e é o que a maioria dos tutoriais pressupõe; um NEO-M8N vê GPS, GLONASS e Galileo, o que melhora a geometria dos satélites e, portanto, o HDOP. Perto de prédios e árvores — onde um rover realmente dirige — isso é uma melhoria real maior do que a especificação de precisão sugere.

Não pule os encoders para economizar US$ 12. Este projeto inteiro é navegação por estimativa corrigida por correções ocasionais; sem encoders, não há nada sobre o qual fazer a estimativa, e o rover simplesmente persegue o ruído do GPS.

Ordem de construção

1 — Ajuste o seguidor no simulador. Passe uma hora no laboratório de seguimento de trajetória na velocidade que pretende dirigir. Encontre o ponto de antecipação em que a curva de erro chega ao mínimo; observe que ele muda quando você altera a velocidade.

2 — Construa o conjunto motriz e faça a odometria funcionar. Encoders na odometria de direção diferencial, depois dirija um quadrado de 2 m e veja quanto se afasta da partida. Esse número é seu orçamento em ambiente interno.

3 — Integre uma orientação confiável. Um giroscópio na taxa do laço, corrigido por uma referência absoluta. O erro de orientação é o termo que ambos os controladores ponderam mais, e é a primeira coisa que a odometria perde — o filtro complementar que estabiliza um robô autobalanceador faz o mesmo trabalho aqui.

4 — Siga um percurso com fita em ambiente interno. Sem GPS. Cole um caminho no piso, execute o pure pursuit na estimativa dos encoders e meça o erro transversal com uma régua em dez pontos. Se não ficar abaixo de 10 cm em ambiente interno, não ficará abaixo de um metro em ambientes externos.

5 — Adicione o receptor e não o conecte ainda ao controlador. Registre correções por dez minutos enquanto o rover fica parado e plote-as. Você verá o ruído, o desvio ocasional e como o HDOP acompanha os dois. Esse gráfico vale mais do que qualquer número de uma folha de dados.

6 — Integre, não siga diretamente. Faça a navegação por estimativa na taxa do laço; puxe a estimativa suavemente em direção a cada boa correção. A aritmética e a filtragem estão aqui. Rejeite qualquer coisa com status void ou HDOP acima de cerca de 2,5.

7 — Defina a cerca e então vá para fora. Distância máxima desde a partida, tempo limite de missão e corte físico. Depois faça uma missão curta, na grama, com você andando ao lado.

Observações dos componentes que importam

Monte a antena no topo, voltada para o céu e longe de tudo. Uma antena plana cerâmica sob uma placa do chassi perde satélites, e satélites perdidos significam geometria ruim, não ausência de correção — uma resposta errada com confiança em vez de uma falha evidente.

Use rodas maiores do que seu instinto interno sugere. Grama, cascalho e a borda de um gramado são problemas de diâmetro de roda. Eles também alteram o fator de escala da sua odometria, então recalibre na superfície em que realmente vai dirigir.

Mantenha o magnetômetro longe dos motores, ou dispense-o. A corrente dos motores produz um campo que sobrepõe o da Terra. Se não conseguir 15 cm de separação, use um giroscópio combinado com a direção de deslocamento sobre o solo e evite o problema.

Registre a missão. Uma falha em ambientes externos que você não gravou é uma falha que não pode depurar — o robô estava a 40 m e você não estava olhando a porta serial. Um cartão SD ou um registro Wi-Fi de pose, correção, HDOP e erro transversal transforma cada execução em evidência.

Espere que a primeira execução em ambientes externos termine cedo. É para isso que existe a cerca geográfica, e isso é sucesso.

Como fica um bom resultado

Medição Seguimento de GPS bruto Fundido com odometria
Erro transversal, RMS 3–5 m 0,3–0,6 m
Erro transversal, pior caso 8–12 m 1,0–1,5 m
Atividade de esterçamento Constante, correções grandes Suave, ocasional
Tolerância de chegada ao ponto de passagem 5 m, e até isso é otimista 0,5–1 m
Variação da posição estimada com o rover parado Nuvem de 2–4 m N/A — a odometria o mantém parado

A primeira coluna não é um rover mal construído; é o que uma correção de 2,5 m CEP a 1 Hz faz com um controlador que confia nela. A melhora de ordem de grandeza na segunda coluna vem do estimador, não do controlador — o mesmo código de pure pursuit, alimentado com uma pose fundida.

Antes de escrever qualquer código de navegação, faça isso uma vez: deixe o receptor parado em ambientes externos por dez minutos e registre cada correção. A nuvem que você obtém tem vários metros de diâmetro, e nada se moveu. Esse gráfico é a coisa mais útil que você pode olhar neste projeto, porque explica por que seguir correções brutas não funciona e por que a correção está antes do controlador.

Quando algo dá errado

Sintoma Geralmente
Faz zigue-zague em uma reta em ambientes externos, mas está bem em ambiente interno Está seguindo correções brutas em vez de fundi-las
Faz zigue-zague em ambiente interno também Antecipação curta demais para o atraso; reajuste no laboratório
Arredonda todos os cantos Antecipação longa demais — o compromisso, não um erro
Posição confiante a dezenas de metros Geometria ruim dos satélites; você não aplicou o limite de HDOP
Dirige para o lado errado a partir da parada Não há orientação utilizável; a direção de deslocamento sobre o solo é ruído abaixo de ~1 m/s
Deriva continuamente para um lado Escala da odometria ou largura entre rodas errada para esta superfície
Nada acontece nos primeiros dois minutos Partida a frio do GPS. Mostre isso, não assuma a origem
Saiu do campo A cerca geográfica não foi escrita antes do teste

Seis dessas oito situações são sensoriais, não de controle — a mesma distribuição do micromouse e do robô de cobertura de ambiente, e pelo mesmo motivo: o algoritmo é a parte pequena.

Para a sequência completa na ordem, siga a rota de aprendizado de seguimento de trajetória e navegação; para a versão em ambiente interno do mesmo problema, o robô de cobertura de ambiente precisa de um plano e de nenhuma posição absoluta.

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 / 20 concluídos

100%
Componente

Adicione motoresredutores com encoder

Componente

Ver componente
Caminho de aprendizagem

Seguimento de trajetória e navegação

Caminho de aprendizagem

Abrir caminho
Montagem

Siga uma trajetória em ambiente interno primeiro

Construção

Tutorial

Integre-o à estimativa, não o siga diretamente

30 min

Abrir tutorial
Montagem

Defina a cerca antes do primeiro teste no campo

Construção

Objetivo

Execute uma missão sozinho

Objetivo

Componentes

Tutoriais deste caminho

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

Por que construir o seguidor em ambiente interno antes de adicionar GPS?

Porque, se você construir os dois ao mesmo tempo e ele vagar, não será possível saber qual metade está errada. Em ambiente interno, com encoders, a estimativa de posição é boa a alguns centímetros em um percurso com fita, então qualquer erro visto é do controlador. Ajuste o ponto de antecipação ali, meça o erro transversal com uma régua e só então apresente um sensor que é ruidoso, atrasado e ocasionalmente errado com confiança. Cada hora investida nessa ordem é devolvida duas vezes.

Quão preciso pode ser realmente um rover GPS de hobby?

Cerca de um metro de erro transversal em um bom dia, definido pelo receptor e não pelo controlador. Medido com o mesmo pure pursuit no mesmo percurso, uma estimativa de posição perfeita dá 0,09 metro de erro RMS, enquanto uma correção de 1 Hz com ruído na escala de metros dá 1,25 — então o controlador contribui com menos de um décimo do total. Se precisar de mais, a melhoria é um receptor mais rápido e multiconstelação, depois RTK, não mais ajuste.

Preciso de um magnetômetro além do giroscópio?

É preciso ter alguma referência absoluta de orientação, e há três opções. Um magnetômetro fornece isso com o robô parado, mas exige calibração de ferro duro e macio e funciona mal perto dos motores. Um giroscópio é excelente por dezenas de segundos e depois deriva. A direção de deslocamento sobre o solo medida pelo GPS é absoluta e gratuita, mas só é significativa acima de cerca de um metro por segundo. A resposta usual para um rover é usar um giroscópio para a taxa do laço, corrigido pela direção de deslocamento sobre o solo sempre que o robô estiver rápido o bastante para confiar nela — é o que esta construção faz, e evita a calibração por completo.

A que velocidade ele deve dirigir?

Mais devagar do que os motores permitem, e o simulador dirá por quê. O melhor erro transversal possível cresce com a velocidade, não importa como você ajustar: 0,05 metro a 1 m/s se torna 0,23 a 3 m/s no laboratório com uma estimativa de posição perfeita. Em ambientes externos, o receptor domina de qualquer modo, então há pouco a ganhar com velocidade e muito a perder no primeiro teste no campo. Comece a 0,5 m/s.

O que impede que ele entre em uma estrada ou lago?

Uma cerca geográfica escrita antes da primeira execução em ambientes externos: uma distância máxima desde o início da missão, verificada no topo do laço, que para os motores sem condição. Acrescente um tempo limite de missão e um corte físico ao qual você possa chegar — uma chave de batida no painel superior funciona e não precisa de conexão de rádio. São dez linhas de código, e a diferença entre um erro e um robô na água.

Posso usar um ESP32 em vez de um Uno?

Sim, e para este projeto é a melhor escolha. Você ganha uma segunda porta serial física para o GPS sem serial por software, muito mais memória para uma lista de pontos de passagem, matemática de ponto flutuante que não é dolorosa e Wi-Fi para registrar a missão de volta no notebook — a ferramenta de depuração mais útil que um robô que opera em ambientes externos pode ter. O Uno funciona; o ESP32 elimina três incômodos.