[VSLAM] Principio de VINS-Fusion y análisis del código fuente (1): primera introducción a VINS-Fusion

Prefacio

Recientemente leí VINS-Fusionel código fuente y varias publicaciones de análisis, y pensé en escribir una VINS-Fusionserie de blogs de análisis de código fuente para registrar mis experiencias mientras leía. Esta serie de blogs está VINS-Fusionorientada al proceso del código fuente, explicando el front-end y back-end paso a paso desde la función de entrada, y finalmente completando la simulación y la implementación experimental de la máquina real, espero dar una explicación completa y completa VINS-Fusionen detalle.

1. Cómo leer esta serie de blogs con elegancia

Primero, descargue los materiales de aprendizaje de este blog, que incluyen el código fuente anotado y el diagrama de flujo del programa;

# 相关论文和思维导图(用xmind软件打开)在下载的源码的学习资料文件夹中
git clone https://github.com/dongdong-cai/VINS_FUSION.git

En segundo lugar, no se deje limitar por esta serie de blogs, porque los métodos de esta serie de blogs son según mi propio entendimiento, que pueden no ser correctos o adecuados para usted. Puede leer más publicaciones de referencia, todas son excelentes;

En tercer lugar, trate de mirar el código con preguntas en mente. Si sigue ciegamente el orden del código, es fácil hundirse y no comprender por qué el autor lo diseñó de esta manera. Permítanme plantear algunas preguntas aquí:

(1) ¿Cuáles son las similitudes y diferencias entre VINS-FUSION y ORB2 en la identificación de puntos característicos y la coincidencia de puntos característicos?

(2) ¿Cómo combina VINS-FUSION estrechamente los datos de la IMU y los datos de la cámara? ¿Qué limitaciones considera?

(3) ¿Cómo mejorar aún más VINS-FUSION (cómo mejorar un artículo)?

2. Primera introducción a VINS-Fusion

VINS-FUSIONSobre la base de, VINS-Monose agregan GPSsensores que pueden obtener información de observación global , de modo que VINS-FUSIONla información global se pueda utilizar para eliminar errores acumulativos, reduciendo así la dependencia del circuito cerrado. Si no le importan GPSlos sensores globales y solo le importa IMUel procesamiento de los sensores de la cámara, entonces VINS-FUSIONel código VINS-Monoes casi el mismo y este blog solo presenta VINS-FUSIONel procesamiento front-end y back-end.

Primero echemos un vistazo al VINS-FUSIONmarco general:

[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-1zbhBBd2-1692172168065)(/home/caiqidong/snap/typora/82/.config /Typora/typora-user -images/image-20230816154206572.png)]

VINSEl módulo funcional puede incluir cinco partes: preprocesamiento de datos de front-end, inicialización, optimización no lineal de back-end, detección de bucle cerrado y optimización de bucle cerrado. Si los lectores lo han visto antes, ORB2encontrarán que los dos marcos son muy similares y que también es un VSLAMproceso de marco muy típico: (1) Cuando el sistema se inicia por primera vez, debemos inicializar los primeros cuadros para obtener alta calidad. puntos del mapa para PnPla solución posterior de la posición pose; (2) Para cada cuadro de la imagen, debemos realizar un preprocesamiento de datos frontal en la imagen, identificar puntos característicos, hacer coincidir los puntos característicos y resolver la pose relativa en función de los puntos característicos coincidentes. ; (3) El back-end utiliza reproyección visual para PnPoptimizar continuamente los fotogramas clave y sus puntos del mapa filtrados por el front-end para que los resultados sean más precisos; (4) Verificación de bucle cerrado para determinar si existe un bucle cerrado para reducir global errores;

3. Primera introducción al código fuente de VINS-Fusion

Después de descargar VINS-Fusionel código fuente, primero echemos un vistazo a la composición de carpetas del código fuente:

  • camera_models: Defina una clase de cámara abstracta, y las cámaras monoculares y binoculares posteriores se pueden unificar en una instancia de clase de cámara;
  • config: Almacena los archivos de configuración necesarios para que se ejecute el programa. Cuando ejecutamos nuestra propia cámara, solo necesitamos escribir nuestro propio archivo de configuración de acuerdo con los archivos de configuración internos para ejecutarla;
  • docker: Utilice dockerejecutar VINS-Fusion;
  • global_fusion: Procesamiento de sensores globales VINS-Fusionrecientemente agregado ;GPS
  • loop_fusion: El código para la parte de detección de loopback local. Cuando ejecutamos VINS, de forma predeterminada, solo se ejecutan el front-end y el backend. Si se necesita detección de loopback, el código de detección de loopback debe ejecutarse por separado;
  • support_files: El autor introduce alguna información sobre su código, como imágenes en ejecución, artículos, etc.;
  • vins_estimator: Código front-end y back-end, esta parte es donde nos enfocamos;

Después de recortarlo, comenzaremos la explicación formal en la próxima conferencia VINS-Fusion.

referencia

https://blog.csdn.net/BeeGreen/article/details/128514160
https://blog.csdn.net/yhy_yhy13053117/article/details/127874690
https://www.guyuehome.com/15066
https://zhuanlan .zhihu.com/p/407892357
https://mp.weixin.qq.com/s/hoPDnZhT7ltkKib6mqSTcA
https://github.com/kuankuan-yue/VINS-FUSION-leanrning
https://blog.csdn.net/ weixin_39926594/article/details/103408620
https://blog.csdn.net/weixin_40084095/article/details/124647161
https://blog.csdn.net/xiaojinger_123/article/details/127403364
https://www.zhihu.com /column/c_1543603130763534336?utm_id=0
https://github.com/ShuyueLin/VINS-Fusion-NotedByLSY
https://zhuanlan.zhihu.com/p/534577566
https://mp.weixin.qq.com/s/ opInITC_BDWz12j1_nUseA
https://blog.csdn.net/qq_41904635/article/details/106092472
https://blog.csdn.net/qqGHJ/article/details/127440699
https://blog.csdn.net/LDST_CSDN/article/details/ 130310175

Supongo que te gusta

Origin blog.csdn.net/caiqidong321/article/details/132320618
Recomendado
Clasificación