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.