Instalación y operación de prueba de ORB-SLAM2

Serie de artículos
Capítulo 1 Instalación de ORB-SLAM2


Tabla de contenido


prefacio

提示:这里可以添加本文要记录的大概内容:

La instalación de Ubuntu 20.04, partiendo de la instalación de dependencias, sumó siete u ocho horas, y pisó muchos escollos.

Referencias clave: 1. GitHub - raulmur/ORB_SLAM2: SLAM en tiempo real para cámaras monoculares, estéreo y RGB-D, con capacidades de detección y relocalización de bucles

2. La segunda edición de "Catorce conferencias sobre Visual SLAM".


1. Instalar bibliotecas de terceros

Incluyendo Pangolin, OpenCV, Eigen, g2o y DBoW2 (los dos últimos elementos están incluidos en ORB-SLAM2, no los instale usted mismo)

Primero instale vim, cmake, git, gcc, g++,

sudo apt-get install vim cmake
sudo apt-get install git
sudo apt-get install gcc g++

Ya que estos se han instalado antes, no hay problema.

Instalar pangolín,

1. Instalar dependencias

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev

2. Instalar Pangolín

Al principio usé el siguiente comando para instalar

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOSR=1 ..
make -j

Pero cuando cmake informó un error, el contenido del informe de error probablemente no pudo encontrar Eigen 3.

Luego consulte este artículo ORB_SLAM2 instala Pangolin e informa que falta Eigen3

Problema resuelto. En resumen, es desinstalar el Pangolin existente y reinstalar la versión 0.5, el proceso es el siguiente:

cd /usr/local/include
ls

Vea si hay una carpeta llamada pangolin y elimínela si la hay. También eliminó la carpeta Pangolin en la carpeta del usuario.

Luego vuelve a descargar Pangolin0.5 y descomprímelo y ejecútalo

cd Pangolin
mkdir build
cd build
cmake ..
make -j

Instale OpenCV (instalé 3.4.5)

Al principio usé la línea de comando para instalar

sudo apt install libopencv-dev

Me tomó alrededor de 1 hora instalarlo, pero después de probarlo, no funcionó y no pude especificar la versión.Finalmente, lo desinstalé y reinstalé 3.4.5 desde el código fuente. Este es el enlace de descarga https://codeload.github.com/opencv/opencv/tar.gz/refs/tags/3.4.5

Si desea instalar otras versiones, se recomienda ir al sitio web oficial de OpenCV para encontrar la versión correspondiente para descargar e instalar.

instalar dependencias

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev  libtiff5-dev libopenexr-dev libtbb-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev pkg-config

Descarga el código fuente y ejecútalo después de la descompresión

cd opencv-3.4.5/
mkdir build
cd build
cmake ..
make -j4
sudo make install

Debido a que el proceso de compilación es relativamente lento, elegí 4 subprocesos aquí. Una vez completada la instalación, se deben cambiar dos archivos

sudo gedit /etc/ld.so.conf

Agregue include /usr/local/lib al archivo

guardar y ejecutar

sudo ldconfig
sudo gedit /etc/bash.bashrc

Agregue PKG_CONFIG_PATH=$PKG_CONFIG_PATH al final del archivo:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

Entonces

source /etc/bash.bashrc
sudo updatedb

Finalmente verifique la información de la versión:

pkg-config opencv --modversion

 

prueba:

cd opencv-3.4.5/samples/cpp/example_cmake
cmake .
make
./opencv_example

 

 Si la instalación es exitosa, se mostrará el número de versión y la ventana que se muestra en la figura.

Instalar Eigen

Permítanme hablar sobre las trampas encontradas primero, es decir, gitlab no se puede conectar, y se han verificado varios métodos en el medio sin éxito, y la solución final también es muy metafísica. . . Solo espera hasta el día siguiente,,,, pon un paquete comprimido de eigen3. Si necesita otras versiones, también puede ir al sitio web oficial de eigen para descargar.

Enlace: https://pan.baidu.com/s/1BTNW-TBb9lQP25X_QXj-LA Código de extracción: 87ma Después de copiar este contenido, abra la aplicación móvil Baidu Netdisk, la operación es más conveniente

Ejecute el siguiente comando después de la descompresión

cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install

#Después de la instalación, los archivos de encabezado se instalan en /usr/local/include/eigen3/

# necesito mover el archivo de encabezado

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

Finalmente pruébalo:

touch eigen-test.cpp
gedit eigen-test.cpp
#include <iostream>
#include <Eigen/Dense>
 
//using Eigen::MatrixXd;
using namespace Eigen;
using namespace Eigen::internal;
using namespace Eigen::Architecture;
 
using namespace std;
 
int main()
{
        cout<<"*******************1D-object****************"<<endl;
        Vector4d v1;
        v1<< 1,2,3,4;
        cout<<"v1=\n"<<v1<<endl;
 
        VectorXd v2(3);
        v2<<1,2,3;
        cout<<"v2=\n"<<v2<<endl;
 
        Array4i v3;
        v3<<1,2,3,4;
        cout<<"v3=\n"<<v3<<endl;
 
        ArrayXf v4(3);
        v4<<1,2,3;
        cout<<"v4=\n"<<v4<<endl;
}
g++ eigen-test.cpp -o eigen-test
./eigen-test

La instalación es exitosa como se muestra en la figura anterior.

2. Instale ORB-SLAM2 

PD: si no desea pisar el foso, puede leer el informe de error de seguimiento y la solución antes de ejecutar./build.sh 

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

报错1: error: 'usleep' no se declaró en este ámbito

Solución: en cada uno de los siguientes archivos, agregue la declaración del archivo de encabezado ***#include<unistd.h>*** y luego vuelva a compilar
ORB_SLAM2/src/LocalMapping.cc
ORB_SLAM2/src/LoopClosing.cc
ORB_SLAM2/src/ System .cc
ORB_SLAM2/src/Tracking.cc
ORB_SLAM2/src/Viewer.cc
ORB_SLAM2/Examples/Monocular/mono_euroc.cc
ORB_SLAM2/Examples/Monocular/mono_kitti.cc
ORB_SLAM2/Examples/Monocular/mono_tum.cc
ORB_SLAM2/Examples/RGB- D /rgbd_tum.cc
ORB_SLAM2/Examples/Stereo/stereo_euroc.cc
ORB_SLAM2/Examples/Stereo/stereo_kitti.cc

报错2: error: la afirmación estática falló: std::map debe tener el mismo tipo de valor que su asignador

Solución:

gedit ~/ORB_SLAM2/include/LoopClosing.h

Encuentra el siguiente código:

typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

cambiarlo a

typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;

 Luego ejecute ./build.sh.

3. Ejecución de prueba

Descargue un conjunto de datos para probar, elegí una cámara monocular aquí, Computer Vision Group - Descarga de conjunto de datos

Encontré el más pequeño y me bajé. Después de descomprimir a una ruta en inglés, ingrese el siguiente código en la terminal, cambie el TUMX.yaml en el medio al TUM1.yaml correspondiente, o 2, 3, según el conjunto de datos que descargó, porque descargué fr1 aquí, entonces Lo cambié a TUM1.yaml. Reemplace PATH_TO_SEQUENCE_FOLDER con la ruta donde se descomprime su conjunto de datos,

Por ejemplo, aquí está /home/elaine/ORB_SLAM2/datatSet/TUM/rgbd_dataset_freiburg1_desk

cd ORB_SLAM2
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

Si aparece la siguiente interfaz y no hay otra respuesta, es posible que la entrada de la ruta sea incorrecta.

La operación exitosa es como se muestra en la siguiente figura

 

 Hasta el momento, se han completado la instalación y la operación de prueba de ORB-SLAM2.

Supongo que te gusta

Origin blog.csdn.net/weixin_55076655/article/details/128151716
Recomendado
Clasificación