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.
Observação GNSS absoluta
Exemplo de IMU de baixo custoImagens: 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
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
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.
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
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
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
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 é:
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.
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
-
Converter os registros de data e hora dos sensores para um relógio comum e medir a latência.
-
Desenhar os sistemas de coordenadas
base_link,odomemape suas convenções de sinais dextrógiras. -
Identificar o raio da roda, a bitola e a resolução do encoder por meio de testes de direção reais.
-
Avaliar o erro separadamente para direção em linha reta, curvas constantes, figuras em forma de oito, lombadas e superfícies de baixo atrito.
-
Aumentar a covariância quando forem detectados deslizamentos ou falhas de conexão e corrigir quando uma observação absoluta for obtida.
-
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.
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
- ROS 2 — documentação do tf2
- ROS 2 — localização do robô
- localização do robô — nós de estimativa de estado e parâmetros do sensor
- REP-105 — Sistemas de coordenadas para plataformas móveis
- ROS 2 Jazzy common_interfaces — pacotes de mensagens padrão
- ROS 2 Jazzy sensor_msgs/definição de IMU
- ROS 2 Jazzy nav_msgs/definição de odometria
- T. D. Barfoot, Estimativa de Estado para Robótica
- Sociedade de Robótica e Automação do IEEE
Comentários
Entre na sua conta para continuar.
Ainda não há dados.