ORB-SLAM2/3 accelerated on GPU

jaeung·2023년 9월 14일
0

reading & summary

목록 보기
8/28

https://git.hipert.unimore.it/fmuzzini/cuda-accelerated-orb-slam/-/tree/main/ORB-SLAM3

ORB-SLAM3 is the first real-time SLAM library able to perform Visual, Visual-Inertial and Multi-Map SLAM with monocular, stereo and RGB-D cameras, using pin-hole and fisheye lens models.

We provide examples to run ORB-SLAM3 in the EuRoC dataset using stereo or monocular, with or without IMU, and in the TUM-VI dataset using fisheye stereo or monocular, with or without IMU. Videos of some example executions can be found at ORB-SLAM3 channel.

This software is based on ORB-SLAM2 developed by Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel and Dorian Galvez-Lopez (DBoW2).

ORB-SLAM3은 핀홀 및 어안 렌즈 모델을 사용하여 단안, 스테레오 및 RGB-D 카메라로 시각적, 시각적 관성 및 다중 맵 SLAM을 수행할 수 있는 최초의 실시간 SLAM 라이브러리입니다.

우리는 IMU 유무에 관계없이 스테레오 또는 단안을 사용하는 EuRoC 데이터 세트와 IMU 유무에 관계없이 어안 스테레오 또는 단안을 사용하는 TUM-VI 데이터 세트에서 ORB-SLAM3을 실행하는 예를 제공합니다. 일부 실행 예시 동영상은 ORB-SLAM3 채널에서 확인할 수 있습니다.

이 소프트웨어는 Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel 및 Dorian Galvez-Lopez(DBoW2)가 개발한 ORB-SLAM2를 기반으로 합니다.

Pangolin, Required at leat 3.0. Tested with OpenCV 3.2.0 and 4.4.0. , Eigen3,

DBoW2 and g2o (Included in Thirdparty folder)
수정된 두 라이브러리(BSD)는 모두 Thirdparty 폴더에 포함되어 있습니다.

ROS(선택사항)
ROS를 사용하여 단안, 단안 관성, 스테레오, 스테레오 관성 또는 RGB-D 카메라의 입력을 처리하는 몇 가지 예를 제공합니다. 이러한 예제를 구축하는 것은 선택 사항입니다. 이는 Ubuntu 18.04에서 ROS Melodic으로 테스트되었습니다.

We provide a script build.sh to build the Thirdparty libraries and ORB-SLAM3. Please make sure you have installed all required dependencies (see section 2).
Execute:
cd ORB_SLAM3
chmod +x build.sh
./build.sh

This will create libORB_SLAM3.so at lib folder and the executables in Examples folder.

우리는 타사 라이브러리와 ORB-SLAM3을 빌드하기 위한 스크립트 build.sh를 제공합니다. 필요한 모든 종속성을 설치했는지 확인하십시오(섹션 2 참조).
실행:
CD ORB_SLAM3
chmod +x build.sh
./build.sh

lib 폴더에 libORB_SLAM3.so가 생성되고 예제 폴더에 실행 파일이 생성됩니다.

EuroC 예시
EuRoC 데이터 세트는 두 개의 핀홀 카메라와 관성 센서로 기록되었습니다. 모든 센서 구성에서 EuRoC 시퀀스를 시작하는 예제 스크립트를 제공합니다.
http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets에서 시퀀스(ASL 형식)를 다운로드합니다.
프로젝트 루트에서 "euroc_examples.sh" 스크립트를 엽니다. 데이터 세트가 압축 해제된 디렉터리를 가리키도록 pathDatasetEuroc 변수를 변경합니다.
다음 스크립트를 실행하여 모든 센서 구성으로 모든 시퀀스를 처리합니다.

평가
EuRoC는 IMU 본문 참조의 각 시퀀스에 대한 Ground Truth를 제공합니다. 순수 시각적 실행은 왼쪽 카메라 중심의 궤적을 보고하므로 "평가" 폴더에 기준 진실을 왼쪽 카메라 참조로 변환하는 기능을 제공합니다. 시각적 관성 궤적은 데이터세트의 실제값을 사용합니다.
다음 스크립트를 실행하여 시퀀스를 처리하고 RMS ATE를 계산합니다.

./euroc_eval_examples

  1. TUM-VI 예시
    TUM-VI 데이터 세트는 두 대의 어안 카메라와 관성 센서로 기록되었습니다.

https://vision.in.tum.de/data/datasets/visual-inertial-dataset에서 시퀀스를 다운로드하고 압축을 풉니다.

프로젝트 루트에서 "tum_vi_examples.sh" 스크립트를 엽니다. 데이터세트가 압축 해제된 디렉터리를 가리키도록 pathDatasetTUM_VI 변수를 변경합니다.

다음 스크립트를 실행하여 모든 센서 구성으로 모든 시퀀스를 처리합니다.

./tum_vi_examples

평가
TUM-VI에서는 모든 시퀀스가 시작되고 끝나는 공간에서만 지상 진실을 사용할 수 있습니다. 결과적으로 오류는 시퀀스 끝의 드리프트를 측정합니다.
다음 스크립트를 실행하여 시퀀스를 처리하고 RMS ATE를 계산합니다.

./tum_vi_eval_examples

  1. ROS 예시

모노, 모노 관성, 스테레오, 스테레오 관성 및 RGB-D용 노드 구축
ROS Melodic 및 우분투 18.04에서 테스트되었습니다.

ROS_PACKAGE_PATH 환경 변수에 예제/ROS/ORB_SLAM3을 포함한 경로를 추가합니다. .bashrc 파일을 엽니다.

gedit ~/.bashrc

그리고 마지막에 다음 줄을 추가하세요. PATH를 ORB_SLAM3을 복제한 폴더로 바꿉니다.

내보내기 ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/예제/ROS

build_ros.sh 스크립트를 실행합니다:

chmod +x build_ros.sh
./build_ros.sh

단안 노드 실행
/camera/image_raw 항목의 단안 입력의 경우 노드 ORB_SLAM3/Mono를 실행합니다. 어휘 파일과 설정 파일을 제공해야 합니다. 위의 단안 예시를 참조하세요.

rosrun ORB_SLAM3 모노 PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

단안 관성 노드 실행
주제 /camera/image_raw의 단안 입력 및 주제 /imu의 관성 입력의 경우 노드 ORB_SLAM3/Mono_Inertial을 실행하십시오. 선택적 세 번째 인수를 true로 설정하면 CLAHE 평준화가 이미지에 적용됩니다(주로 TUM-VI 데이터 세트의 경우).

rosrun ORB_SLAM3 모노 PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE [EQUALIZATION]

스테레오 노드 실행
주제 /camera/left/image_raw 및 /camera/right/image_raw의 스테레오 입력을 위해 노드 ORB_SLAM3/Stereo를 실행합니다. 어휘 파일과 설정 파일을 제공해야 합니다. 핀홀 카메라 모델의 경우 정류 행렬을 제공하면(Examples/Stereo/EuRoC.yaml 예제 참조) 노드는 이미지를 온라인으로 다시 표시합니다. 그렇지 않으면 이미지를 사전 수정해야 합니다. FishEye 카메라 모델의 경우 시스템이 원본 이미지로 작동하므로 수정이 필요하지 않습니다.

rosrun ORB_SLAM3 스테레오 PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION

스테레오 관성 노드 실행
/camera/left/image_raw 및 /camera/right/image_raw 항목의 스테레오 입력과 /imu 항목의 관성 입력의 경우 노드 ORB_SLAM3/Stereo_Inertial을 실행합니다. 필요한 경우 스테레오 사례와 유사한 방식으로 정류 행렬을 포함하여 어휘 파일과 설정 파일을 제공해야 합니다.

rosrun ORB_SLAM3 Stereo_Inertial PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION [EQUALIZATION]

RGB_D 노드 실행
/camera/rgb/image_raw 및 /camera/length_registered/image_raw 항목의 RGB-D 입력에 대해 노드 ORB_SLAM3/RGBD를 실행합니다. 어휘 파일과 설정 파일을 제공해야 합니다. 위의 RGB-D 예를 참조하세요.

rosrun ORB_SLAM3 RGBD PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

ROS 실행 예시: EuRoC 데이터세트(http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets)에서 rosbag(예: V1_02_medium.bag)를 다운로드합니다. 터미널에서 3개의 탭을 열고 스테레오 관성 구성을 위해 각 탭에서 다음 명령을 실행합니다.

로스코어

rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt 예제/Stereo-Inertial/EuRoC.yaml true

rosbag 재생 --pause V1_02_medium.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu

ORB-SLAM3에 어휘가 로드되면 rosbag 탭에서 스페이스바를 누르세요.
비고: TUM-VI 데이터 세트의 rosbag의 경우 청크 크기로 인해 일부 재생 문제가 나타날 수 있습니다. 한 가지 가능한 해결책은 기본 청크 크기로 리백하는 것입니다. 예를 들면 다음과 같습니다.

rosrun rosbag fastrebag.py 데이터세트-room1_512_16.bag 데이터세트-room1_512_16_small_chunks.bag

  1. 실행시간 분석
    include\Config.h의 플래그는 시간 측정을 활성화합니다. 터미널에 표시되고 텍스트 파일(ExecTimeMean.txt)에 저장되는 한 실행의 시간 통계를 얻으려면 #define REGISTER_TIMES 줄의 주석 처리를 제거해야 합니다.

  2. 교정
    Calibration_Tutorial.pdf에서 시각적 관성 교정에 대한 튜토리얼과 유효한 구성 파일의 내용에 대한 자세한 설명을 찾을 수 있습니다.

profile
Done is better than perfect.

0개의 댓글