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.