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?
localization
slam
mapping
Xegara
fonte
fonte
Respostas:
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çãox=0 e 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).
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).
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:
... 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.
fonte
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!
fonte
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)
fonte
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
fonte