BTREE-C802/3DLine-SLAM 환경 설정 및 라이브러리 설치 가이드
요약
본 가이드는 BTREE-C802/3DLine-SLAM 프로젝트를 위한 환경 설정과 필수 라이브러리 설치 방법을 안내합니다. CMake, Pangolin, Boost, Eigen 등 핵심 종속성들을 단계별로 다운로드하고 컴파일하여 시스템에 통합하는 과정을 상세히 다루고 있습니다.
핵심 포인트
- CMake와 Pangolin을 포함한 기본 개발 환경 구축이 필요합니다.
- Boost 라이브러리는 b2 툴셋을 이용해 직접 컴파일 및 설치해야 합니다.
- Eigen3는 헤더 파일 경로를 수동으로 조정하여 시스템에 통합하는 과정이 중요합니다.
- ORB-SLAM2와 같은 SLAM 시스템은 특정 버전의 OpenCV, Eigen 등 종속성을 요구합니다.
환경 요구 사항 라이브러리 또는 소프트웨어
기본(Basic):
CMake (Makefile 생성용)
Pangolin
Boost
...
선택적(Optional, 하지만 권장!):
CUDA (선택 사항)
OpenMP (선택 사항)
Ceres-Solver (선택 사항, UNIX 시스템에서는 공유 라이브러리 형태로 빌드해야 함!)
...
이 코드는 다음 버전의 Ubuntu 14.04 LTS에서 테스트되었습니다:
Boost==1.55.0
Eigen==3.2.0
OpenCV=={2.4.10, 3.0}
...
1: Pangolin 설치:
1. 설치 파일 다운로드:
git clone https://github.com/stevenlovegrove/Pangolin.git
2. 종속성(Required Dependencies) 설치:
C++11 (컴파일러가 이 기능을 지원해야 함)
Glew 의존성 설치:
sudo apt-get install libglew-dev
...
2: Boost 설치:
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz
tar zxvf boost_1_64_0.tar.gz
cd boost_1_64_0.tar.gz
...
컴파일:
./b2 toolset=gcc
설치:
./b2 install --prefix=/usr ##--prefix=/usr는 Boost의 설치 디렉터리를 지정하는 용도입니다. 이 매개변수를 사용하지 않으면 기본적으로 헤더 파일은 /usr/local/include/boost 디렉터리에, 라이브러리 파일은 /usr/local/lib/ 디렉터리에 위치합니다. 여기서는 설치 디렉터리를 --prefix=/usr로 지정했기 때문에 Boost가 시스템 헤더 및 라이브러리 디렉터리에 직접 설치되어 환경 변수 설정을 생략할 수 있습니다.
마지막으로, 설치 후 바로 boost 라이브러리를 사용하여 컴파일하려면 다음 명령을 실행해야 합니다:
참고 설치: https://blog.csdn.net/u011641865/article/details/73498533
3: Eigen3 설치:
1. 설치:
sudo apt-get install libeigen3-dev
2. 조정 (기본 설치 경로는 다음과 같습니다):
/usr/include/eigen3
cd /usr/include/eigen3
$Series:/usr/include/eigen3 디렉터리에서 ls
...
3. Eigen 폴더를 /usr/include 아래에 배치하기 위해 복사 명령을 실행해야 합니다:
sudo cp Eigen/ .. -R
4. 테스트용 파일 작성 (vi myeigen.c):
#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
...
5. 컴파일.
g++ myeigen.c -o myeigen
6. 실행.
./myeigen
7. 결과.
3 -1
2.5 1.5
ORB-SLAM2
저자: Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel 및 Dorian Galvez-Lopez (DBoW2)
13 Jan 2017: OpenCV 3 및 Eigen 3.3 지원 시작.
22 Dec 2016: AR 데모 추가 (섹션 7 참조).
ORB-SLAM2는 단안(Monocular), 스테레오(Stereo), 그리고 RGB-D 카메라를 위한 실시간 SLAM 라이브러리로, 카메라 궤적과 희소한 3D 재구성(스테레오 및 RGB-D의 경우 실제 스케일로)을 계산합니다. 이 라이브러리는 루프 감지(loop detection)와 실시간 카메라 재위치화(relocalization)가 가능합니다. 저희는 KITTI 데이터셋에서 스테레오 또는 단안으로, TUM 데이터셋에서 RGB-D 또는 단안으로, 그리고 EuRoC 데이터셋에서 스테레오 또는 단안으로 SLAM 시스템을 실행하는 예제를 제공합니다. 또한 실시간 단안, 스테레오 또는 RGB-D 스트림을 처리하기 위한 ROS 노드도 제공합니다. 이 라이브러리는 ROS 없이 컴파일할 수 있습니다. ORB-SLAM2는 GUI를 통해 SLAM 모드와 위치 추정(Localization) 모드 간 전환 기능을 제공하며, 자세한 내용은 본 문서의 섹션 9를 참조하십시오.
<a href="https://www.youtube.com/embed/ufvPS5wJAx0" target="_blank"><img src="http://img.youtube.com/vi/ufvPS5wJAx0/0.jpg"
alt="ORB-SLAM2" width="240" height="180" border="10" /></a>
<a href="https://www.youtube.com/embed/T-9PYCKhDLM" target="_blank"><img src="http://img.youtube.com/vi/T-9PYCKhDLM/0.jpg"
alt="ORB-SLAM2" width="240" height="180" border="10" /></a>
<a href="https://www.youtube.com/embed/kPwy8yA4CKM" target="_blank"><img src="http://img.youtube.com/vi/kPwy8yA4CKM/0.jpg"
alt="ORB-SLAM2" width="240" height="180" border="10" /></a>
관련 논문:
[단안] Raúl Mur-Artal, J. M. M. Montiel and Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System. IEEE Transactions on Robotics, vol. 31, no. 5, pp. 1147-1163, 2015. (2015 IEEE Transactions on Robotics Best Paper Award). PDF.
[스테레오 및 RGB-D] Raúl Mur-Artal and Juan D. Tardós. ORB-SLAM2: 단안, 스테레오 및 RGB-D 카메라를 위한 오픈 소스 SLAM 시스템. IEEE Transactions on Robotics, vol. 33, no. 5, pp. 1255-1262, 2017. PDF.
[DBoW2 장소 인식기] Dorian Gálvez-López and Juan D. Tardós. 이미지 시퀀스에서 빠른 장소 인식을 위한 이진 단어의 가방(Bags of Binary Words). IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1188-1197, 2012. PDF
1. 라이선스
ORB-SLAM2는 GPLv3 라이선스 하에 공개되었습니다. 모든 코드/라이브러리 종속성(및 관련 라이선스) 목록은 Dependencies.md를 참조하십시오.
상업적 목적으로 ORB-SLAM2의 비공개 소스 버전을 사용하려면 저자들에게 문의하십시오: orbslam (at) unizar (dot) es.
학술 연구에서 ORB-SLAM2 (단안)를 사용하는 경우, 다음을 인용하십시오:
@article{murTRO2015,
title={{ORB-SLAM}: 범용적이고 정확한 단안 SLAM 시스템},
author={Mur-Artal, Ra'ul, Montiel, J. M. M. and Tard'os, Juan D.},
journal={IEEE Transactions on Robotics},
volume={31},
number={5},
pages={1147--1163},
doi = {10.1109/TRO.2015.2463671},
year={2015}
}
학술 연구에서 ORB-SLAM2 (스테레오 또는 RGB-D)를 사용하는 경우, 다음을 인용하십시오:
@article{murORB2,
title={{ORB-SLAM2}: 단안, 스테레오 및 RGB-D 카메라를 위한 오픈 소스 SLAM 시스템},
author={Mur-Artal, Ra'ul and Tard'os, Juan D.},
journal={IEEE Transactions on Robotics},
volume={33},
number={5},
pages={1255--1262},
doi = {10.1109/TRO.2017.2705103},
year={2017}
}
2. 필수 조건
저희는 Ubuntu 12.04, 14.04 및 16.04에서 라이브러리를 테스트했지만, 다른 플랫폼에서도 쉽게 컴파일할 수 있을 것입니다. 강력한 컴퓨터(예: i7)를 사용하면 실시간 성능을 보장하고 더 안정적이고 정확한 결과를 얻을 수 있습니다.
C++11 또는 C++0x 컴파일러
저희는 C++11의 새로운 스레드 및 chrono 기능을 사용합니다.
Pangolin
시각화(visualization)와 사용자 인터페이스를 위해 Pangolin을 사용합니다. 다운로드 및 설치 지침은 다음에서 확인할 수 있습니다: https://github.com/stevenlovegrove/Pangolin.
OpenCV
이미지와 특징(features)을 조작하기 위해 OpenCV를 사용합니다. 다운로드 및 설치 지침은 다음에서 확인할 수 있습니다: http://opencv.org. 최소 2.4.3 버전이 필요합니다. OpenCV 2.4.11 및 OpenCV 3.2로 테스트되었습니다.
Eigen3
g2o에서 필수입니다(아래 참조). 다운로드 및 설치 지침은 다음에서 확인할 수 있습니다: http://eigen.tuxfamily.org. 최소 3.1.0 버전이 필요합니다.
DBoW2 및 g2o (Thirdparty 폴더에 포함)
장소 인식(place recognition)을 수행하기 위해 DBoW2 라이브러리의 수정된 버전을 사용하고, 비선형 최적화(non-linear optimizations)를 수행하기 위해 g2o 라이브러리를 사용합니다. 두 수정된 라이브러리(BSD 방식)는 Thirdparty 폴더에 포함되어 있습니다.
ROS (선택 사항)
ROS를 사용하여 단안(monocular), 스테레오 또는 RGB-D 카메라의 실시간 입력을 처리하는 몇 가지 예제를 제공합니다. 이 예제들을 빌드하는 것은 선택 사항입니다. 만약 ROS를 사용하고 싶다면, Hydro 버전 이상이 필요합니다.
3. ORB-SLAM2 라이브러리 및 예제 빌드
저장소 클론:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
Thirdparty 라이브러리와 ORB-SLAM2를 빌드하기 위해 build.sh 스크립트를 제공합니다. 필요한 모든 종속성(dependency)이 설치되었는지 확인하십시오 (섹션 2 참조). 다음을 실행하십시오:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
이 명령어는 lib 폴더에 libORB_SLAM2.so를, 그리고 Examples 폴더에 실행 파일인 mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc, stereo_euroc를 생성합니다.
4. 단안(Monocular) 예제
TUM 데이터셋
-
http://vision.in.tum.de/data/datasets/rgbd-dataset/download 에서 시퀀스를 다운로드하고 압축을 해제합니다.
-
다음 명령어를 실행합니다.
freiburg1,freiburg2,freiburg3시퀀스에 대해 각각 TUMX.yaml 파일을 TUM1.yaml, TUM2.yaml 또는 TUM3.yaml로 변경합니다.PATH_TO_SEQUENCE_FOLDER를 압축 해제된 시퀀스 폴더로 변경합니다.
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
KITTI 데이터셋
-
http://www.cvlibs.net/datasets/kitti/eval_odometry.php 에서 데이터셋(흑백 이미지)을 다운로드합니다.
-
다음 명령어를 실행합니다. 시퀀스 0부터 2, 3, 그리고 4부터 12까지에 대해 각각
KITTIX.yaml파일을 KITTI00-02.yaml, KITTI03.yaml 또는 KITTI04-12.yaml로 변경합니다.PATH_TO_DATASET_FOLDER를 압축 해제된 데이터셋 폴더로 변경합니다.SEQUENCE_NUMBER는 00, 01, 02, ..., 11로 변경합니다.
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
EuRoC 데이터셋
-
http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets 에서 시퀀스(ASL 형식)를 다운로드합니다.
-
V1 및 V2 시퀀스의 경우 첫 번째 명령어를, MH 시퀀스의 경우 두 번째 명령어를 실행합니다. 원하는 시퀀스에 따라 PATH_TO_SEQUENCE_FOLDER와 SEQUENCE를 변경합니다.
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE_FOLDER/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
5. 스테레오(Stereo) 예제
KITTI 데이터셋
-
http://www.cvlibs.net/datasets/kitti/eval_odometry.php에서 데이터셋(흑백 이미지)을 다운로드합니다.
-
다음 명령어를 실행합니다. 시퀀스 0부터 2, 3, 그리고 4부터 12까지 각각에 대해
KITTIX.yaml을 KITTI00-02.yaml, KITTI03.yaml 또는 KITTI04-12.yaml로 변경합니다.PATH_TO_DATASET_FOLDER를 압축되지 않은 데이터셋 폴더로 변경합니다.SEQUENCE_NUMBER를 00, 01, 02, ..., 11로 변경합니다.
./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
EuRoC 데이터셋
-
http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets에서 시퀀스(ASL 형식)를 다운로드합니다.
-
V1 및 V2 시퀀스의 경우 첫 번째 명령어를, MH 시퀀스의 경우 두 번째 명령어를 실행합니다.
PATH_TO_SEQUENCE_FOLDER와SEQUENCE는 실행하려는 시퀀스에 맞게 변경합니다.
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data PATH_TO_SEQUENCE/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data PATH_TO_SEQUENCE/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
6. RGB-D 예제
TUM 데이터셋
-
http://vision.in.tum.de/data/datasets/rgbd-dataset/download에서 시퀀스를 다운로드하고 압축을 해제합니다.
-
파이썬 스크립트 associate.py를 사용하여 RGB 이미지와 깊이 이미지를 연결합니다. 일부 시퀀스에 대한 연결 정보는 *Examples/RGB-D/associations/*에 이미 제공되어 있습니다. 다음 명령어를 실행하여 자체 연결 파일을 생성할 수 있습니다:
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt
- 다음 명령을 실행합니다.
TUMX.yaml은 각각 freiburg1, freiburg2, freiburg3 시퀀스에 대해 TUM1.yaml, TUM2.yaml 또는 TUM3.yaml로 변경하십시오.PATH_TO_SEQUENCE_FOLDER는 압축되지 않은 시퀀스 폴더로 변경하십시오.ASSOCIATIONS_FILE은 해당 연관성 파일의 경로로 변경하십시오.
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
7. ROS 예제 (ROS Examples)
모노(mono), 모노AR(monoAR), 스테레오(stereo) 및 RGB-D용 노드 빌드하기
*Examples/ROS/ORB_SLAM2를 포함하는 경로를 ROS_PACKAGE_PATH 환경 변수에 추가합니다. .bashrc 파일을 열고 끝에 다음 줄을 추가하십시오. PATH는 ORB_SLAM2를 클론한 폴더로 대체하십시오:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
build_ros.sh스크립트를 실행합니다:
chmod +x build_ros.sh
./build_ros.sh
모노컬러 노드 실행하기 (Running Monocular Node)
토픽 /camera/image_raw에서 오는 모노컬러 입력을 위해 ORB_SLAM2/Mono 노드를 실행합니다. 어휘 파일(vocabulary file)과 설정 파일(settings file)을 제공해야 합니다. 위쪽의 모노컬러 예제를 참조하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기