Análisis de código fuente ORB-SLAM2 (monocular) - proceso de inicialización

Análisis de código fuente ORB-SLAM2 (monocular) - proceso de inicialización

1. Introducción a ORB-SLAM2

Características de ORB-SLAM2:
inserte la descripción de la imagen aquí

Marco general de ORB-SLAM2:
inserte la descripción de la imagen aquí

(1) Entrada:
Hay tres modos para elegir: modo monocular, modo binocular y modo RGB-D.
(2) Seguimiento:
después de que la inicialización sea exitosa, primero seleccionará el seguimiento del cuadro clave de referencia, y luego la mayor parte del tiempo es el seguimiento del modelo de velocidad constante. Cuando se pierde el seguimiento, se inicia el seguimiento de reubicación. Después del seguimiento anterior , la pose inicial se puede estimar y, a continuación, la pose se optimiza aún más mediante el seguimiento del mapa local. Al mismo tiempo, juzgará si el cuadro actual debe crearse como un cuadro clave de acuerdo con las condiciones.
(3) Mapeo local :
los fotogramas clave de entrada provienen de los fotogramas clave recién creados en el seguimiento. Para aumentar el número de puntos del mapa local, se volverá a realizar la coincidencia de características entre los cuadros clave en el mapa local para generar nuevos (
4) puntos del mapa: el
BA local optimizará la pose del cuadro clave y los puntos del mapa en la vista común en el Al mismo tiempo, y después de la optimización, también se eliminarán los puntos del mapa inexactos y los fotogramas clave redundantes.
(5) Cierre de bucle
Use la bolsa de palabras para consultar el conjunto de datos para detectar si el bucle está cerrado, y calcule la pose Sim3 entre el cuadro clave actual y el cuadro clave candidato de bucle cerrado. La escala solo se considera en modo monocular, y la escala se fija en 1 en modo binocular o RGBD. A continuación, realice una fusión de bucle cerrado y una optimización del mapa esencial para que todas las poses de fotogramas clave sean más precisas.
(6) Global BA
optimiza todos los fotogramas clave y sus puntos de mapa.
(7) Reconocimiento de ubicación
Es necesario importar el diccionario capacitado fuera de línea, que está construido por el modelo de bolsa de palabras visual. Los marcos de imagen recién ingresados ​​deben convertirse primero en vectores de bolsa de palabras en línea, que se utilizan principalmente en la coincidencia de características, la reubicación y el cierre de bucles.
(8) Mapa
El mapa se compone principalmente de puntos de mapa y fotogramas clave. Los fotogramas clave forman una vista común según el número de puntos de vista comunes y forman un árbol de expansión según la relación padre-hijo.

2. Inicialización del sistema SLAM

Descargue el código fuente de ORB-SLAM2 de Internet y abra la demostración de la cámara monocular.
(1) Ingrese a la función principal:
inserte la descripción de la imagen aquí
cargue el archivo de video, que se usa para ejecutar todo el proceso ORB-SLAM2
(2) Constructor del sistema Slam:
inserte la descripción de la imagen aquí

(3) Cargar diccionario ORB
inserte la descripción de la imagen aquí

Cargue el diccionario ORB para nuestro uso posterior de coincidencia de bolsa de palabras
(4) para inicializar el hilo de seguimiento
inserte la descripción de la imagen aquí

(5) Inicialice el mapeo local y ejecute el subproceso de mapeo local
inserte la descripción de la imagen aquí

(6) Inicialice la detección de loopback y ejecute el subproceso de detección de loopback
inserte la descripción de la imagen aquí

(7) Inicializar el renderizador **
inserte la descripción de la imagen aquí

3. Seguimiento de la inicialización del subproceso

inserte la descripción de la imagen aquí

Entremos y echemos un vistazo a las operaciones específicas de la inicialización del hilo de seguimiento
(1) Lea los parámetros internos de la cámara desde el archivo de configuración
inserte la descripción de la imagen aquí

(2) Obtenga los parámetros de la pirámide de la imagen y los puntos característicos
inserte la descripción de la imagen aquí

(3) Inicialice el extractor de puntos de características ORB
inserte la descripción de la imagen aquí

Vea cómo se inicializa el extractor de funciones ORB

1) Inicialice el tamaño de la imagen de cada capa.
Calcule la relación de zoom de cada capa de la imagen de la pirámide con respecto a la imagen original a través del número de capas de la pirámide y el factor de escala que ingresamos.
inserte la descripción de la imagen aquí

2) Inicializar el número de puntos característicos extraídos de cada capa de imagen piramidal
Calcular el número de puntos característicos extraídos de cada capa de imagen piramidal a través del número total de puntos característicos a extraer. Cuanto mayor sea el tamaño de la imagen, más puntos característicos se extraerán y viceversa
inserte la descripción de la imagen aquí

3) Inicialice los parámetros relevantes del centroide gris de los puntos característicos de ORB. Los
puntos clave FAST originales no tienen información de dirección, por lo que cuando se gira la imagen, el descriptor breve también cambiará, lo que hace que los puntos característicos no sean resistentes a la rotación, por lo que usar gris El método del centroide se usa para obtener la orientación de los puntos característicos, a fin de obtener la invariancia de rotación.
¿Cómo calcular el centroide en escala de grises?
inserte la descripción de la imagen aquí

Calcule el centroide en escala de grises dentro de un círculo
inserte la descripción de la imagen aquí

¿Por qué usar un círculo para calcular el centroide en escala de grises en lugar de otras formas como un cuadrado?
En ORBSLAM, primero se giran las coordenadas y luego se extraen los puntos de la imagen. No es que primero se tome la imagen y luego se gire, lo que hará que las partes verde y amarilla sean píxeles diferentes cuando los puntos se recopilen debajo.
inserte la descripción de la imagen aquí

ORB-SLAM2 inicializa los parámetros relacionados con el centroide como se muestra en el siguiente código
inserte la descripción de la imagen aquí

Necesitamos calcular el centroide en escala de grises de los puntos característicos. De acuerdo con la fórmula, necesitamos obtener los valores en escala de grises de todos los píxeles en el círculo para calcular el centroide en escala de grises. Por lo tanto, primero debemos determinar el límite del círculo y determinar qué píxeles están involucrados en el cálculo dentro del círculo y cuáles no están involucrados en el cálculo. Aquí primero calculamos el límite del cuarto de círculo, luego a través de la simetría y finalmente formamos un círculo. Finalmente, obtenemos la información del parámetro límite umax del círculo.

4. Inicialización de mapeo local

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

5. Inicialización de la detección de loopback

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Establezca la cantidad de tramas de bucle invertido que deben detectarse continuamente en la detección de bucle invertido para contar el bucle invertido.

Supongo que te gusta

Origin blog.csdn.net/weixin_43391596/article/details/129692085
Recomendado
Clasificación