No EKF-SLAM, por que precisamos de odometria quando há um sensor mais confiável? Além disso, todos os algoritmos SLAM são baseados em recursos?

8

No livro do SLAM para manequins, por que precisamos da odometria, quando o robô usaria os dados recuperados do scanner a laser mais precisos que a odometria? Por que não apenas reler no scanner a laser e afastar a odometria? Existe alguma contribuição da odometria que o scanner a laser não possui? Além disso, todos os algoritmos SLAM são baseados em recursos?

Xegara
fonte
Uma pergunta de cada vez, por favor. Mas tentei responder a ambos. Agora, por favor, não edite a pergunta para fazer mais. Em vez disso, faça perguntas separadas. Obrigado!
Josh Vander Gancho

Respostas:

10

Você está lendo isso muito estreitamente.

  • Você não "precisa" de odômetro. O SLAM é simplesmente uma maneira de fundir qualquer estimativa de sensor em uma estimativa consistente do estado do robô.

  • "Baseado em recursos" não significa necessariamente que você precisa ter recursos identificáveis ​​em qualquer lugar do ambiente.

  • Primeiro princípio da fusão de sensores: duas estimativas são melhores que uma!

Exemplo

Eu não li o livro "para manequins", mas se eles não fizerem o exemplo numérico a seguir, eu incendio o livro e fico com um melhor. E se eles fazem ter este exemplo, então eu me pergunto por que você não mencionou isso!

(você pode acompanhar a matemática aqui )

Um robô está em posição x=0e está se movendo para a direita (aumentando x) Neste mundo perfeito, os modos de dinâmica e sensor são lineares. (caso contrário, use EKF, PF ou alguma variante).

  • Há uma parede exatamente x=10 qual o robô pode medir a distância.
  • O robô possui um scanner a laser para se distanciar com a variação do sensor σl2=.1
  • O robô pode medir sua distância percorrida com odômetros usando variação de sensor σo2=.5. Claramente, o laser é mais preciso que os odos.

Veja como o robô lida com o SLAM neste ambiente simples. (observe que na verdade é localização, pois não estamos atualizando a posição do muro).

  • O robô tenta mover uma unidade para a direita.
  • Medidas de Odometria x=.9
  • O scanner a laser diz que você é 8.8unidades da parede. (implicando que você esteja em 1,2)

Pergunta : Onde você está?

  • Você escolhe o melhor sensor? Neste caso, o laser é o melhor, certo? Então, obviamente, eu estoux=1.2.

  • Você escolhe o "mais próximo" do que você espera? Bem, neste caso, acho que devemos usar odometria, já que.9 está mais perto do que eu pretendia (mover uma unidade).

  • Talvez você possa calcular a média dos dois? Bem, isso é melhor, mas é suscetível a discrepâncias.

  • Os princípios brilhantes da fusão de sensores mostram como responder à pergunta da seguinte maneira:

Sua estimativa média quadrática mínima da posição do robô é dada por:

xmmse=σl2σo2+σl2(.9)+σo2σo2+σl2(1.2)
xmmse=.1.6(.9)+.5.6(1.2)
xmmse=1.15

... a menos que eu estraguei a álgebra em algum lugar. As pessoas localizam aviões usando a matemática não muito mais complicada do que isso.

Josh Vander Hook
fonte
6

Se você ler sobre os princípios da fusão de sensores, sempre obterá uma estimativa melhor ao combinar os dados da maneira correta. Por exemplo, se você estiver medindo a temperatura em uma sala com três sensores de temperatura diferentes, não é ideal usar apenas o melhor sensor. O caso ideal seria criar uma combinação ponderada de cada sensor, em que o peso do sensor seja proporcional a um sobre a variação desse sensor. Sem mencionar, os dados de odometria são MUITO bons. É a extração de pontos de referência que é barulhenta e provavelmente terá uma variação maior.

Se você pensar sobre isso de uma perspectiva de alto nível, também será necessário que você tenha uma atualização de movimento baseada na odometria. Se você usasse apenas pontos de referência, teria casos ambíguos. Tomemos, por exemplo, o caso em que você identifica apenas um ponto de referência. Você teria uma distância z do robô até o ponto de referência, mas isso seria mapeado para um número infinito de pontos em um círculo ao redor do ponto de referência. Se você identificar zero pontos de referência, não poderá fazer nada! Ao incluir a odometria, não temos mais ambiguidade. Supondo que estamos localizando em um plano 2D (x, y), você teria que garantir que tem leituras de pelo menos três pontos de referência para triangular sua posição sem odometria e não pode fazer essa garantia em ambientes normais.

Finalmente, um codificador pode ser amostrado na ordem de 50Hz, enquanto um LIDAR só pode ser amostrado em torno de 6-7Hz (não me cite nessas frequências). Isso significa que você pode atualizar sua posição atual com muito mais frequência via odometria do que nas leituras do sensor. Isso nem leva em consideração quanto tempo leva para você processar a leitura do sensor para identificar pontos de referência!

Andrew Capodieci
fonte
3

Só para acrescentar isso, o uso de odometria para estimar a posição do robô é muito mais rápido do que o uso de dados de um scanner a laser. Na maioria das situações, os dados de um scanner de distância são tratados como um PointCloud 2D. Isso significa que, para estimar a pose relativa entre as posições A, B, você precisa alinhar seus PointClouds correspondentes e encontrar a pose mais provável dessa operação de alinhamento. Para fazer isso, você usaria o ICP ou um algoritmo semelhante, que devido à sua natureza de iteração, é intensivo em termos computacionais.

Por outro lado, usando informações de odometria (por exemplo, dos codificadores das rodas), você só precisa adicionar a estimativa atual de sua pose, que é apenas a soma de duas funções de densidade de probabilidade (estimativa atual + leitura incremental de odometria)

bergercookie
fonte
-1

Os princípios do EKF foram bem explicados nas outras respostas.

Eu gostaria de acrescentar que você pode fazer o SLAM sem usar Odometry, ou seja, apenas usando um LIDAR, por exemplo.

"Além disso, todos os algoritmos SLAM são baseados em recursos?"

Não, não é claro

AL-ROBOT
fonte