Configuration de l'environnement ORB-SLAM2 sur Mac M1 avec Ubuntu ARM

L'installation d'ORB-SLAM2 sur l'architecture Apple Silicon (M1/M2) nécessite une virtualisation performante. Pour ce guide, l'environnement repose sur Parallels Desktop exécutant Ubuntu 20.04 ARM 64. Cette configuration permet de bénéficier de l'accélération matérielle nécessaire au traitement des algorithmes de vision par ordinateur.

  1. Installation des dépendances fondamentales

A. Eigen (Version 3.4.0)

Eigen est essentiel pour les opérations d'algèbre linéaire. Téléchargez la version 3.4.0 depuis le site officiel. L'installation suit un flux CMake standard :

cd eigen-3.4.0
mkdir build && cd build
cmake ..
sudo make install

B. Pangolin

Pangolin est utilisé pour la gestion de l'affichage et de l'interface utilisateur. Il est impératif de cloner le dépôt avec l'option récursive pour inclure les sous-modules.

git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
./scripts/install_prerequisites.sh recommended
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

C. OpenCV (Version 4.5.4)

Pour exploiter les capacités de traitement d'image sur ARM64, compilez OpenCV à partir des sources :

cd opencv-4.5.4
mkdir build_opencv && cd build_opencv
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D OPENCV_GENERATE_PKGCONFIG=ON ..
make -j$(nproc)
sudo make install
  1. Adaptation du code source d'ORB-SLAM2

Le dépôt original d'ORB-SLAM2 nécessite plusieurs ajustements pour être compatible avec les versions récentes d'OpenCV et le compilateur ARM.

Modification du fichier CMakeLists.txt principal

Il faut élever le standard C++ et mettre à jour la détection des paquets :

# Activation de C++14
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Mise à jour de la recherche OpenCV
find_package(OpenCV 4.5 QUIET)

# Correction pour Eigen3
find_package(Eigen3 3.1.0 REQUIRED NO_MODULE)

Répétez la mise à jour de la version d'OpenCV (4.5) dans le fichier Thirdparty/DBoW2/CMakeLists.txt.

Corrections des en-têtes et des types

Dans include/LoopClosing.h, modifiez la définition de l'allocateur pour éviter des erreurs de compilation strictes sur les types constants :

// Remplacer :
// Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
// Par :
Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

Dans include/ORBextractor.h, remplacez l'inclusion obsolète par les nouveaux modules OpenCV 4 :

#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui_c.h>

Dans include/System.h, ajoutez les constantes manquantes et la bibliothèque pour la gestion du temps :

#include <opencv2/imgcodecs/legacy/constants_c.h>
#include <unistd.h>
  1. Compilation et Exécution

Une fois les modifications appliquées, lancez le script de construction :

chmod +x build.sh
./build.sh

Test avec le jeu de données TUM

Pour valider l'installation, utilisez une séquence du dataset RGB-D de l'université technique de Munich (TUM) :

  1. Téléchargez une séquence (ex: freiburg1_360).
  2. Exécutez l'exemple monoculaire :
./Examples/Monocular/mono_tum \
    Vocabulary/ORBvoc.txt \
    Examples/Monocular/TUM1.yaml \
    /chemin/vers/votre/dossier/sequence

Assurez-vous que le fichier de configuration (TUM1.yaml, TUM2.yaml, etc.) correspond bien à la version du capteur utilisé dans la séquence téléchargée.

Étiquettes: ORB-SLAM2 AppleSilicon OpenCV UbuntuARM ComputerVision

Publié le 27 juillet à 20h28