ORB-SLAM3再現の詳細プロセス - 設定のインストールとROSとスクリプトの実行---Ubuntu20.04

ORB-SLAM3 コードのダウンロード アドレス: ORB-SLAM3 ソース コードのダウンロード

すべての操作は、次の URL のすべての操作が完了した後に実行されます: Ubuntu システムをインストールした後に最初に行うこと.
本文是总结的比较完善和直接的过程。
実際、操作全体でいくつかの問題が発生し、いくつかの要約も作成され、記事に記録されました。
ORB- SLAM3 の再現プロセス中に発生した問題と解決策のうち
最初にこの記事に焦点を当て、問題が発生した後で問題の解決策を参照することをお勧めします。

1. 必要な依存関係とパッケージをインストールする

ワンクリックで ROS をインストールした後は、Pangolin をインストールするだけで済み、その他の要件はすべてすでに揃っています。
次のコマンドを順番に実行するだけです。

#依赖项
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

こうしてダウンロードされたのがPangolin0.8です。ORB-SLAM3では正常に使用できます。

2. コードとファイルの内容を変更する

多くのライブラリのバージョンが異なるため、一部のコードを変更する必要があります。
ここで私の環境を宣言します。

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

2.1 CMakeLists.txt ファイルの変更

  1. /home/xiaoduan/project/source2/orb_slam3/CMakeLists.txt ファイルの変更
gedit /home/xiaoduan/project/source2/orb_slam3/CMakeLists.txt
#第33行Opencv的版本改为4
#第41行Eigen的版本改为3
  1. /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

変更点は次のとおりです。

  1. 33行目のOpencvのバージョンが4に変更されています。
  2. 41行目Eigenのバージョンを3に変更
  3. 49 行目、${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/Sophus を追加します

2.2 単眼可視化コードの修正

gedit /Examples/Monocular/mono_euroc.cc

内容を変更します:

83行中的false改为true

2.3 環境設定ファイルの変更

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

注: 2 番目のコマンドの ${ROS_PACKAGE_PATH} は、独自のファイルのパスです。

2.4 ソースコードの修正

ORB_SLAM3 の src の下に AR フォルダがあります。その中の一部のコンテンツにより、ros 実行可能ファイルがコンパイルされます。次の変更を加えます。

  1. 次の 2 つのヘッダー ファイルを追加します。
#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
  1. ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc の 151 行目を削除し、次の内容に置き換えます。
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. ROS/ORB_SLAM3/src/AR/ViewerAR.cc の 409 行目を削除し、次の行に置き換えます。
cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

  1. ROS/ORB_SLAM3/src/AR/ViewerAR.cc の 409 行目を削除し、次の行に置き換えます。
cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

3. ORB-SLAM3のコンパイル

3.1 ORB-SLAM3ライブラリのビルド

次のコマンドを順番に実行するだけです。

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

3.2 ROS ノードの生成

次のコマンドを実行します。

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

4. ORB-SLAM3の動作

4.1 非 ROS 環境での実行

4.1.1 EuROC データセット

超小型飛行機によって収集される視覚慣性データセットには、双眼カメラとIMUの同時測定データと姿勢の真の値が含まれます。
データ セットは MH_01_easy.zip からダウンロードする必要があります。ダウンロード アドレスは次のとおりです: MH_01_easy.zip ダウンロード アドレス
。データ セットを解凍し、MH01 という名前を付けます。
コマンドを実行します。
注:コマンド内の ${dir} は個人データのストレージ パスです。

  • 純粋な単眼鏡:
cd Examples
./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ${
    
    dir}/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
  • 純粋な双眼鏡:
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ${
    
    dir}/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo
  • 単眼慣性航法:
./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
  • 両眼慣性航法:
./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 データセット

使用されるカメラと IMU センサーはハードウェアで時刻同期されます。

提供される画像は高ダイナミック レンジで、事前に測光補正されています。フレーム レート 20Hz、解像度 1024 ピクセル * 1024 ピクセルで収集されます。3 軸 IMU サンプリング周波数は 200Hz で、加速度および角度を測定できます。速度。

データセット dataset-room1_512_16 および rgbd_dataset_freiburg1_desk をダウンロードする必要があります。ダウンロードアドレス: TUMデータセットダウンロード

  • 純粋な単眼鏡:
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
  • 純粋な双眼鏡:
./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
  • 単眼慣性航法:
./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
  • 両眼慣性航法:
./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 ROS環境での実行

まず、三个ターミナルを開いて
最初のターミナルで実行しroscore
、残りの 2 つのターミナルで次のコマンドを実行します。

  • 純粋な単眼鏡:
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw
  • 純粋な双眼鏡:
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
  • 単眼慣性航法:
rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/EuRoC.yaml
rosbag play MH_01_easy.bag
  • 両眼慣性航法:
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:
    まずデータ セットをダウンロードします: rgbd_dataset_freiburg1_xyz.bag、fr1/xyz の詳細情報を選択して Bag ファイルを見つけ、それをダウンロードします。
    ダウンロード アドレスは、Jianzheng から提供されたデータ セットのダウンロード URL ですTUM
rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml
rosbag play rgbd_dataset_freiburg1_xyz.bag

各コマンドの実行には、次の図に示すように、視覚的なインターフェイスが表示されます。
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_44164791/article/details/132608190