Dans EKF-SLAM, pourquoi avons-nous même besoin d'une odométrie alors qu'il existe un capteur plus fiable? De plus, tous les algorithmes SLAM sont-ils basés sur des fonctionnalités?

8

Dans le livre de SLAM pour les nuls, pourquoi avons-nous même besoin de l'odométrie alors que le robot utiliserait les données récupérées du scanner laser qui sont plus précises que l'odométrie? Pourquoi ne pas simplement relire le scanner laser et éviter l'odométrie? Y a-t-il une contribution par l'odométrie que le scanner laser n'a pas? De plus, tous les algorithmes SLAM sont-ils basés sur des fonctionnalités?

Xegara
la source
Une question à la fois, s'il vous plaît. Mais j'ai essayé de répondre aux deux. Maintenant, ne modifiez pas la question pour en savoir plus. Posez plutôt des questions distinctes. Merci!
Josh Vander Hook

Réponses:

10

Vous le lisez trop étroitement.

  • Vous n'avez pas "besoin" d'odométrie. SLAM est simplement un moyen de fusionner toutes les estimations de capteur en une estimation cohérente de l'état du robot.

  • «Basé sur les fonctionnalités» ne signifie pas nécessairement que vous devez disposer de fonctionnalités identifiables partout dans l'environnement.

  • Premier principe de la fusion des capteurs: deux estimations valent mieux qu'une!

Exemple

Je n'ai pas lu le livre "pour les nuls" mais s'ils ne font pas l'exemple numérique suivant, je mettrais le feu au livre et j'en aurais un meilleur. Et si elles n'ont cet exemple, je me demande pourquoi vous ne l' avez pas mentionné!

(vous pouvez suivre les maths ici )

Un robot est en position x=0, et se déplace vers la droite (augmentation x). Dans ce monde parfait, la dynamique et les modes des capteurs sont linéaires. (sinon utilisez EKF, PF ou une variante).

  • Il y a un mur exactement x=10 à laquelle le robot peut mesurer la distance.
  • Le robot dispose d'un scanner laser pour obtenir la distance avec la variance du capteur σl2=.1
  • Le robot peut mesurer sa distance parcourue avec des odomètres en utilisant la variance du capteur σo2=.5. Clairement, le laser est plus précis que les odos.

Voici comment le robot gère SLAM dans cet environnement simple. (notez qu'il s'agit en fait de localisation car nous ne mettons pas à jour la position du mur).

  • Le robot essaie de déplacer une unité vers la droite.
  • Mesures d'odométrie x=.9
  • Le scanner laser dit que vous êtes 8.8unités du mur. (impliquant que vous êtes à 1.2)

Question : où es-tu?

  • Choisissez-vous le meilleur capteur? Dans ce cas, le laser est le meilleur, non? Alors évidemment je suisx=1.2.

  • Choisissez-vous celui "le plus proche" de ce que vous attendez? Eh bien, dans ce cas, je pense que nous devrions utiliser l'odométrie, car.9 est plus proche de ce que je voulais, (déplacer une unité).

  • Peut-être pourriez-vous faire la moyenne des deux? Eh bien, c'est mieux, mais il est sensible aux valeurs aberrantes.

  • Les principes brillants de la fusion des capteurs vous expliquent comment répondre à la question comme suit:

Votre estimation moyenne quadratique minimale de la position du robot est donnée par:

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

... sauf si j'ai foiré l'algèbre quelque part. Les gens localisent les avions en utilisant les mathématiques pas beaucoup plus compliquées que ça.

Josh Vander Hook
la source
6

Si vous lisez les principes de la fusion des capteurs, vous obtiendrez toujours une meilleure estimation lorsque vous combinerez les données de la bonne manière. Par exemple, si vous mesurez la température dans une pièce avec 3 capteurs de température différents, il n'est pas idéal d'utiliser uniquement le meilleur capteur. Le cas idéal serait de créer une combinaison pondérée de chaque capteur, où le poids du capteur est proportionnel à un sur la variance de ce capteur. Sans oublier, les données de l'odométrie sont TRÈS bonnes. C'est l'extraction de points de repère qui est bruyante et aura probablement une variance plus élevée.

Si vous y réfléchissez dans une perspective de haut niveau, vous devez également disposer d'une mise à jour de mouvement basée sur l'odométrie. Si vous n'utilisiez que des points de repère, vous auriez des cas ambigus. Prenons par exemple le cas où vous n'identifiez qu'un seul point de repère. Vous auriez une distance z entre votre robot et le point de repère, mais cela correspondrait à un nombre infini de points dans un cercle autour du point de repère. Si vous identifiez zéro point de repère, vous ne pouvez rien faire! En incluant l'odométrie, nous n'avons plus d'ambiguïté. En supposant que nous localisons dans un plan 2D (x, y), vous devez garantir que vous avez des lectures pour au moins 3 points de repère pour trianguler votre position sans odométrie, et vous ne pouvez pas faire cette garantie dans des environnements normaux.

Enfin, un encodeur peut être échantillonné de l'ordre de 50 Hz, alors qu'un LIDAR ne peut être échantillonné qu'à environ 6-7 Hz (ne me citez pas sur ces fréquences). Cela signifie que vous pouvez mettre à jour votre position actuelle beaucoup plus fréquemment via l'odométrie que vous ne le pouvez avec les lectures du capteur. Cela ne tient même pas compte du temps qu'il vous faut pour traiter la lecture de votre capteur afin d'identifier les points de repère!

Andrew Capodieci
la source
3

Pour ajouter à cela, l'utilisation de l'odométrie pour estimer la position du robot est beaucoup plus rapide que l'utilisation des données d'un scanner laser. Dans la plupart des situations, les données d'un scanner de plage sont traitées comme un PointCloud 2D. Cela signifie que pour estimer la pose relative entre les positions A et B, vous devez aligner leurs PointClouds correspondants et trouver la pose la plus probable de cette opération d'alignement. Pour ce faire, vous utiliseriez ICP ou un algorithme similaire qui, en raison de sa nature itérative, est gourmand en calcul.

D'un autre côté, en utilisant les informations d'odométrie (par exemple à partir des encodeurs de roue), il vous suffit d'ajouter à l'estimation actuelle de votre pose qui n'est que la somme de deux fonctions de densité de probabilité (estimation actuelle + lecture incrémentielle de l'odométrie)

bergercookie
la source
-1

Les principes de l'EKF ont été bien expliqués dans les autres réponses.

Je voudrais ajouter que vous pouvez faire du SLAM sans utiliser l'odométrie, c'est-à-dire uniquement en utilisant un LIDAR par exemple.

"De plus, tous les algorithmes SLAM sont-ils basés sur des fonctionnalités?"

Non pas tous bien sûr

AL-ROBOT
la source