Detaillierter Prozess der ORB-SLAM3-Reproduktion – Konfigurationsinstallation und ROS- und Skriptausführung ---Ubuntu20.04

Download-Adresse des ORB-SLAM3-Codes: Download des ORB-SLAM3-Quellcodes

Alle Vorgänge werden nach Abschluss aller Vorgänge in der folgenden URL ausgeführt: Das erste, was nach der Installation des Ubuntu-Systems zu tun ist.
本文是总结的比较完善和直接的过程。
Tatsächlich sind während des gesamten Vorgangs einige Probleme aufgetreten und es wurden auch einige Zusammenfassungen erstellt, die im Artikel aufgezeichnet wurden
ORB – Unter
wird empfohlen, sich zuerst auf diesen Artikel zu konzentrieren und dann auf die Problemlösungen zu verweisen, wenn Probleme auftreten.

1. Installieren Sie die erforderlichen Abhängigkeiten und Pakete

Nachdem Sie ROS mit einem Klick installiert haben, müssen Sie nur noch Pangolin installieren, und alle anderen Anforderungen sind bereits vorhanden.
Führen Sie einfach die folgenden Befehle nacheinander aus:

#依赖项
sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libpython2.7-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
sudo apt-get install libdc1394-22-dev libraw1394-dev
sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
#下载编译
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
sudo make install

Was auf diese Weise heruntergeladen wird, ist Pangolin0.8. Es kann normal in ORB-SLAM3 verwendet werden.

2. Code und Dateiinhalt ändern

Da die Versionen vieler Bibliotheken unterschiedlich sind, müssen einige Codes geändert werden.
Hier deklariere ich meine Umgebung:

Ubuntu20.04
Opencv4.2.0
C++11
Eigen3.3.7
Python3.8.10
Pangolin0.8

2.1 Änderung der Datei CMakeLists.txt

  1. Änderung der Datei /home/xiaoduan/project/source2/orb_slam3/CMakeLists.txt
gedit /home/xiaoduan/project/source2/orb_slam3/CMakeLists.txt
#第33行Opencv的版本改为4
#第41行Eigen的版本改为3
  1. Änderung der Datei /home/xiaoduan/project/source2/orb_slam3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
gedit /home/xiaoduan/project/source2/orb_slam3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt

Die Änderungen sind wie folgt:

  1. Die Version von Opencv in Zeile 33 wird auf 4 geändert
  2. Zeile 41 Eigens Version wird in 3 geändert
  3. Zeile 49, fügen Sie ${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/Sophus hinzu

2.2 Änderung des monokularen Visualisierungscodes

gedit /Examples/Monocular/mono_euroc.cc

Inhalt ändern:

83行中的false改为true

2.3 Änderung der Umgebungskonfigurationsdateien

gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples_old/ROS
source ~/.bashrc

Hinweis: ${ROS_PACKAGE_PATH} im zweiten Befehl ist der Pfad Ihrer eigenen Datei.

2.4 Änderung des Quellcodes

Unter src in ORB_SLAM3 befindet sich ein AR-Ordner. Einige Inhalte darin führen zur Kompilierung der ausführbaren ROS-Datei. Nehmen Sie die folgenden Änderungen vor:

  1. Fügen Sie die folgenden zwei Header-Dateien hinzu:
#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
  1. Löschen Sie Zeile 151 von ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc und ersetzen Sie sie durch den folgenden Inhalt
cv::Mat Tcw;
Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
cv::eigen2cv(Tcw_Matrix, Tcw);
  1. Löschen Sie Zeile 409 von ROS/ORB_SLAM3/src/AR/ViewerAR.cc und ersetzen Sie sie durch Folgendes
cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

  1. Löschen Sie Zeile 409 von ROS/ORB_SLAM3/src/AR/ViewerAR.cc und ersetzen Sie sie durch Folgendes
cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

3. Zusammenstellung von ORB-SLAM3

3.1 Erstellen Sie die ORB-SLAM3-Bibliothek

Führen Sie einfach die folgenden Befehle der Reihe nach aus:

cd ORB_SLAM3
chmod +x build.sh
./build.sh

3.2 ROS-Knoten generieren

Führen Sie den folgenden Befehl aus:

cd Examples_old/ROS/ORB_SLAM3 
chmod +x build_ros.sh
./build_ros.sh

4. Betrieb von ORB-SLAM3

4.1 Ausführung in einer Nicht-ROS-Umgebung

4.1.1 EuROC-Datensatz

Der vom Mikroflugzeug gesammelte visuelle Trägheitsdatensatz umfasst gleichzeitige Messdaten von Fernglaskameras und IMU sowie den wahren Wert der Pose.
Der Datensatz muss von MH_01_easy.zip heruntergeladen werden. Die Download-Adresse lautet: MH_01_easy.zip Download-Adresse
. Entpacken Sie den Datensatz und nennen Sie ihn MH01.
Führen Sie den Befehl aus:
Hinweis: ${dir} im Befehl ist der Speicherpfad für persönliche Daten

  • Reines Monokular:
cd Examples
./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ${
    
    dir}/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
  • Reines Fernglas:
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ${
    
    dir}/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo
  • Monokulare Trägheitsnavigation:
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ${
    
    dir}/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi
  • Binokulare Trägheitsnavigation:
./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml ${
    
    dir}/MH01 ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereoi

4.1.2 TUM VI-Datensatz

Die verwendeten Kameras und IMU-Sensoren sind hardwaremäßig zeitsynchronisiert.

Das bereitgestellte Bild verfügt über einen hohen Dynamikbereich und wurde vorab photometrisch kalibriert. Es wird mit einer Bildrate von 20 Hz und einer Auflösung von 1024 Pixel * 1024 Pixel erfasst. Die dreiachsige IMU-Abtastfrequenz beträgt 200 Hz und kann Beschleunigung und Winkel messen Geschwindigkeit.

Sie müssen die Datensätze dataset-room1_512_16 und rgbd_dataset_freiburg1_desk herunterladen. Download-Adresse: TUM-Datensatz-Download

  • Reines Monokular:
cd Examples
./Monocular/mono_tum_vi ../Vocabulary/ORBvoc.txt Monocular/TUM_512.yaml ${
    
    dir}/dataset-room1_512_16/mav0/cam0/data Monocular/TUM_TimeStamps/dataset-room1_512.txt dataset-room1_512_mono
  • Reines Fernglas:
./Stereo/stereo_tum_vi ../Vocabulary/ORBvoc.txt Stereo/TUM_512.yaml ${
    
    dir}/dataset-room1_512_16/mav0/cam0/data /home/sangfor/2023/bro_ws/dataset-room1_512_16/mav0/cam1/data Stereo/TUM_TimeStamps/dataset-room1_512.txt dataset-room1_512_stereo
  • Monokulare Trägheitsnavigation:
./Monocular-Inertial/mono_inertial_tum_vi ../Vocabulary/ORBvoc.txt Monocular-Inertial/TUM_512.yaml ${
    
    dir}/dataset-room1_512_16/mav0/cam0/data Monocular-Inertial/TUM_TimeStamps/dataset-room1_512.txt Monocular-Inertial/TUM_IMU/dataset-room1_512.txt dataset-room1_512_monoi
  • Binokulare Trägheitsnavigation:
./Monocular-Inertial/mono_inertial_tum_vi ../Vocabulary/ORBvoc.txt Monocular-Inertial/TUM_512.yaml ${
    
    dir}/dataset-room1_512_16/mav0/cam0/data Monocular-Inertial/TUM_TimeStamps/dataset-room1_512.txt Monocular-Inertial/TUM_IMU/dataset-room1_512.txt dataset-room1_512_monoi
  • RGB-D:
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ${
    
    dir}/rgbd_dataset_freiburg1_desk /home/sangfor/2023/bro_ws/rgbd_dataset_freiburg1_desk/associations.txt

4.2 Ausführung in einer ROS-Umgebung

Öffnen Sie zunächst 三个ein Terminal
und führen Sie es auf dem ersten Terminal aus roscore
. Führen Sie dann auf den verbleibenden beiden Terminals die folgenden Befehle aus:

  • Reines Monokular:
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw
  • Reines Fernglas:
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw
  • Monokulare Trägheitsnavigation:
rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/EuRoC.yaml
rosbag play MH_01_easy.bag
  • Binokulare Trägheitsnavigation:
rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml false
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu
  • RGB-D:
    Laden Sie zuerst den Datensatz herunter: rgbd_dataset_freiburg1_xyz.bag, fr1/xyz wählen Sie weitere Informationen aus, um die Bag-Datei zu finden, und laden Sie sie dann herunter.
    Die Download-Adresse ist die von Jianzheng angegebene Download-URL des Datensatzes TUM.
rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml
rosbag play rgbd_dataset_freiburg1_xyz.bag

Die Ausführung jedes Befehls verfügt über eine visuelle Schnittstelle, wie in der folgenden Abbildung dargestellt:
Fügen Sie hier eine Bildbeschreibung ein

Acho que você gosta

Origin blog.csdn.net/qq_44164791/article/details/132608190
Recomendado
Clasificación