Instalación de ORB-SLAM2
Existen estas dependencias:
Consulte principalmente la siguiente publicación de blog
Primera experiencia de ORB-SLAM2 - configuración e instalación - MingruiYu - Blog Park (cnblogs.com)
Tenga en cuenta que al instalar la dependencia Pangolin, si es la última versión de Pangolin directamente desde GitHub, habrá problemas al compilar e instalar
1. La versión de sudo apt install libeigen3 puede no ser suficiente, puede descargar, compilar e instalar la biblioteca eigen usted mismo
2. Preste atención a la ubicación de la biblioteca eigen, generalmente "/usr/include/eigen3", y esta nueva versión de Pangolin parece encontrarse en "/usr/local/include", por lo que es mejor almacenar una en ambas ubicaciones comparten
3. El archivo de encabezado "varstate.h" en la nueva versión del paquete Pangolin contiene
#include <any>
Y esto requiere C++17, el sistema dual ThinkPad está instalado con Ubuntu16.04 y **Ubuntu16.04 admite la versión C++14 (gcc 5.4.0), no C++17, **esto es necesario para actualizar gcc, puede consultar el siguiente blog
Pero el proceso sigue siendo muy tedioso. El hermano que pasaba me recordó que no está bien instalar una versión inferior de Pangolin. Yo también lo creo. ORB-SLAM2 fue de código abierto en 2017, y debería ser la versión anterior de Pangolin.
Por lo tanto, compilar e instalar Pangolin en la conferencia visual SLAM 14th 3rd_party del Dr. Gao Xiang es muy sencillo.
Después de instalar las dependencias, es muy sencillo compilar e instalar ORB-SLAM2
Una vez completada la instalación, abra la terminal e ingrese:
cd ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ../rgbd_dataset_freiburg1_desk
La captura de pantalla del proceso en ejecución es la siguiente:
La salida en ejecución es la siguiente:
ORB-SLAM2 Copyright (C) 2014-2016 Raul Mur-Artal, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.
Input sensor was set to: Monocular
Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!
Camera Parameters:
- fx: 517.306
- fy: 516.469
- cx: 318.643
- cy: 255.314
- k1: 0.262383
- k2: -0.953104
- k3: 1.16331
- p1: -0.005358
- p2: 0.002628
- fps: 30
- color order: RGB (ignored if grayscale)
ORB Extractor Parameters:
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7
-------
Start processing sequence ...
Images in the sequence: 613
New Map created with 110 points
-------
median tracking time: 0.0502065
mean tracking time: 0.0544293
Saving keyframe trajectory to KeyFrameTrajectory.txt ...
trajectory saved!
La pista de movimiento de la cámara final se almacena en formato txt
Pero surge este problema:
QObject::~QObject: Timers cannot be stopped from another thread
Se han planteado problemas en GitHub
Parece que no todos tienen una buena solución por el momento, pero no afecta el dibujo y el almacenamiento de la trayectoria, por lo que no lo consideraré detenidamente por el momento.