SLAM desde un punto de vista algorítmico (Parte 2)

Como comentamos en la Parte 1, SLAM es el proceso de estimar simultáneamente la posición de un vehículo robótico en un área inexplorada mientras se crea gradualmente un mapa de esta. Los algoritmos de SLAM se pueden clasificar en tres técnicas principales utilizadas. Son SLAM basado en filtros, SLAM basado en gráficos y SLAM basado en aprendizaje profundo.

SLAM basado en filtros trata a SLAM como un problema de estimación de estado. En este caso, se utiliza habitualmente un filtro probabilístico, como el filtro de Kalman extendido (EKF) o el filtro de Kalman sin perfume (UKF), para estimar de forma recursiva el estado del robot y actualizar el mapa en función de las mediciones del sensor. El filtro predice el siguiente estado del robot basándose en su modelo de movimiento y luego corrige esta predicción mediante mediciones de sensores.

En SLAM basado en gráficos, a diferencia del SLAM basado en filtros, el problema se aborda como una cuestión de optimización de gráficos. Aquí, el problema de SLAM se formula como un gráfico, donde los nodos representan poses del robot o puntos de referencia en el entorno, y los bordes representan medidas o restricciones entre ellos. El objetivo de SLAM basado en gráficos es optimizar las poses del robot y las posiciones de los puntos de referencia de modo que las restricciones medidas (por ejemplo, distancias entre puntos de referencia, poses relativas entre las poses del robot) se satisfagan con la mayor precisión posible.

Los métodos de SLAM basados en aprendizaje profundo aprovechan las redes neuronales para aprender directamente representaciones del entorno a partir de datos de sensores sin depender de características o modelos hechos a mano. Estos métodos pueden aprender asignaciones complejas entre las mediciones de los sensores y la pose o el mapa del robot, lo que permite soluciones de SLAM de un extremo a otro.

Las funcionalidades principales de SLAM, el mapeo y la localización están estrechamente vinculadas: el robot actualiza continuamente su mapa en función de los datos de los sensores y ajusta su estimación de posición en consecuencia. Al ser una herramienta modular, SLAM y sus conceptos permiten reemplazos y cambios en el proceso. Por lo tanto, muy a menudo se desarrollan y utilizan varios algoritmos en conjunto, lo que hace que generalizar y explicar SLAM como un solo algoritmo sea engorroso. Entonces, la mejor manera de entender a SLAM es centrarse en una implementación particular de SLAM. Dicho esto, analicemos en detalle el SLAM visual basado en filtros (vSLAM).

SLAM visual

Como su nombre lo indica, vSLAM utiliza un sensor visual, una cámara, como sensor principal. Además, puede tener codificadores, una unidad de medida inercial (IMU) y también otros sensores. En la Figura 1, se puede ver un diagrama de bloques genérico de la implementación.

Figura 1: Diagrama de bloques genérico simplificado del proceso SLAM basado en características. (Reproducido de kudan.io)

Medición de cámara

La cámara captura imágenes de los alrededores del robot, incluidas características como puntos de referencia, bordes y texturas. Sin embargo, es necesario corregir la distorsión de las imágenes capturadas, ya que la mayoría de los lentes de las cámaras introducen cierto nivel de distorsión. Las cámaras utilizadas pueden ser cámaras estéreo, monoculares o RGB-D con sensores de profundidad de tiempo de vuelo (ToF). La ventaja de las cámaras estéreo y RGB-D es que la información de profundidad está fácilmente disponible. Sin embargo, las cámaras monoculares luchan contra la ambigüedad de escala. Es decir, el SLAM monocular no puede identificar la duración del movimiento de traslación (factor de escala) únicamente a partir de las correspondencias de características. Sin embargo, existen formas de mitigar esto, lo cual está fuera del alcance de este artículo.

Extracción de características

Después de capturar las imágenes utilizando un sensor de cámara, necesitamos identificar de forma única el marco descubriendo las características de un marco en particular para referencia futura. La característica en este contexto es la colección de píxeles que son únicos y que pueden identificarse consistentemente. O podemos decir que son puntos distintivos en una imagen, que son invariables a la rotación, la escala y la distorsión, lo que los hace fáciles de reidentificar incluso después de manipulaciones de la imagen. Teniendo en cuenta que estamos utilizando una cámara estéreo como nuestro sensor principal, deberíamos poder ver características superpuestas entre las imágenes estéreo capturadas por la cámara. Estas características idénticas se pueden utilizar para estimar la distancia desde el sensor. Sin embargo, antes de esto, necesitamos identificar características comunes en el par de imágenes estéreo, como se mencionó anteriormente. Esto lo hacen detectores de características y comparadores. Algunos de los ejemplos comunes de detectores de características son Scale-invariant feature transform (SIFT), Oriented FAST and rotated BRIEF (ORB) y Good Features to Track (GFTT). La Figura 2 representa las características identificadas utilizando algunos de los detectores de características más populares. Una vez identificadas las características, se les da una descripción utilizando los mismos detectores de características. Este proceso ayuda a reidentificar fácilmente estas características en el futuro.

Figura 2: Puntos clave detectados en la imagen del robot XRP usando a) GFTT b) SIFT. (Fuente: SparkFun Electronics)

Después de descubrir los puntos clave, establecemos una correspondencia entre estos puntos emparejándolos. Algunos de los algoritmos de coincidencia de características que se pueden utilizar son Brute Force Matcher o Fast Library for Approximate Nearest Neighbors (FLANN). La Figura 3 muestra una representación visual del algoritmo de coincidencia en acción. Se muestran líneas que conectan las coincidencias y, dado que utilizamos imágenes especulares, lo ideal sería que solo obtuviéramos líneas horizontales (paralelas), siempre que el sistema sea perfecto. Pero, lamentablemente, los algoritmos de coincidencia de características no son perfectos y, por lo tanto, dan como resultado coincidencias falsas, algunas de las cuales están indicadas con líneas inclinadas. Es por eso que necesitamos herramientas de rechazo de valores atípicos como el consenso de muestra aleatoria (RANSAC).

Figura 3: Líneas que indican coincidencias de características en dos imágenes invertidas usando FLANN. (Fuente: SparkFun Electronics)

RANSAC

Se utilizan algoritmos como RANSAC para filtrar estas coincidencias incorrectas, lo que garantiza que solo se utilicen valores internos (coincidencias correctas) para el procesamiento posterior. RANSAC funciona construyendo un modelo a partir de un subconjunto aleatorio de los datos proporcionados. Es decir, consideramos algunos puntos aleatorios como valores iniciales e intentamos hacer coincidir todos los puntos restantes en función de estos pocos puntos seleccionados. Luego, evaluamos qué tan bien coincide el modelo con todo el conjunto de datos. Este proceso se repite hasta que se encuentra un modelo que describe con precisión los datos con un error mínimo, según lo determinado por una función de costos.

Asociación de características y datos

En este paso, tomamos las características detectadas y su ubicación estimada en el espacio para crear un mapa de estas características. A medida que el proceso avanza en los fotogramas siguientes, el sistema asocia nuevas características con elementos conocidos del mapa y descarta características inciertas.

A medida que se sigue el movimiento de la cámara en fotogramas posteriores, se pueden hacer predicciones basadas en las características conocidas y en cómo se espera que cambien con el movimiento. Sin embargo, los recursos computacionales y las limitaciones de tiempo, especialmente en aplicaciones en tiempo real, imponen limitaciones a SLAM. A medida que el sistema recopila más mediciones de características y actualiza la ubicación/pose con el tiempo, se vuelve esencial restringir y optimizar la representación del entorno.

Actualización de ubicación, pose y mapa

Filtro de Kalman

A medida que avanzamos con el proceso de SLAM, se acumula ruido y se desarrolla una incertidumbre entre las imágenes capturadas por la cámara y su movimiento asociado. Al generar continuamente predicciones, actualizar y ajustar el modelo con respecto a las mediciones observadas, los filtros de Kalman pueden reducir el efecto del ruido y la incertidumbre entre las diferentes mediciones. Esto ayuda a crear un modelo de sistema lineal. Para implementaciones reales de SLAM, utilizamos los filtros de Kalman extendidos (EKF), que toman sistemas no lineales y linealizan las predicciones y mediciones alrededor de su media. El EKF puede integrar datos de múltiples sensores mediante la fusión de sensores (por ejemplo, cámaras, IMU) para mejorar la precisión del estado y las estimaciones del mapa. Esta fusión de fuentes de datos ayuda a lograr resultados de SLAM más confiables. El vector de estado en SLAM basado en EKF incluye la pose del robot (posición y orientación) y las posiciones de los puntos de referencia en el mapa.

Selecciones de fotogramas clave

Los fotogramas clave se eligen entre las imágenes capturadas para reducir el arduo cálculo necesario para procesar todas las imágenes capturadas. En cambio, elegimos marcos que pueden servir como una buena representación del entorno y solo los usamos para cálculo. Este método es nuevamente una compensación entre precisión y eficiencia.

Corrección de errores mediante cierre de bucle y relocalización

A medida que avanzamos en el proceso de construcción de un modelo para el entorno, hay una acumulación gradual de errores de medición y derivas de sensores, y esto afecta el mapa generado. Esto se puede mitigar hasta cierto punto mediante el cierre del bucle. El cierre del bucle ocurre cuando el sistema identifica que está volviendo a visitar un área previamente cartografiada. Al realinear el mapa actual con el mapa previamente establecido de la misma área, el sistema de SLAM puede corregir el error acumulado.

Relocalización

La relocalización es necesaria cuando el sistema pierde la noción de su posición y orientación (POSE). Ahora, necesitamos reestimar la pose utilizando las características observables actualmente. Una vez que el sistema compara correctamente las funciones actualmente disponibles con el mapa disponible, podemos continuar con el proceso de SLAM como de costumbre.

Conclusión

SLAM es el proceso de estimar la posición de un vehículo robótico mientras se mapea un área desconocida. Las técnicas de SLAM incluyen métodos basados en filtros, gráficos y aprendizaje profundo (utilizando redes neuronales). SLAM visual emplea cámaras para capturar imágenes, extraer características, compararlas y filtrar coincidencias incorrectas. El sistema crea un mapa asociando nuevas características con elementos conocidos, actualizando la ubicación y la pose del robot usando filtros de Kalman, seleccionando fotogramas clave y corrigiendo errores mediante el cierre de bucle y la relocalización.

Referencias

  1. Remote Sensing | Free Full-Text | SLAM Overview: From Single Sensor to Heterogeneous Fusion (mdpi.com)
  2. Understanding how V-SLAM (Visual SLAM) works | Kudan global
  3. Feature-based visual simultaneous localization and mapping: a survey | Discover Applied Sciences (springer.com)
  4. Introduction to Visual SLAM: Chapter 1 —Introduction to SLAM | by Daniel Casado | Medium
  5. An Introduction to Key Algorithms Used in SLAM - Technical Articles (control.com)
  6. What Is SLAM (Simultaneous Localization and Mapping) – MATLAB & Simulink - MATLAB & Simulink (mathworks.com)
  7. A survey of state-of-the-art on visual SLAM - ScienceDirect

Información sobre el autor

Image of Aswin S Babu

Aswin is a software engineer with specialization in robotics and AI. He has a passion for applying these skills for social good. His experience ranges from social entrepreneurship in home automation to robotics engineer. He has worked on innovative projects like monocular visual odometry systems for robot localization. Additionally, he has experience in teaching robotics and AI to students of various ages. He enjoys public speaking, bee keeping, gardening, and volunteering for social causes.

More posts by Aswin S Babu
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum