ORB_SLAM3 ejecuta conjuntos de datos EuRoC, TUM e imágenes de cámaras monoculares de ojo de pez preparadas por usted mismo

        ORB_SLAM3 agrega soporte para cámara ojo de pez por primera vez. Si queremos utilizar nuestra propia secuencia de imágenes de cámara ojo de pez para probar el efecto correspondiente, debemos realizar cierta preparación y procesamiento:

Tabla de contenido

1. Descargue y compile ORB_SLAM3

1.1 Instalación

1.2 Compilación: directamente ./build.sh está bloqueado

2. Ejecute el conjunto de datos EuRoC

2.1 Descarga del conjunto de datos

2.2 Ejecutar el conjunto de datos

2.3 Ejecutar comando

3. Ejecute el conjunto de datos TUM

3.1 Descarga del conjunto de datos TUM

3.2 Operación del conjunto de datos

3.3 Ejecutar comando

4. Requisitos de secuencia de ojo de pez monocular

5. Ejecute su propia secuencia monocular


1. Descargue y compile ORB_SLAM3

1.1 Instalación

        Dirección del sitio web oficial:

GitHub - UZ-SLAMLab/ORB_SLAM3: ORB-SLAM3: una biblioteca precisa de código abierto para SLAM visual, visual-inercial y de mapas múltiples

        Busque una carpeta adecuada y ejecute la terminal:

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

        El nombre de la carpeta descargada es ORB_SLAM3.

        Hay bibliotecas que deben instalarse en github, puedes consultar mi tutorial:

Actualización de Ubuntu eigen a 3.4.0_eigen3.4_Qianmengyu 11 blog-CSDN blog

Instalación de Sophus en el blog-CSDN del blog de ubuntu_Qianmengyu 11

Instalación de la biblioteca Pangolin en el blog-CSDN de ubuntu16.04_Qianmengyu 11

Tutorial de opencv de instalación de Ubuntu16.04 C ++_Blog-CSDN de Qianmengyu 11

        Nota: Eigen no puede instalar 3.4.0 y se puede informar un error de TensorXXX. La mayoría de los errores en Internet son que no hay ningún archivo, pero si está instalado 3.4.0, el error es: Eigen/CXX11/src/ Tensor/TensorBlock.h:1303:7: error: el valor de 'j' no se puede utilizar en una expresión constante

        De hecho es porque la versión no corresponde a tensorflow, después de buscar durante mucho tiempo encontré a alguien que dijo que estaba bien instalar la versión 3.3.7. No se informa ningún error después de la instalación.

1.2 Compilación: directamente ./build.sh está bloqueado

        Comando del sitio web oficial:

cd ORB_SLAM3
chmod +x build.sh
./build.sh

        Pero esta computadora común y corriente es propensa a atascarse. De hecho, puede abrir el archivo build.sh en el directorio principal de la carpeta ORB_SLAM3: este archivo es el archivo de resumen compilado y su contenido es:

 

echo "Configuring and building Thirdparty/DBoW2 ..."

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../g2o

echo "Configuring and building Thirdparty/g2o ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../Sophus

echo "Configuring and building Thirdparty/Sophus ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../../

echo "Uncompress vocabulary ..."

cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..

echo "Configuring and building ORB_SLAM3 ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

        De hecho, la compilación de las primeras bibliotecas es muy fácil, pero es fácil atascarse en la última línea de make -j4 de ORBSLAM3.

        Simplemente cambie la última línea para que no tenga opciones. La compilación debería ser más lenta, pero no se congelará.

2. Ejecute el conjunto de datos EuRoC

2.1 Descarga del conjunto de datos

        Consulte mi blog: ORB_SLAM2 descargue, compile y ejecute el conjunto de datos EuRoC_descarga del conjunto de datos euroc_blog-CSDN de Qianmengyu 11

         La dirección del sitio web oficial del conjunto de datos es:

kmavvisualinertialdatasets - Conjuntos de datos ASL

        Simplemente descargue un formato de conjunto de datos ASL. Simplemente descomprima una carpeta mav0. Por ejemplo, descargamos el conjunto de datos Machine Hall01 y lo extraemos a la carpeta MH01.

2.2 Ejecutar el conjunto de datos

         Para ejecutar estos conjuntos de datos, puede utilizar los ejemplos de la carpeta Ejemplos. Usando el ejecutable mono_euroc

         

        El archivo ejecutable mono_euroc tiene cuatro parámetros de entrada: vocabulario, archivo de configuración de la cámara yaml, dirección de secuencia del conjunto de datos y archivo de marca de tiempo correspondiente al conjunto de datos (.txt). El código es:

./Examples/Monocular/mono_euroc 词库文件.txt 配置文件.yaml 数据集序列 数据集对应时间戳.txt

        Entre ellos, el archivo de vocabulario puede ser el archivo ORBvoc.txt que viene con él y se encuentra en la carpeta ORB_SLAM3/Vocabulary. Cuando se compila este archivo, hay una línea de comando para descomprimir el archivo comprimido en esta carpeta, y el archivo descomprimido es el archivo de diccionario de sinónimos. Otros conjuntos de datos posteriores también pueden utilizar este archivo.

        Complete el código como:

./Vocabulary/ORBvoc.txt

         Hay muchos archivos de configuración de cámara yaml en la carpeta ORB_SLAM3/Examples/Monocalur/, que describirán algunos tipos y parámetros de la cámara. La mayoría de ellas son cámaras monoculares. El archivo RealSense_T265.yaml contiene cámaras ojo de pez (tipo de cámara: "KannalaBrandt8 "). En el conjunto de datos EuRoC, simplemente use el archivo EuRoC.yaml, el contenido es:

        Se deberá cumplimentar lo correspondiente:

./Examples/Monocular/EuRoC.yaml

         La dirección del conjunto de datos se puede escribir en el nivel superior de la carpeta mav0. Por ejemplo, si descomprimimos mav0 en la carpeta MH01, la dirección correspondiente que se debe ingresar es   

/home/  /xxxxx/MH01

        El archivo de marca de tiempo es un archivo .txt. Hay dos conjuntos de datos (RuRoC y TUM) en la carpeta ORB_SLAM3/Examples/Monocalur/, que se colocan en las carpetas EuRoC_TimeStamps y TUM_TimeStamps respectivamente. Esta sección utiliza el conjunto de datos MH01 del conjunto de datos EuRoC, y el archivo correspondiente es:

./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

2.3 Ejecutar comando

        Resumido, el comando total es:

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml 数据集地址/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

3. Ejecute el conjunto de datos TUM

3.1 Descarga del conjunto de datos TUM

        Página web oficial:

Grupo de visión por computadora - Conjuntos de datos - Conjunto de datos visual-inercial

         El 512x512 del corredor4 que descargué es el cuarto archivo de la cuarta línea. Descomprímalo en la carpeta correspondiente y extraiga una carpeta dataset-corridor4_512_16:

 

3.2 Operación del conjunto de datos

        El conjunto de datos utiliza el archivo ejecutable mono_tum_vi. Al igual que el anterior, también hay cuatro parámetros.

./Examples/Monocular/mono_tum_vi 词库文件.txt 配置文件.yaml 数据集序列 数据集对应时间戳.txt

        El primero permanece sin cambios y el segundo archivo de configuración se cambia al archivo ./Examples/Monocular/TUM1.yaml en la misma carpeta.

        La secuencia del conjunto de datos debe ser específica de los datos en cam1 (una carpeta en mav0). El archivo de marca de tiempo del conjunto de datos correspondiente se encuentra en la carpeta ./Examples/Monocular/TUM_TimeStamps/ y se selecciona según la versión de resolución 512 del correspondiente conjunto de datos de corredor4. El archivo txt es:

./Examples/Monocular/TUM_TimeStamps/dataset-corridor4_512.txt

3.3 Ejecutar comando

        El comando final en ejecución es:

./Examples/Monocular/mono_tum_vi ./Vocabulary/ORBvoc.txt ./Examples/Monocular/TUM1.yaml 数据集地址/dataset-corridor4_512_16/mav0/cam1/data ./Examples/Monocular/TUM_TimeStamps/dataset-corridor4_512.txt

        Porque el nombre de la imagen correspondiente a la marca de tiempo está en la carpeta cam1, no en cam0. El conjunto de datos TUM son datos de una cámara binocular ojo de pez + IMU.

        Simplemente cambie la dirección del conjunto de datos.

4. Requisitos de secuencia de ojo de pez monocular

        A través de las operaciones anteriores, podemos ver que los cambios son básicamente la dirección del conjunto de datos y el archivo de marca de tiempo del conjunto de datos. Por supuesto, el archivo de la cámara también debe cambiarse a los parámetros correspondientes a la cámara.

        La cámara monocular ojo de pez utiliza el archivo ejecutable mono_tum_vi. El conjunto de datos requerido es una carpeta llena de imágenes png. Los requisitos son:

        1. El archivo contiene imágenes png.

        2. La imagen png tiene un nombre con una marca de tiempo de 20 dígitos (el nombre real es similar a 12345678912345678900.png)

        Luego, el archivo de marca de tiempo correspondiente real (.txt) contiene la marca de tiempo, una marca de tiempo de 20 dígitos por línea. La marca de tiempo real en ejecución + '.png' es el nombre de la imagen.

        Luego necesitamos preparar una carpeta para colocar las imágenes almacenadas y solicitar imágenes PNG con nombres de 20 dígitos, similar a:

 

        Luego cree un texto con el siguiente contenido: (Si la marca de tiempo es real, use la real; de lo contrario, solo las transformaciones de pose de diferentes imágenes son precisas)

...
00000000123400000000
00000000123500000000
00000000123600000000
00000000123700000000
...

        Supongamos que la carpeta del conjunto de datos es: /home/xxx-username/slam/000

        El archivo de marca de tiempo se coloca en la carpeta my_TimeStamps recién creada en la carpeta ./Examples/Monocular/ original.

        El archivo de configuración es my.yaml

5. Ejecute su propia secuencia monocular

        El comando de ejecución correspondiente es:

./Examples/Monocular/mono_tum_vi ./Vocabulary/ORBvoc.txt ./Examples/Monocular/配置文件.yaml 数据集地址 时间戳文件.txt

        La posición de referencia cuatro es:

./Examples/Monocular/mono_tum_vi ./Vocabulary/ORBvoc.txt ./Examples/Monocular/my.yaml /home/xxx-username/slam/000 ./Examples/Monocular/my_TimeStamps/my.txt

        El resultado de ejecución es:

 

        Finalmente, está el tiempo promedio y así sucesivamente. 

        Los archivos de trayectoria generados son: CameraTrajectory.txt y KeyFrameTrajectory.txt en la carpeta principal ORB_SLAM3. Entre ellos, tomando CameraTrajectory.txt como ejemplo, hay 8 datos en una línea, representados en el código:

lT  twc(0)  twc(1)  twc(2)  q.x  q.y  q.z  q.w

        Entre ellos, lT es la marca de tiempo, q es el cuaternión unitario y twc es el vector de traducción.

Supongo que te gusta

Origin blog.csdn.net/weixin_43907136/article/details/130273186
Recomendado
Clasificación