Catorce conferencias sobre Visual SLAM --- Conocimiento preliminar

¿Qué es SLAM?

SLAM es la abreviatura de Simultaneous Localization and Mapping, que significa posicionamiento y construcción de mapas simultáneos.
Se refiere a un sujeto dotado de sensores específicos que, sin información previa sobre el entorno, construye un modelo del entorno durante el movimiento y estima al mismo tiempo su propio movimiento . Si el sensor aquí es principalmente una cámara, se llama "SLAM visual".

El propósito de SLAM

El propósito de SLAM es resolver los problemas de "localización" y "construcción de mapas", lo que significa que, por un lado, es necesario estimar la posición del propio sensor y, por otro lado, es necesario construir un modelo del entorno circundante.
Esto requiere información del sensor. Los sensores observan el mundo exterior de cierta forma, pero diferentes sensores observan de diferentes maneras.
Esperamos realizar SLAM en tiempo real y sin conocimientos previos. Cuando usamos una cámara como sensor, lo que tenemos que hacer es inferir el movimiento de la cámara y el entorno en función de las imágenes en movimiento continuo (forman un video).

aplicación SLAM

  • Las barredoras de interior y los robots móviles necesitan posicionamiento
  • Los coches autónomos en la naturaleza necesitan posicionamiento
  • Es necesario posicionar drones en el cielo
  • Dispositivos de realidad virtual y realidad aumentada.

módulo del sistema SLAM

  • odometria visual
  • Optimización de back-end
  • Cartografía
  • Detección de bucle invertido

Los sensores se dividen en dos categorías.

  • Llevar en el cuerpo del robot, como el código de rueda del robot, la cámara, el sensor láser, etc.
  • Instalado en el entorno, como carriles guía, carteles de códigos QR, etc. Los equipos de detección instalados en el entorno generalmente pueden medir directamente la información de posición del robot y resolver el problema de posicionamiento de manera simple y efectiva. Dado que requieren que el entorno sea controlado por pasos humanos, el ámbito de uso de los robots está hasta cierto punto limitado.

Los sensores limitan el entorno externo. Sólo cuando se satisfacen estas restricciones, los esquemas de posicionamiento basados ​​en ellas pueden funcionar. Cuando no se pueden satisfacer las restricciones, no podemos realizar el posicionamiento. Estos sensores son simples y fiables, pero no pueden proporcionar una solución universal que sirva para todos. Por el contrario, los sensores que lleva el cuerpo del robot, como sensores láser, cámaras, codificadores de ruedas, unidades de medición inercial (IMU), etc., suelen medir cantidades físicas indirectas en lugar de datos de posiciones directas. Por ejemplo, los codificadores de ruedas miden el ángulo de rotación de las ruedas, las IMU miden la velocidad angular y la aceleración del movimiento, y las cámaras y sensores láser leen ciertos datos de observación del entorno externo.

Usar sensores portátiles para completar SLAM es nuestra principal preocupación. En particular, cuando hablamos de SLAM visual, nos referimos principalmente a cómo las cámaras resuelven problemas de localización y mapeo. Del mismo modo, si el sensor es principalmente láser, se llama láser SLAM.

La cámara utilizada en SLAM no es la misma que la cámara SLR que vemos habitualmente. Es más simple y generalmente no lleva lentes costosos, pero captura el entorno circundante a una cierta velocidad para formar una secuencia de video continua. Las cámaras normales pueden capturar imágenes a una velocidad de 30 imágenes por segundo, mientras que las cámaras de alta velocidad son más rápidas.

Según los diferentes métodos de trabajo, las cámaras se pueden dividir en tres categorías: cámaras monoculares, cámaras binoculares y cámaras de profundidad (RGB-D). Intuitivamente, una cámara monocular tiene solo una cámara y una cámara binocular tiene dos. El principio de RGB-D es más complejo: además de recopilar imágenes en color, también puede leer la distancia entre cada píxel y la cámara. Las cámaras de profundidad suelen llevar varias cámaras y sus principios de funcionamiento son diferentes a los de las cámaras normales.

También existen categorías especiales o emergentes en SLAM como cámaras panorámicas y cámaras de eventos.

cámara monocular

La práctica de utilizar una sola cámara para SLAM se denomina SLAM monocular. Este tipo de sensor tiene una estructura muy simple y de bajo costo, por lo que el monocular SLAM ha atraído gran atención por parte de los investigadores.
Datos de la cámara monocular: fotografías. Una fotografía es esencialmente una proyección de una escena dejada en el plano de imagen de la cámara . Registra el mundo tridimensional en forma bidimensional. Este proceso pierde una dimensión de la escena, conocida como profundidad (o distancia). En una cámara monocular, no podemos calcular la distancia (cerca y lejos) entre los objetos de la escena y la cámara a partir de una sola imagen. Esta distancia es información muy crítica en SLAM. Hemos visto una gran cantidad de imágenes y hemos desarrollado una intuición innata.Tenemos un sentido intuitivo de distancia (sentido de espacio) para la mayoría de las escenas , lo que puede ayudarnos a juzgar la relación de distancia entre los objetos en la imagen. Debido a la relación de perspectiva entre los objetos cercanos y lejanos, pueden parecer del mismo tamaño en la imagen.
Dado que la imagen capturada por una cámara monocular es solo una proyección bidimensional de un espacio tridimensional, si realmente desea restaurar la estructura tridimensional, debe cambiar la perspectiva de la cámara. El mismo principio se aplica al SLAM monocular. Debemos mover la cámara para estimar su movimiento (Motion) , y al mismo tiempo estimar la distancia y el tamaño de los objetos en la escena, que es la estructura . Los objetos cercanos se mueven rápido, los distantes se mueven lentamente y los objetos extremadamente distantes (infinitos) (como el sol y la luna) parecen estar inmóviles. Por lo tanto, cuando la cámara se mueve, el movimiento de estos objetos en la imagen forma paralaje (Disparidad). Mediante el paralaje, podemos determinar cuantitativamente qué objetos están lejos y cuáles están cerca. Incluso si conocemos la distancia de un objeto, siguen siendo sólo un valor relativo.
La trayectoria y el mapa estimados por SLAM monocular diferirán de la trayectoria y el mapa reales por un factor, que es el llamadoEscala . Dado que SLAM monocular no puede determinar esta escala verdadera solo a partir de imágenes, también se le llama incertidumbre de escala (ambigüedad de escala) .
La profundidad solo se puede calcular después de la traducción y no se puede determinar la escala real. Estas dos cosas causan muchos problemas para la aplicación de SLAM monocular. La razón fundamental es que la profundidad no se puede determinar a partir de una única imagen. Para conseguir profundidad se utilizan cámaras binoculares y cámaras de profundidad.

Cámaras binoculares y de profundidad.

El propósito de utilizar una cámara binocular y una cámara de profundidad es medir la distancia entre un objeto y la cámara de algún modo, superando el inconveniente de una cámara monocular que no puede conocer la distancia. Una vez conocida la distancia, la estructura tridimensional de la escena se puede recuperar a partir de una sola imagen eliminando al mismo tiempo la incertidumbre de escala.
Ambas se utilizan para medir distancias, pero los principios de medición de profundidad entre cámaras binoculares y cámaras de profundidad son diferentes. Una cámara binocular consta de dos cámaras monoculares, pero se conoce la distancia entre las dos cámaras [llamada línea de base ]. Usamos esta línea de base para estimar la posición espacial de cada píxel, muy similar al ojo humano.
Los humanos podemos juzgar la distancia de un objeto a través de la diferencia entre las imágenes del ojo izquierdo y derecho, y lo mismo ocurre con las computadoras. Si expandes la cámara binocular, puedes construir una cámara multicámara, pero la esencia no es diferente.
Datos de la cámara binocular: imagen del ojo izquierdo, imagen del ojo derecho. A través de la diferencia entre los ojos izquierdo y derecho, se puede juzgar la distancia entre el objeto en la escena y la cámara.
El rango de profundidad medido por la cámara binocular es relativo a la línea de base. Cuanto mayor es la distancia de referencia, más lejos se puede medir el objeto, por lo que la cámara binocular montada en el vehículo no tripulado suele ser grande. La estimación de distancia de la cámara binocular se obtiene comparando las imágenes de los ojos izquierdo y derecho y no depende de otros dispositivos de detección, por lo que se puede aplicar tanto en interiores como en exteriores. La desventaja de las cámaras binoculares o de múltiples ojos es que la configuración y calibración son relativamente complejas, y su rango de profundidad y precisión están limitados por la línea de base y la resolución de los binoculares. Además, el cálculo del paralaje consume muchos recursos informáticos y requiere el uso de GPU. y equipo FPGA para acelerar, genera la información de distancia de toda la imagen en tiempo real. Por tanto, en las condiciones actuales, la cantidad de cálculo es uno de los principales problemas de la visión binocular.
La característica más importante de la cámara de profundidad (también conocida como cámara RGB-D) es que puede detectar objetos a través de luz estructurada infrarroja o el principio Time-og-Flight (ToF), como un sensor láser, emitiendo luz activamente al objeto y distancia de la cámara. No se resuelve mediante cálculos de software como una cámara binocular, sino mediante métodos de medición física, por lo que puede ahorrar muchos recursos informáticos en comparación con una cámara binocular.
Las cámaras RGB-D de uso común actualmente incluyen Kinect/Kinect V2, Xtion Pro Live, RealSense, etc. La gente también las usa para reconocer rostros en algunos teléfonos móviles. La mayoría de las cámaras RGB-D actuales todavía tienen muchos problemas, como rango de medición estrecho, ruido elevado, campo de visión pequeño, susceptibilidad a la interferencia de la luz solar e incapacidad para medir los materiales de proyección. En términos de SLAM, se usa principalmente en interiores, pero es más difícil de usar en exteriores.
Datos RGB-D: las cámaras de profundidad pueden medir directamente la imagen y la distancia de un objeto, recuperando así la estructura tridimensional.
A medida que la cámara se mueve en la escena, se obtendrán una serie de imágenes que cambian continuamente. El objetivo de visual SLAM es realizar posicionamiento y construcción de mapas a través de dichas imágenes. Mientras ingresemos datos, podremos generar continuamente información de posicionamiento y mapas.

Marco visual clásico de SLAM

Todo el proceso visual SLAM incluye los siguientes pasos:

  • **Lectura de información del sensor. ** En SLAM visual, se trata principalmente de la lectura y el preprocesamiento de la información de la imagen de la cámara. Si está en un robot, también puede haber discos de códigos, sensores inerciales y otra información para leer y sincronizar.
  • **Odometría Visual Frontal (VO). **La tarea de la odometría visual es estimar el movimiento de la cámara entre imágenes adyacentes y cómo se ve el mapa local. VO también se llama Front End.
  • **Optimización de back-end (no lineal) (Optimización). **El backend acepta poses de cámara medidas por odometría visual en diferentes momentos, así como información de detección de bucles, y las optimiza para obtener trayectorias y mapas globalmente consistentes. Debido a que está conectado después de VO, también se le llama back-end (Back End).
  • **Detección de cierre de bucle. **La detección de bucle invertido determina si el robot ha alcanzado la posición anterior. Si se detecta un loopback, proporciona la información al backend para su procesamiento.
  • **Cartografía. **Construye un mapa correspondiente a los requisitos de la misión en función de la trayectoria estimada.
    Si el entorno de trabajo se limita a cuerpos rígidos y estáticos, los cambios de luz no son obvios y no hay interferencia humana, entonces la tecnología SLAM en este escenario ya está bastante madura.

odometria visual

La odometría visual se preocupa por el movimiento de la cámara entre imágenes adyacentes. El caso más simple es, por supuesto, la relación de movimiento entre dos imágenes.
En el campo de la visión por computadora, las cosas que intuitivamente parecen muy naturales para los humanos son muy difíciles en la visión por computadora. Una imagen es solo una matriz numérica en una computadora.
En SLAM visual, solo podemos ver los píxeles uno por uno y saber que son el resultado de la proyección de ciertos puntos espaciales en el plano de imagen de la cámara. Por lo tanto, para estimar cuantitativamente el movimiento de la cámara, primero debemos comprender la relación geométrica entre la cámara y los puntos espaciales .
La odometría visual es capaz de estimar el movimiento de la cámara a partir de imágenes entre fotogramas adyacentes y recuperar la estructura espacial de la escena. Se llama "odómetro" porque, al igual que un odómetro real, sólo cuenta el movimiento en momentos adyacentes y no tiene conexión con información pasada. En este punto, la odometría visual es como una especie con solo memoria a corto plazo (pero no se puede limitar a dos cuadros, el número puede ser más, como 5 a 10 cuadros).
Si ya existe una odometría visual, se estima el movimiento de la cámara entre las dos imágenes. Por un lado, siempre que los movimientos en momentos adyacentes estén "encadenados", se forma la trayectoria de movimiento del robot, resolviendo así el problema de posicionamiento. Por otro lado, calculamos la posición del punto espacial correspondiente a cada píxel en función de la posición de la cámara en cada momento y obtenemos el mapa.
De hecho, la odometría visual es la clave de SLAM, pero cuando se estiman trayectorias solo a través de la odometría visual, inevitablemente se producirá una deriva acumulada. Esto se debe a que la odometría visual sólo estima el movimiento entre dos imágenes en el caso más sencillo.
Los errores acumulados hacen que la estimación a largo plazo deje de ser precisa, lo que requiere detección de cierre de bucle y corrección global. A esto también se le llama deriva. Esto resultará en nuestra incapacidad para construir mapas consistentes.
Para resolver el problema de la deriva, también necesitamos dos tecnologías: optimización de backend y detección de loopback . La detección de bucle es responsable de detectar "el robot regresa a su posición original", mientras que la optimización de back-end corrige la forma de toda la trayectoria en función de esta información.

Optimización de back-end

La optimización de back-end se refiere principalmente a abordar los problemas de ruido en el proceso SLAM. En realidad, incluso el sensor más preciso contiene una cierta cantidad de ruido. Los sensores baratos tienen errores de medición mayores, mientras que los sensores caros pueden tener errores más pequeños. Algunos sensores también se ven afectados por los campos magnéticos y la temperatura. Además de resolver "cómo estimar el movimiento de la cámara a partir de imágenes", también debemos preocuparnos de cuánto ruido contiene esta estimación, cómo se transfiere este ruido del momento anterior al siguiente y qué tan seguros estamos de la estimación actual. . .
La cuestión a considerar en la optimización de back-end es cómo estimar el estado de todo el sistema a partir de estos datos ruidosos y qué tan incierta es la estimación del estado; esto se denomina estimación de máxima probabilidad posterior (Maximum-a-Posteriori, MAP). . El estado aquí incluye tanto la propia trayectoria del robot como el mapa.
La parte de odometría visual a veces se denomina "parte delantera". En el marco SLAM, el front-end proporciona al back-end los datos a optimizar, así como los valores iniciales de estos datos. El backend es responsable del proceso de optimización general y, a menudo, solo se enfrenta a los datos y no necesita preocuparse por el sensor del que provienen.
En visual SLAM, el front-end está más relacionado con los campos de investigación de la visión por computadora, como la extracción y coincidencia de características de imágenes, mientras que el back-end se dedica principalmente a algoritmos de filtrado y optimización no lineal.
En un sentido histórico, lo que ahora llamamos optimización de back-end se llamó directamente "investigación SLAM" durante mucho tiempo. El primer problema de SLAM era un problema de estimación de estado : exactamente lo que se suponía que debía resolver la optimización de back-end. En la primera serie de artículos que propusieron SLAM, la gente en ese momento lo llamó "Estimación de la incertidumbre espacial". La
esencia de SLAM: la estimación de la incertidumbre espacial del propio sujeto en movimiento y el entorno circundante. Para resolver el problema SLAM, necesitamos una teoría de estimación de estado para expresar la incertidumbre del posicionamiento y el mapeo, y luego usar filtros u optimización no lineal para estimar la media y la incertidumbre (varianza) del estado.

Detección de bucle invertido

La detección de bucle invertido, también conocida como detección de bucle cerrado, resuelve principalmente el problema de la desviación de la estimación de posición con el tiempo .
¿Cómo resolverlo? Supongamos que en realidad el robot regresa al origen después de un período de movimiento, pero debido a la deriva, su estimación de posición no regresa al origen. ¿Cómo hacerlo? Si hay alguna manera de hacerle saber al robot que ha "regresado al origen", o de identificar el "origen", entonces podemos "retirar" la estimación de posición y eliminar la deriva. Esto se llama detección de bucle invertido.
La detección de bucle invertido está estrechamente relacionada tanto con el "posicionamiento" como con el "mapeo".
De hecho, creemos que el objetivo principal de los mapas es que los robots sepan dónde han estado. Para implementar la detección de bucle invertido, debemos establecer un marcador (como una imagen de código QR) debajo del robot. Mientras vea esta señal, sabrá que ha regresado al punto de partida. Este marcador es esencialmente un sensor en el entorno, con restricciones en el entorno de la aplicación.
Preferimos que el robot pueda usar el sensor que lleva, es decir, la imagen misma, para completar esta tarea (por ejemplo, puede determinar la similitud entre imágenes para completar la detección de bucle). Si la detección del loopback tiene éxito, el error acumulativo se puede reducir significativamente.
La detección de bucle visual es esencialmente un algoritmo para calcular la similitud de los datos de la imagen. Dado que la información de la imagen es muy rica, la dificultad de detectar correctamente el cierre del bucle se reduce considerablemente.
Después de detectar el loopback, le indicaremos al algoritmo de optimización de back-end la información "A y B son el mismo punto". Luego, basándose en esta nueva información, el backend ajusta la trayectoria y el mapa para que coincidan con los resultados de la detección del cierre del bucle. De esta manera, si tenemos una detección de cierre de bucle suficiente y correcta, podemos eliminar errores acumulativos y obtener trayectorias y mapas globalmente consistentes.

Cartografía

El mapeo se refiere al proceso de construcción de un mapa. El mapeo se refiere al proceso de construcción de un mapa. El mapa es una descripción del entorno, pero esta descripción no es fija y debe ser determinada por SLAM.
Tenemos tantas ideas y necesidades de mapas. Por lo tanto, en comparación con la odometría visual, la optimización de back-end y la detección de bucles mencionadas anteriormente, el mapeo no tiene una forma ni un algoritmo fijos. Una colección de puntos espaciales se puede llamar mapa. Un hermoso modelo 3D también es un mapa. Una imagen marcada con ciudades, pueblos, vías de ferrocarril y ríos también es un mapa. La forma del mapa depende de la aplicación de SLAM.
En términos generales, se pueden dividir en dos tipos: mapas métricos y mapas topológicos .

Mapa de métricas

Los mapas métricos enfatizan la representación precisa de las relaciones posicionales de los objetos en el mapa y generalmente se clasifican como Escaso y Denso . Los mapas dispersos proporcionan un cierto nivel de abstracción y no necesariamente representan todos los objetos. Los mapas densos se centran en modelar todo lo que se ve. Un mapa de puntos de referencia escaso es suficiente para el posicionamiento. Cuando se utilizan para la navegación, a menudo se necesitan mapas densos (de lo contrario, ¿qué pasa si choca contra la pared entre dos señales de tráfico?). Los mapas densos generalmente constan de muchos cuadrados pequeños (Vovel) con una resolución determinada. Por lo general, un bloque pequeño contiene tres estados: ocupado, libre y desconocido, para expresar si hay un objeto en la cuadrícula. Al consultar una determinada ubicación espacial, el mapa puede brindar información sobre si la ubicación es transitable. Estos mapas se pueden utilizar en varios algoritmos de navegación, como A , D*, etc., y son valorados por los investigadores de robótica. Pero también vemos que, por un lado, este tipo de mapa necesita almacenar el estado de cada punto, lo que consumirá mucho espacio de almacenamiento y, en la mayoría de los casos, muchos detalles del mapa son inútiles. Por otro lado, los mapas de métricas a gran escala a veces sufren problemas de coherencia. Un pequeño error de dirección puede provocar que las paredes de dos habitaciones se superpongan, invalidando el mapa.

Mapa topológico

En lugar de medir la precisión del mapa, los mapas topológicos enfatizan las relaciones entre los elementos del mapa. Un mapa topológico es un gráfico (Graph), formado por nodos y aristas, y sólo considera la conectividad entre nodos. (Por ejemplo, concéntrese únicamente en si los puntos A y B están conectados, sin considerar cómo llegar del punto A al punto B). Relaja la necesidad del mapa de ubicaciones precisas, elimina detalles del mapa y es una representación más compacta. Sin embargo, los mapas topológicos no son buenos para expresar mapas con estructuras complejas. Cómo segmentar el mapa para formar nodos y bordes, y cómo utilizar estructuras topológicas para la navegación y la planificación de rutas, aún son cuestiones por estudiar.

Primero, expliquemos cuál es la posición x del robot. No hemos explicado claramente el significado de ubicación.
Al moverse en el plano, el rábano puede parametrizar su posición en forma de dos coordenadas más un ángulo de rotación.
Sabemos que el movimiento del espacio tridimensional consta de tres ejes, por lo que el movimiento del rábano se describe por traslación sobre los tres ejes y rotación alrededor de los tres ejes, con un total de 6 grados de libertad.

Supongo que te gusta

Origin blog.csdn.net/weixin_45867259/article/details/132473312
Recomendado
Clasificación