Tutorial · Intermediário · 21 min de leitura
SLAM, mapeamento, localização e deriva da odometria
Entenda como robôs móveis combinam odometria e dados de alcance em SLAM, distinguem localização de mapeamento e diagnosticam deriva e fechamento de loop.
Um robô móvel precisa de duas respostas relacionadas: como é o ambiente e onde o robô está dentro dele. A localização e o mapeamento simultâneos (SLAM) estimam as duas enquanto o robô explora. Depois que existe um mapa estável, um sistema de localização pode estimar a pose em relação a esse mapa fixo sem reconstruí-lo.
O SLAM não substitui a odometria. Ele usa estimativas locais de movimento para conectar observações dos sensores e corrige a deriva acumulada quando o ambiente oferece evidência suficiente.
Separe as quatro tarefas
Os termos ficam mais fáceis quando cada um tem uma saída clara:
- Odometria: movimento local e suave, estimado a partir de encoders de roda, sensores inerciais, movimento visual ou da fusão dessas fontes, relativo a uma pose anterior. Deriva ao longo do tempo e não fornece, por si só, uma posição global.
- Mapeamento: construir uma representação, como uma grade de ocupação, a partir de observações dos sensores e poses.
- Localização: estimar a pose do robô em um mapa existente.
- SLAM: construir o mapa enquanto estima poses e revisa estimativas anteriores.
A navegação adiciona planejamento e controle a tudo isso. Um bom mapa não gera sozinho um comando de velocidade seguro.
Acompanhe a informação pelo sistema
Para SLAM 2D em ambientes internos, um fluxo de dados comum é:
- Encoders de roda e uma unidade de medida inercial estimam o movimento local.
- Um LiDAR publica varreduras de distância com carimbos de data/hora e um referencial do sensor.
- O TF2 relaciona o sensor a
base_linke a pose local aodom. - A correspondência de varreduras alinha novas observações com varreduras recentes ou com o mapa em crescimento.
- O módulo de otimização ajusta um grafo de poses e restrições.
- Uma grade de ocupação é atualizada a partir das poses corrigidas e dos dados de distância.
A odometria fornece uma estimativa inicial útil. Sem ela, a correspondência de varreduras pode procurar um espaço muito maior ou alinhar-se à estrutura repetida errada. Sem observações externas, os erros de odometria permanecem ilimitados. Esse limite é o que determina se um robô pode varrer um piso em fileiras paralelas: as fileiras deixam de ser paralelas depois de cerca de dez, e por isso uma máquina que planeja sua cobertura também leva um giroscópio, uma câmera no teto ou um farol. Ao ar livre, a mesma função fica com o GPS, usado para corrigir a estimativa.
Entenda a correspondência de varreduras e o fechamento de loop
A correspondência de varreduras encontra a pose relativa que alinha melhor as medições de distância atuais à estrutura existente. Ela pode corrigir pequenos erros de patinação das rodas e de escala, mas precisa de características geométricas. Um corredor longo e sem características, uma parede de vidro, uma multidão em movimento ou prateleiras altamente repetitivas podem fazer várias poses parecerem igualmente plausíveis.
Um fechamento de loop ocorre quando o sistema reconhece um lugar previamente visitado e adiciona uma restrição entre a pose atual e uma pose mais antiga. Otimizar essa restrição pode distribuir o erro acumulado pela trajetória e fazer as paredes se alinharem novamente.
Um fechamento de loop não é automaticamente correto. Uma correspondência falsa em dois corredores semelhantes pode dobrar ou rasgar o mapa. Sistemas robustos usam verificações geométricas, pontuações e limiares de aceitação configuráveis. Revise correções grandes e suspeitas em vez de comemorar cada fechamento de loop.
Prepare o robô antes de ajustar o SLAM
O SLAM não pode compensar uma interface de entradas defeituosa. Verifique primeiro:
- direção, escala e carimbos de data/hora dos encoders;
- odometria local razoável durante testes de movimento reto e de rotação;
- transformações corretas
odom → base_link → sensor; - dados de distância nas unidades corretas, com leituras inválidas identificadas;
- concordância de relógio entre os nós;
- suporte rígido para o sensor;
- alcance e campo de visão suficientes para o ambiente.
Dirija lentamente enquanto estabelece a linha de base. A distorção de movimento e a escassez de observações nas varreduras pioram conforme a velocidade angular aumenta. Se o sensor ou o software oferecer compensação de temporização, configure-a com base no comportamento medido, em vez de assumir que ela é desnecessária.
Construa um mapa deliberadamente
Comece em um local rico em características e faça percursos fechados, em vez de usar apenas trajetos longos de ida e volta. Gire suavemente para que o sensor de varredura observe as mesmas estruturas a partir de pontos de vista sobrepostos. Evite transportar ou mover objetos grandes ao lado do robô durante o mapeamento.
Monitore o mapa ao vivo em busca de paredes duplicadas, cantos borrados, saltos e salas desconectadas. Esses são sinais de diagnóstico, não problemas cosméticos:
- paredes paralelas duplicadas sugerem erro de pose ou temporização;
- paredes curvas durante a rotação sugerem transformações ruins ou distorção de movimento;
- deriva gradual de escala sugere calibração das rodas ou restrições fracas de varredura;
- reorganização global súbita sugere fechamento de loop, correto ou falso.
Salve o mapa somente depois de verificar que os corredores importantes continuam atravessáveis na resolução escolhida. Uma grade mais fina custa memória e pode preservar ruído do sensor; uma grade mais grossa pode fechar passagens estreitas.
Localize-se no mapa salvo
Depois do mapeamento, mude para o modo de localização em relação ao mapa salvo. Um localizador por filtro de partículas, como o Adaptive Monte Carlo Localization (AMCL), estima a pose a partir de observações de distância e movimento. Ele ainda precisa de um modelo de sensor razoável, transformações e odometria.
Forneça uma pose inicial próxima o suficiente para que o sistema identifique o local correto, especialmente em ambientes simétricos. Teste a recuperação começando com pequenos erros de pose e depois com erros maiores. A recuperação do “robô sequestrado” é um requisito separado e não deve ser presumida apenas porque o rastreamento normal funciona.
No modelo padrão de referenciais, a odometria local publica odom → base_link, enquanto o SLAM ou a localização publica map → odom. A transformação global corrige a deriva sem forçar o referencial de controle local e suave a dar um salto.
Meça a precisão e a repetibilidade
Use pontos de referência físicos com posições levantadas topograficamente ou cuidadosamente medidas. Registre a pose estimada quando o robô para em cada ponto, com o robô chegando ao ponto por diferentes direções. Separe:
- repetibilidade no mesmo local;
- deriva local de curto prazo;
- consistência global do mapa após um percurso fechado;
- tempo de recuperação após perda temporária do sensor.
Compare o mapa com distâncias conhecidas, mas não o julgue apenas por uma imagem visualmente agradável. A navegação precisa de espaço livre correto, limites de obstáculos e estabilidade de pose mais do que de uma espessura de parede bonita.
Registre varreduras, odometria, transformações e saídas do SLAM para que uma falha possa ser reproduzida. Um problema que só ocorre ao vivo é muito mais difícil de diagnosticar.
Diagnose falhas comuns do SLAM
- As paredes duplicam durante o movimento reto: a escala da odometria, a temporização do sensor ou a correspondência de varreduras está inconsistente.
- O mapa dobra durante a rotação: a transformação do sensor, a odometria angular ou a distorção de movimento está errada.
- A pose salta em corredores repetitivos: a correspondência de varreduras ou o fechamento de loop aceitou um alinhamento ambíguo.
- Nenhum fechamento de loop ocorre: a rota não tem sobreposição, as observações são esparsas ou os limiares de aceitação estão rígidos demais.
- A localização funciona apenas perto da pose inicial: o ambiente é simétrico ou a recuperação global não está configurada.
- O mapa parece correto, mas a navegação corta paredes: o envelope, a inflação ou a configuração do mapa de custos está errada.
- Ajustar todos os parâmetros de SLAM não muda nada: a interface de entrada de odometria/TF/sensor ainda está defeituosa.
Comece pela calibração de encoders em quadratura e pela odometria de acionamento diferencial, depois use referenciais de coordenadas TF2 do ROS 2 para verificar a cadeia geométrica. O Simulador de Sensores mostra por que viés e deriva não podem ser removidos apenas por suavização.
Explore o grafo
Faz parte destas montagens
Projetos e caminhos de aprendizagem que incluem este tutorial.
Leitura complementar