본문 바로가기
-----ETC-----/SLAM

[SLAM] 7일차: Visual SLAM 이론과 실습

by cogito21_cpp 2024. 6. 4.
반응형

Visual SLAM 이론과 실습

이번 단계에서는 Visual SLAM의 기본 이론을 배우고, 이를 적용한 간단한 실습을 진행하겠습니다.

1. Visual SLAM 이론

Visual SLAM (V-SLAM)은 카메라를 이용하여 로봇의 위치를 추정하고 지도를 생성하는 SLAM 방식입니다. V-SLAM은 주로 Monocular SLAM (단일 카메라), Stereo SLAM (이중 카메라), RGB-D SLAM (깊이 카메라)을 포함합니다.

 

Visual SLAM의 주요 단계:

  1. 특징 추출 (Feature Extraction): 이미지에서 특징점(Keypoints)을 추출
  2. 특징 매칭 (Feature Matching): 다른 이미지의 특징점과 매칭
  3. 모션 추정 (Motion Estimation): 카메라의 움직임을 추정
  4. 지도 생성 (Map Construction): 추정된 움직임을 기반으로 3D 지도를 생성

주요 알고리즘:

  • ORB-SLAM: ORB (Oriented FAST and Rotated BRIEF) 특징점을 사용하는 SLAM 알고리즘
  • LSD-SLAM: 직접적인 방법으로 깊이 지도를 생성하는 SLAM 알고리즘
  • DSO (Direct Sparse Odometry): 직접적인 방법으로 희소 광학 흐름을 사용하는 SLAM 알고리즘

실습: ORB-SLAM2 설치 및 실행

1. 필요한 라이브러리 설치

brew install cmake eigen3 boost opencv3

 

2. ORB-SLAM2 설치

먼저, ORB-SLAM2를 다운로드하고 빌드합니다.

# ORB-SLAM2 다운로드
git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB_SLAM2

# Thirdparty 라이브러리 다운로드 및 빌드
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

cd ../../g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

# ORB-SLAM2 빌드
cd ../../../
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

 

3.ROS 패키지 생성 및 빌드

ROS 패키지를 생성하고 ORB-SLAM2를 포함시킵니다.

cd ~/catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ~/catkin_ws
catkin_make

 

 

4. ROS 환경 설정

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bash_profile
source ~/.bash_profile

 

5. ORB-SLAM2 실행

ROS 노드를 사용하여 ORB-SLAM2를 실행합니다. 예제 데이터셋을 이용하여 테스트해봅니다.

rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE PATH_TO_SEQUENCE_FOLDER

 

여기서 PATH_TO_VOCABULARY는 ORB-SLAM2의 단어장 파일의 경로, PATH_TO_SETTINGS_FILE은 설정 파일의 경로, PATH_TO_SEQUENCE_FOLDER는 테스트할 데이터셋의 경로입니다.

 

 

3. ORB-SLAM2를 이용한 Visual SLAM 테스트

1. 단어장 파일 다운로드

cd ~/ORB_SLAM2
wget https://github.com/raulmur/ORB_SLAM2/blob/master/Vocabulary/ORBvoc.txt.tar.gz
tar -xzvf ORBvoc.txt.tar.gz

 

2. 설정 파일 작성

Settings.yaml 파일을 작성하여 카메라 설정 및 SLAM 파라미터를 설정합니다.
%YAML:1.0
# 카메라 파라미터
Camera.fx: 535.4
Camera.fy: 539.2
Camera.cx: 320.1
Camera.cy: 247.6
Camera.k1: 0.0
Camera.k2: 0.0
Camera.p1: 0.0
Camera.p2: 0.0
Camera.width: 640
Camera.height: 480
 

 

3. 실행

rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Settings.yaml PATH_TO_SEQUENCE_FOLDER

 

Visual SLAM의 기본 이론과 ORB-SLAM2의 간단한 실행을 통해 SLAM의 시각적 접근 방식을 이해할 수 있습니다. 이제 더 복잡한 예제를 통해 SLAM을 심화 학습할 준비가 되었습니다.

 

 

반응형