Installation et essai de fonctionnement de l'ORB-SLAM2

Série d'articles
Chapitre 1 Installation de l'ORB-SLAM2


Table des matières


avant-propos

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

L'installation d'Ubuntu 20.04, à partir de l'installation des dépendances, a duré jusqu'à sept ou huit heures, et s'est heurtée à de nombreux pièges.

Références clés : 1. GitHub - raulmur/ORB_SLAM2 : SLAM en temps réel pour caméras monoculaires, stéréo et RVB-D, avec capacités de détection de boucle et de relocalisation

2. La deuxième édition de "Fourteen Lectures on Visual SLAM".


1. Installez des bibliothèques tierces

Y compris Pangolin, OpenCV, Eigen, g2o et DBoW2 (ces deux derniers éléments sont inclus dans ORB-SLAM2, ne les installez pas vous-même)

Installez d'abord vim, cmake, git, gcc, g++,

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

Comme ceux-ci ont été installés auparavant, il n'y a pas de problème.

Installez Pangolin,

1. Installer les dépendances

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. Installez Pangolin

Au début, j'ai utilisé la commande suivante pour installer

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

Mais lorsque cmake a signalé une erreur, le contenu du rapport d'erreur n'a probablement pas pu trouver Eigen 3.

Alors référez-vous à cet article ​​​​​​ORB_SLAM2 installe Pangolin et signale qu'il manque Eigen3

Problème résolu. Pour résumer, il s'agit de désinstaller le Pangolin existant et de réinstaller la version 0.5. Le processus est le suivant :

cd /usr/local/include
ls

Vérifiez s'il existe un dossier appelé pangolin et supprimez-le s'il y en a un. A également supprimé le dossier Pangolin dans le dossier utilisateur

Ensuite, téléchargez à nouveau Pangolin0.5, décompressez-le et exécutez-le

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

Installer OpenCV (j'ai installé 3.4.5)

Au début, j'ai utilisé la ligne de commande pour installer

sudo apt install libopencv-dev

Il a fallu environ 1 heure pour l'installer, mais après l'avoir testé, cela n'a pas fonctionné, et je n'ai pas pu spécifier la version.Enfin, je l'ai désinstallé et réinstallé 3.4.5 à partir du code source. Ceci est le lien de téléchargement https://codeload.github.com/opencv/opencv/tar.gz/refs/tags/3.4.5

Si vous souhaitez installer d'autres versions, il est recommandé d'aller sur le site officiel d'OpenCV pour trouver la version correspondante à télécharger et à installer.

installer les dépendances

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

Téléchargez le code source et exécutez-le après décompression

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

Comme le processus de compilation est relativement lent, j'ai choisi 4 threads ici. Une fois l'installation terminée, deux fichiers doivent être modifiés

sudo gedit /etc/ld.so.conf

Ajouter include /usr/local/lib au fichier

enregistrer et exécuter

sudo ldconfig
sudo gedit /etc/bash.bashrc

Ajoutez PKG_CONFIG_PATH=$PKG_CONFIG_PATH à la fin du fichier :/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

Alors

source /etc/bash.bashrc
sudo updatedb

Enfin, vérifiez les informations de version :

pkg-config opencv --modversion

 

test:

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

 

 Si l'installation réussit, le numéro de version et la fenêtre illustrés sur la figure s'affichent.

Installer propre

Permettez-moi de parler des pièges rencontrés en premier, c'est-à-dire que gitlab ne peut pas être connecté, et diverses méthodes ont été vérifiées au milieu sans succès, et la solution finale est également très métaphysique. . . Attendez juste le lendemain,,,, mettez un paquet compressé de eigen3. Si vous avez besoin d'autres versions, vous pouvez également vous rendre sur le site officiel d'eigen pour les télécharger.

Lien : https://pan.baidu.com/s/1BTNW-TBb9lQP25X_QXj-LA Code d'extraction : 87ma Après avoir copié ce contenu, ouvrez l'application mobile Baidu Netdisk, l'opération est plus pratique

Exécutez la commande suivante après la décompression

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

#Après l'installation, les fichiers d'en-tête sont installés dans /usr/local/include/eigen3/

# besoin de déplacer le fichier d'en-tête

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

Testez enfin :

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

L'installation est réussie comme le montre la figure ci-dessus.

2. Installez ORB-SLAM2 

PS : Si vous ne voulez pas marcher sur la fosse, vous pouvez lire le rapport d'erreur de suivi et la solution avant d'exécuter./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' n'a pas été déclaré dans cette portée

Solution : dans chacun des fichiers suivants, ajoutez l'instruction de fichier d'en-tête ***#include<unistd.h>***, puis recompilez
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/Monoculaire/mono_euroc.cc
ORB_SLAM2/Examples/Monoculaire/mono_kitti.cc
ORB_SLAM2/Examples/Monoculaire/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: static assertion failed: std::map must have the same value_type as its allowator

Solution:

gedit ~/ORB_SLAM2/include/LoopClosing.h

Trouvez le code suivant :

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

changez-le en

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

 Ensuite, exécutez ./build.sh.

3. Essai

Télécharger un jeu de données pour tester, j'ai choisi une caméra monoculaire ici, Computer Vision Group - Dataset Download

J'ai trouvé le plus petit et je suis descendu. Après avoir décompressé vers un chemin en anglais, entrez le code suivant dans le terminal, remplacez le TUMX.yaml au milieu par le TUM1.yaml correspondant, ou 2, 3, selon l'ensemble de données que vous avez téléchargé, car j'ai téléchargé fr1 ici, donc Je l'ai changé en TUM1.yaml. Remplacez PATH_TO_SEQUENCE_FOLDER par le chemin où votre jeu de données est décompressé,

Par exemple, voici /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 l'interface suivante apparaît et qu'il n'y a pas d'autre réponse, il se peut que l'entrée du chemin soit erronée.

L'opération réussie est comme indiqué dans la figure ci-dessous

 

 Jusqu'à présent, l'installation et l'essai d'ORB-SLAM2 sont terminés.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_55076655/article/details/128151716
conseillé
Classement