Contents — find the section you need

A maneira mais primitiva de um robô saber que "se moveu 1 m para a direita e 2 m para a frente" é somando seu próprio deslocamento. Ele integra a contagem de rotações das rodas, a velocidade dos motores e as taxas angulares da IMU ao longo do tempo para estimar sua posição atual. Esse método é chamado de navegação inercial. Ele continua funcionando mesmo quando o GPS ou uma câmera estão temporariamente indisponíveis, mas pequenos deslizamentos das rodas ou erros de posicionamento dos sensores se transformam em erros de posição que aumentam com o tempo.

Topógrafo usando um receptor GNSS RTKObservação GNSS absoluta
Módulo IMU GY-521 com um MPU-6050Exemplo de IMU de baixo custo

Imagens: Surveyor Usando Receptor GNSS com Solução RTK (SweetCanadianMullet, CC BY 4.0) / GY-521 MPU-6050 Módulo (Nevit Dilmen, CC BY-SA 3.0), Wikimedia Commons. Sensores representativos, não um emparelhamento de hardware obrigatório.

Resumo de 30 segundos

  • A navegação inercial prevê o estado atual a partir do "estado anterior mais o deslocamento medido". Ela pode atualizar em alta velocidade mesmo sem observações.

  • Em um robô com tração diferencial, a diferença entre o deslocamento das rodas esquerda e direita determina o ângulo de giro, e a média determina a distância percorrida. O erro no raio da roda e na largura da bitola se manifesta como uma curva sistemática.

  • O erro de odometria se acumula por meio da integração. Obter uma posição absoluta requer correção a partir de observações como GNSS, LiDAR, câmera ou marcadores refletivos.

  • Uma IMU é precisa em mudanças de atitude de curto prazo, mas a posição deriva rapidamente quando a aceleração é integrada duas vezes. A fusão das rodas e de uma IMU por meio de um EKF ou um grafo de fatores é a abordagem comum. - Na implementação, os registros de data e hora, os sistemas de coordenadas, as convenções de sinal esquerda/direita, o raio da roda, a detecção de deslizamento e a covariância devem ser definidos corretamente desde o início — se isso estiver errado, nem mesmo sensores caros resolverão o problema.

1. Cinemática da Tração Diferencial

Sejam os raios das rodas esquerda e direita iguais a r, a distância entre as rodas (bitola) igual a b e as velocidades angulares esquerda/direita iguais a \omega_L,\omega_R. As velocidades lineares das rodas são v_L=r\omega_L e v_R=r\omega_R, portanto, a velocidade de translação do centro do veículo v e a taxa de guinada \dot{\theta} são

v=\frac{v_R+v_L}{2},\qquad \dot{\theta}=\frac{v_R-v_L}{b}

Considerando que a posição no instante k seja (x_k,y_k,\theta_k) e o período de amostragem seja \Delta t, a integração de Euler simples resulta em

x_{k+1}=x_k+v\cos\theta_k\Delta t,
y_{k+1}=y_k+v\sin\theta_k\Delta t, \qquad \theta_{k+1}=\theta_k+\dot{\theta}\Delta t

Ao percorrer um arco em velocidade constante, o uso da integração exata (o mapeamento exponencial em coordenadas do corpo) mantém o erro pequeno mesmo em baixa velocidade e alta taxa de curva.

Diagram 1 · Use the button to switch views
Vehicle centerLeft wheel vLRight wheel vR Tread b vInstantaneous center of rotationIf vR > vL, turns left

Figura 1 — Em tração diferencial, a diferença entre a velocidade da esquerda e da direita cria a taxa de guinada. Parar uma roda permite que o robô gire em torno dela.

2. Por que a odometria apresenta desvios

Se o raio da roda tiver um erro de 1% e você assumir que a esquerda e a direita são iguais durante a condução, você começará a virar gradualmente mesmo quando pensar que está indo em linha reta. A resolução do encoder esquerdo/direito, a folga da engrenagem, as irregularidades do piso, o desgaste dos pneus e a deformação induzida pela carga se tornam erros sistemáticos. Se uma roda deslizar em um piso molhado ou cascalho, a rotação medida e o deslocamento real não corresponderão mais.

O erro de atitude \delta\theta produz erro de posição lateral. Para uma distância de deslocamento para frente s, uma aproximação de curto prazo fornece

\delta y\approx s\,\delta\theta

Percorra 1 km com um erro angular de 0,5 graus e o deslocamento lateral atingirá cerca de 8,7 m. Expressar o erro de posição simplesmente como "tantos centímetros por segundo" não consegue capturar as diferentes estruturas de erro ao dirigir em linha reta, fazer curvas e derrapar.

A covariância da odometria das rodas propaga a incerteza do deslocamento lateral para a posição e a atualiza de acordo. Na implementação, a covariância é inflada durante as curvas ou quando uma derrapagem é detectada, para que a fusão de sensores subsequente não confie excessivamente na odometria.

3. Adicionando uma IMU

A integração da taxa angular \omega_z do giroscópio da IMU resulta em

\theta(t)=\theta_0+\int_0^t(\omega_z(\tau)-b_g-n_g)\,d\tau

onde b_g é o viés do giroscópio e n_g é o ruído. Mesmo no instante em que uma roda desliza, a variação de curto prazo na taxa angular ainda pode ser medida, fornecendo uma estimativa de atitude mais suave do que apenas com as rodas. Ao realizar a dupla integração da aceleração para obter a velocidade e a posição, o erro devido ao viés b_a aumenta como

\delta p(t)\simeq\frac{1}{2}b_a t^2

portanto, uma IMU sozinha não pode servir como um sensor de posição de longa duração.

Combinando rodas e uma IMU: as rodas lidam com o deslocamento de baixa frequência e a IMU lida com a taxa angular e a aceleração de alta frequência. Os valores de inclinação lateral (roll/pitch) são inicializados a partir da direção da gravidade e, quando um magnetômetro ou GNSS está disponível, uma referência absoluta de guinada (yaw) também é adicionada.

4. Correção com um EKF ou Gráfico de Fatores

Um exemplo de vetor de estado é:

\mathbf{x}=[x,y,\theta,v,b_g,b_a]^T

Na etapa de predição, um modelo de movimento não linear f é calculado a partir das rodas e da IMU; quando uma observação chega, o resíduo é usado para corrigi-la.

\mathbf{x}_{k+1}=f(\mathbf{x}_k,\mathbf{u}_k)+\mathbf{w}_k,
\mathbf{z}_k=h(\mathbf{x}_k)+\mathbf{v}_k

O Filtro de Kalman Estendido (EKF) lineariza localmente o modelo não linear por meio da Jacobiana. A posição do GNSS, a correspondência de varreduras do LiDAR, os pontos de referência da câmera e as poses de marcadores conhecidos podem ser importados como observações \mathbf{z}. Para loops longos ou revisitas, as poses e observações anteriores são mantidas em um grafo de fatores e todo o processo é reotimizado posteriormente.

Para ROS 2 (assumindo as definições de mensagens padrão do Jazzy aqui), o nav_msgs/msg/Odometry da roda, o sensor_msgs/msg/Imu da IMU e a transformação TF odom → base_link devem usar uma base de tempo comum. Esses tipos de mensagem correspondem às grafias nav_msgs/Odometry e sensor_msgs/Imu do ROS 1, mas os detalhes de implementação do ROS 2, QoS e configurações da distribuição devem ser verificados separadamente. O EKF de robot_localization é um ponto de partida razoável para a implementação, mas zerar as covariâncias ou inserir a mesma informação duas vezes torna a estimativa artificialmente rígida.

5. Como isso é usado em robôs atuais

Robôs móveis autônomos (AMRs) para ambientes internos usam constantemente encoders de roda e uma IMU (Unidade de Medição Inercial), corrigindo a deriva por meio de LiDAR ou correspondência de mapas de câmeras. Na direção autônoma, a velocidade da roda, o ângulo de direção, a IMU, o GNSS e o LiDAR são combinados para que a estimativa se mantenha por segundos ou dezenas de segundos, mesmo quando o GNSS falha em um túnel ou sob uma estrutura elevada. Em robôs agrícolas, lama, sulcos e inclinações aumentam a patinagem das rodas, portanto, RTK-GNSS, IMU e sensores de força do implemento são combinados.

Robôs subaquáticos e espaçonaves percorrem longos trechos sem GNSS. Um registrador de velocidade Doppler (DVL), um rastreador de estrelas ou a correspondência de terreno são adicionados como uma observação absoluta de baixa taxa para manter a covariância da navegação inercial sob controle. O que importa é passar a estimativa para o planejamento e controle juntamente com a informação de "quão confiantes estamos nisso".

6. Lista de Verificação de Implementação

  1. Converter os registros de data e hora dos sensores para um relógio comum e medir a latência.

  2. Desenhar os sistemas de coordenadas base_link, odom e map e suas convenções de sinais dextrógiras.

  3. Identificar o raio da roda, a bitola e a resolução do encoder por meio de testes de direção reais.

  4. Avaliar o erro separadamente para direção em linha reta, curvas constantes, figuras em forma de oito, lombadas e superfícies de baixo atrito.

  5. Aumentar a covariância quando forem detectados deslizamentos ou falhas de conexão e corrigir quando uma observação absoluta for obtida.

  6. Reproduzir os registros para confirmar se a mesma entrada produz a mesma estimativa.

Nos testes, registrar não apenas o erro de posição do ponto final, mas também o erro de atitude, o erro máximo, o percentil 95 e a taxa de deriva durante as falhas de conexão. Uma estimativa que geralmente é precisa, mas ocasionalmente apresenta erros significativos, não pode ser usada para o planejamento de trajetórias seguras.

Resumo

A navegação inercial é a técnica fundamental para estimar o movimento de um robô com o menor atraso possível. Ela integra o deslocamento das rodas e a taxa angular da IMU, suprimindo a deriva com observações absolutas de GNSS, LiDAR ou câmera. Antes de adicionar mais sensores, obter o modelo de movimento, os registros de tempo, os sistemas de coordenadas e a covariância corretos é o que determina a precisão e a repetibilidade.

Verifique seu entendimento
A rotação precisa das rodas elimina o erro de posição?

Erros de deslizamento e de geometria das rodas ou da montagem permanecem.

A precisão do sensor e a validade do modelo de movimento são questões separadas.

Referências

Related reading

Explore another aspect of this fieldPor que o ICP falha: inicialização, valores discrepantes e geometria simétrica.Explore another aspect of this fieldDo mapeamento à navegação no ROS 2 — um procedimento mínimo com Jazzy e Nav2