Ir al contenido

Localización de Robots Móviles

En la semana 13 el robot corrigió su pose con los marcadores ArUco, pero le creía por completo al marcador y la pose saltaba. Esta semana formalizamos la localización probabilística: cómo combinar lo que el robot hace con lo que ve, y cuánto creerle a cada fuente.

  • Localización de Markov: la creencia como una probabilidad por lugar, actualización de percepción (Bayes), actualización de acción (suma total), filtro de partículas
  • Filtro de Kalman: fusionar dos medidas, ganancia de Kalman, predicción y corrección en 1D y en 2D, compuerta de validación
  • SLAM: estimar el robot y el mapa a la vez, cierre del lazo

El robot guarda una creencia Bel(l)Bel(l): una probabilidad para cada lugar ll del mapa, que suman 1. En cada paso la actualiza dos veces:

  1. Acción: se mueve la creencia según lo que dicen los encoders oto_t, sumando todas las formas de llegar a cada lugar:

    P(lt∣ot)=∑l′P(lt∣l′,ot) P(l′)P(l_t \mid o_t) = \sum_{l'} P(l_t \mid l', o_t)\, P(l')

    donde l′l' es el lugar donde estaba y P(lt∣l′,ot)P(l_t \mid l', o_t) es el modelo de movimiento. Moverse difumina la creencia.

  2. Percepción: se multiplica por el modelo del sensor y se normaliza (regla de Bayes):

    P(l∣i)=P(i∣l) P(l)P(i)P(l \mid i) = \frac{P(i \mid l)\, P(l)}{P(i)}

    donde P(i∣l)P(i \mid l) es la probabilidad de leer ii estando en ll, y P(i)P(i) es la suma de todos los productos. Mirar afila la creencia.

El ejemplo del pasillo con tres puertas de las diapositivas está resuelto paso a paso en markov-puertas.xlsx: cada actualización con su ecuación y sus cálculos intermedios, celda por celda. Cambie el modelo del sensor, el de movimiento o las lecturas y vea cómo cambia la creencia.

Markov funciona aunque el robot no sepa dónde empezó, pero en una grilla de x,y,θx, y, \theta hay millones de celdas que actualizar. El filtro de partículas (localización de Monte Carlo) representa la creencia con unos cientos de hipótesis que se pesan con el sensor y se remuestrean.

Un caso real es RHINO, el robot guía del Deutsches Museum Bonn en 1997: usaba Markov en una grilla de 15 cm y 2°, y un filtro de entropía que solo acepta las lecturas que dejan al robot más seguro de su posición, para descartar las que tapan las personas.

Si la creencia es una campana de Gauss, basta guardar su media x^\hat{x} y su varianza PP. Kalman alterna dos pasos:

  • Predecir con los encoders: x^−=x^+Δs\hat{x}^- = \hat{x} + \Delta s y P−=P+QP^- = P + Q, donde Δs\Delta s es el avance medido y QQ la varianza que agrega. La incertidumbre crece.

  • Corregir con una medida zz de varianza RR, por ejemplo la pose que da un marcador:

    K=P−P−+Rx^=x^−+K (z−x^−)P=(1−K) P−K = \frac{P^-}{P^- + R} \qquad \hat{x} = \hat{x}^- + K\,(z - \hat{x}^-) \qquad P = (1 - K)\, P^-

    La diferencia z−x^−z - \hat{x}^- es la innovación y KK, entre 0 y 1, dice cuánto se le cree a la medida. Con K=1K = 1 la pose salta a lo que dice el marcador, como en la semana 13; con K=0K = 0 el marcador se ignora.

QQ y RR no se inventan: RR se mide con el robot quieto frente al marcador y QQ repitiendo recorridos.

En 2D la varianza es una matriz de covarianza Σ\Sigma de (x,y,θ)(x, y, \theta) y se dibuja como una elipse. La odometría la propaga con los Jacobianos FpF_p y FrlF_{rl}; cuando el sensor no mide directamente la pose, se linealiza en cada paso: es el filtro de Kalman extendido (EKF).

Antes de corregir, conviene descartar las medidas imposibles con la distancia de Mahalanobis: si la innovación es mayor que unas 3 desviaciones, d2=(z−x^−)2/(P−+R)>9d^2 = (z - \hat{x}^-)^2 / (P^- + R) > 9, probablemente el detector se equivocó.

En SLAM (Simultaneous Localization and Mapping) el robot construye el mapa mientras se localiza en él. En EKF-SLAM el estado incluye la pose del robot y la posición de cada marca:

x=(x, y, θ, m1x, m1y, …, mNx, mNy)\mathbf{x} = (x,\ y,\ \theta,\ m_{1x},\ m_{1y},\ \dots,\ m_{Nx},\ m_{Ny})

Cada marca nueva hereda la incertidumbre del robot, y sus errores quedan correlacionados. Cuando el robot vuelve a ver una marca conocida, cierra el lazo: la corrección se propaga a todo el mapa. Los desafíos actuales son reconocer que se volvió a un lugar, los entornos que cambian y la escala.

Las prácticas de esta semana son demostrativas: se ejecutan en el simulador de RHINO, con el museo reconstruido a partir de la planta del artículo, para ver funcionando los tres bloques de la clase.

  1. Markov: RHINO se ubica sin saber dónde arrancó, con una grilla de 15 cm y con partículas, y se recupera de un secuestro
  2. Kalman: EKF con la odometría y las columnas del museo; qué pasa al apagar las marcas
  3. SLAM: RHINO arma el mapa de columnas mientras se localiza, y cierra el lazo