En EKF-SLAM, ¿por qué necesitamos odometría cuando hay un sensor más confiable? Además, ¿todos los algoritmos SLAM están basados ​​en funciones?

8

En el libro de SLAM para tontos, ¿por qué necesitamos la odometría cuando el robot usaría los datos recuperados del escáner láser que es más preciso que la odometría? ¿Por qué no simplemente confiar en el escáner láser y eliminar la odometría? ¿Hay alguna contribución de la odometría que el escáner láser no tiene? Además, ¿todos los algoritmos SLAM están basados ​​en funciones?

Xegara
fuente
Una pregunta a la vez, por favor. Pero intenté responder a ambas. Ahora, por favor no edite la pregunta para hacer más. En cambio, haga preguntas separadas. ¡Gracias!
Josh Vander Hook

Respuestas:

10

Lo estás leyendo muy estrictamente.

  • No "necesitas" odometría. SLAM es simplemente una forma de fusionar las estimaciones de cualquier sensor en una estimación consistente del estado del robot.

  • "Basado en características" no significa necesariamente que necesite tener características identificables en todo el entorno.

  • Primer principio de la fusión de sensores: ¡dos estimaciones son mejores que una!

Ejemplo

No he leído el libro "para tontos", pero si no hacen el siguiente ejemplo numérico, prendería fuego al libro y obtendría uno mejor. Y si lo tiene este ejemplo, entonces me pregunto por qué no lo mencionó!

(Puedes seguir las matemáticas aquí )

Un robot está en la posición y se mueve hacia la derecha (aumentando ). En este mundo perfecto, los modos de dinámica y sensor son lineales. (de lo contrario, use EKF, PF o alguna variante).x=0x

  • Hay una pared en exactamente que el robot puede medir la distancia.x=10
  • El robot tiene un escáner láser para obtener distancia con la varianza del sensorσl2=.1
  • El robot puede medir su distancia recorrida con odómetros utilizando la varianza del sensor . Claramente, el láser es más preciso que el odos.σo2=.5

Así es como el robot maneja SLAM en este entorno simple. (tenga en cuenta que esto es en realidad una localización ya que no estamos actualizando la posición del muro).

  • El robot intenta mover una unidad hacia la derecha.
  • La odometría midex=.9
  • El escáner láser dice que estás a unidades de la pared. (lo que implica que estás en 1.2)8.8

Pregunta : ¿Dónde estás?

  • ¿Eliges el mejor sensor? En este caso, el láser es el mejor ¿verdad? Entonces obviamente estoy en .x=1.2

  • ¿Elige el "más cercano" a lo que espera? Bueno, en este caso, creo que deberíamos usar odometría, ya que está más cerca de lo que pretendía, (moviendo una unidad)..9

  • ¿Quizás podrías promediar los dos? Bueno, eso es mejor, pero es susceptible a los valores atípicos.

  • Los principios brillantes de la fusión de sensores le dicen cómo responder la pregunta de la siguiente manera:

Su estimación mínima cuadrática media de la posición del robot viene 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 arruine el álgebra en alguna parte. La gente localiza aviones usando matemáticas no mucho más complicadas que eso.

Josh Vander Hook
fuente
6

Si lee acerca de los principios de la fusión de sensores, siempre obtendrá una mejor estimación cuando combine los datos de la manera correcta. Por ejemplo, si está midiendo la temperatura en una habitación con 3 sensores de temperatura diferentes, no es ideal usar solo el mejor sensor. El caso ideal sería crear una combinación ponderada de cada sensor, donde el peso del sensor sea proporcional a uno sobre la varianza de ese sensor. Sin mencionar que los datos de odometría son MUY buenos. La extracción de puntos de referencia es ruidosa y probablemente tendrá una mayor variación.

Si lo piensa desde una perspectiva de alto nivel, también es necesario que tenga una actualización de movimiento basada en la odometría. Si solo usara puntos de referencia, entonces tendría casos ambiguos. Tomemos, por ejemplo, el caso en el que solo identifica un punto de referencia. Tendría una distancia z desde su robot hasta el punto de referencia, pero esto se asignaría a un número infinito de puntos en un círculo alrededor del punto de referencia. Si identifica cero puntos de referencia, ¡entonces no puede hacer nada! Al incluir la odometría, ya no tenemos ambigüedad. Suponiendo que estamos localizando en un plano 2D (x, y), entonces tendría que garantizar que tiene lecturas para al menos 3 puntos de referencia para triangular su posición sin odometría, y no puede hacer esa garantía en entornos normales.

Finalmente, un codificador puede muestrearse en el orden de 50Hz, mientras que un LIDAR solo puede muestrearse a alrededor de 6-7Hz (no me cite en esas frecuencias). Esto significa que puede actualizar su posición actual con mucha más frecuencia mediante odometría que con las lecturas del sensor. ¡Esto ni siquiera tiene en cuenta cuánto tiempo le lleva procesar la lectura de su sensor para identificar puntos de referencia!

Andrew Capodieci
fuente
3

Solo para agregar esto, usar odometría para estimar la posición del robot es mucho más rápido que usar datos de un escáner láser. En la mayoría de las situaciones, los datos de un escáner de rango se manejan como un PointCloud 2D. Esto significa que para estimar la pose relativa entre las posiciones A, B, debe alinear sus correspondientes PointClouds y encontrar la pose más probable de esa operación de alineación. Para hacer eso, usaría ICP o un algoritmo similar, que debido a su naturaleza iterativa es computacionalmente intensivo.

Por otro lado, usando la información de odometría (por ejemplo, de los codificadores de rueda) solo necesita sumar a la estimación actual de su pose, que es solo la suma de dos funciones de densidad de probabilidad (estimación actual + lectura de odometría incremental)

bergercookie
fuente
-1

Los principios de EKF se han explicado bien en las otras respuestas.

Me gustaría agregar que puedes hacer SLAM sin usar Odometría, es decir, solo usando un LIDAR por ejemplo.

"Además, ¿todos los algoritmos SLAM están basados ​​en funciones?"

No, no todo, por supuesto.

AL-ROBOT
fuente