2. Direct RGB-D SLAM
- Direct RGB-D SLAM은 RGB-D 센서로부터 얻은 색상(RGB)과 깊이(D) 정보를 활용하여 실시간으로 로봇 또는 카메라의 위치 추정과 지도 생성을 수행하는 기법
- 이 알고리즘은 크게 프런트엔드와 백엔드로 구성되며, 각각의 모듈에서 오도메트리, 루프 클로저, 리로컬라이제이션, 그리고 번들 조정과 같은 기능을 수행
- 아래에서는 전체 과정에 대해 단계별로 자세히 설명
2.1. 프런트엔드 (Front-end)
- 프런트엔드는 센서로부터 데이터를 수집하고, 기본적인 처리와 초기 추정을 담당
2.1.1 데이터 수집
- RGB-D 이미지 획득: 카메라 또는 로봇에 장착된 RGB-D 센서를 통해 시간 t에서의 RGB 이미지 ( I_t )와 깊이 이미지 ( D_t )를 획득합니다.
2.1.2 오도메트리 (Odometry)
- 프레임간 변환 추정:
- 초기 추정: 이전 프레임 ( (I{t-1}, D{t-1}) )과 현재 프레임 ( (It, D_t) ) 사이의 상대적인 카메라 이동 ( \xi{t} )를 초기화
- 직접 방법(Direct Method):
- 에너지 함수 정의: 픽셀 집합 ( \Omega )에 대해 밝기 차이의 합을 최소화하는 에너지 함수를 설정
- 최적화: 에너지 함수를 ( \xi_t )에 대해 최적화하여 카메라의 움직임을 추정합니다.
- 결과 업데이트: 추정된 변환 ( \xi_t )를 적용하여 현재 위치를 업데이트합니다.
2.3 리로컬라이제이션 (Relocalization) [필요한 경우]
- 추적 실패 감지:
오도메트리에서 추적이 실패했을 경우 리로컬라이제이션을 수행
- 장면 인식:
- 특징 매칭:
데이터베이스에 저장된 키프레임과 현재 프레임 간의 특징을 매칭
- 위치 재추정:
- 매칭 결과를 기반으로 현재 카메라 위치를 재추정
2.2. 백엔드 (Back-end)
- 백엔드는 프런트엔드에서 얻은 정보를 사용하여 지도 구축과 전체적인 최적화를 수행
2.2.1 키프레임 관리
- 키프레임 선정:
- 특정 기준(예: 이동 거리, 회전 각도)에 따라 현재 프레임을 키프레임으로 저장
- 그래프 구성:
- 키프레임들 간의 관계를 나타내는 포즈 그래프를 생성
2.2.2 루프 클로저 (Loop Closure)
- 루프 감지:
- 장면 유사도 검사:
- 현재 키프레임과 이전 키프레임들 간의 유사도를 계산하여 루프 가능성을 탐색
- 상관관계 추정:
- 상대 변환 계산:
- 루프가 감지되면 해당 키프레임들 사이의 상대적인 포즈 변환을 계산
- 그래프 업데이트:
- 에지 추가:
- 포즈 그래프에 새로운 에지를 추가하여 루프 정보를 반영
2.2.3 번들 조정 (Bundle Adjustment)
- 최적화 문제 설정:
- 목표 함수 정의:
- 전체 포즈 그래프에 대해 재투영 오차를 최소화하는 목표 함수를 설정
- 최적화 수행:
- 비선형 최적화 알고리즘 적용:
- 가우스-뉴턴 또는 Levenberg-Marquardt 방법을 사용하여 포즈와 구조를 동시에 최적화
- 결과 적용:
- 포즈 업데이트: 최적화 결과를 각 키프레임의 포즈에 반영
- 지도 업데이트: 업데이트된 포즈를 기반으로 3D 지도를 갱신
2.1.3. 전체 과정 요약
- 데이터 수집: ( (I_t, D_t) ) 획득
- 오도메트리 추정: ( \xi_t ) 추정 및 위치 업데이트
- 키프레임 선정 및 그래프 업데이트
- 루프 클로저 감지 및 처리
- 번들 조정 수행
- 지도 및 위치 정보 제공
3. Feature-based RGB-D SLAM
- RGB-D 이미지에서 추출된 독특한 시각적 특징을 활용하여 카메라의 움직임을 추정하고 환경의 지도를 생성하는 기법
3.1. 프런트엔드
프런트엔드는 원시 센서 데이터를 처리하여 카메라의 움직임에 대한 초기 추정을 수행하고 로컬 지도를 구축합니다.
3.1.2 특징 추출
- 키포인트 감지: SIFT, SURF, ORB, FAST와 같은 알고리즘을 사용하여 ( I_t )에서 중요한 점(키포인트)을 감지
- 디스크립터 계산: 각 키포인트에 대해 지역 이미지 영역을 특징화하기 위해 BRIEF, FREAK 등의 디스크립터를 계산
3.1.3 특징 매칭
- 특징 연결: 현재 프레임 ( It )와 이전 프레임 ( I{t-1} ) 간의 디스크립터를 매칭
브루트 포스 매칭
또는 k-d 트리
와 같은 방법을 사용하여 효율적으로 매칭
- 이상치 제거:
Lowe의 비율 테스트
및 RANSAC
과 같은 기술을 사용하여 잘못된 매칭을 제거
3.1.4 오도메트리 추정
3.1.5 리로컬라이제이션
- 추적 실패 감지:
인라이어 매칭의 수를 모니터링하여 특정 임계값 아래로 떨어지면 추적이 실패했다고 판단
- 전역 특징 매칭:
현재 프레임의 특징을 키프레임 데이터베이스와 매칭
- 자세 회복:
가장 잘 매칭된 키프레임에 대해 카메라 자세를 추정
- 추적 재개:
- 회복된 자세를 사용하여 정상적인 작업을 다시 시작
3.2. 백엔드
- 백엔드는 프런트엔드에서 얻은 추정을 정제하고 맵의 전역 일관성을 보장
3.2.1 키프레임 선택
- 키프레임 결정 기준:
- 이동 거리, 회전 각도, 또는 장면의 중요한 변화에 기반하여 결정
- 키프레임 삽입:
- 기준을 충족하면 현재 프레임을 키프레임 데이터베이스에 추가
3.2.2 루프 클로저 탐지
- 후보 식별:
Bag-of-Words 모델과 같은 장소 인식 방법
을 사용하여 이전에 방문한 장소를 나타낼 수 있는 키프레임을 찾음
- 이 모델은
이미지의 특징(특정 패턴, 모양 등)을 추출
하고,
- 이를 일종의
"단어"로 변환하여 각 장소를 "문서"로 표현하는 방식
- 현재 키프레임에서 특징을 추출하여 BoW 표현으로 변환
- 이 표현을 -> 데이터베이스에 있는 이전 키프레임들과 비교하여
- 비슷한 키프레임(즉, 이전에 방문한 장소)을 찾아냅니다.
- 후보와의 특징 매칭:
- BoW 모델을 통해 잠재적인 루프 클로저 후보를 찾았다면, 현재 키프레임과 후보 키프레임 사이의 특징을 자세히 비교
- 여기서 특징은 SIFT, ORB, SURF와 같은 알고리즘을 통해 추출된 이미지의 특정 지점들
- 각 특징에 대한 디스크립터(descriptor)를 비교하여 일치하는 특징 쌍을 찾음
- 이때 RANSAC과 같은 기법을 사용하여 잘못된 매칭(이상치)을 제거하고 올바른 매칭만 남깁니다.
- 기히학적 검증:
- 매칭된 특징들이 실제로 같은 장소를 가리키는지 확인하기 위해 기하학적 검증을 수행
- 이를 위해 필수 행렬 계산(Essential Matrix Calculation)을 사용
- 필수 행렬은 두 카메라 뷰 사이의 관계를 나타내는 수학적 표현으로, 매칭된 특징들의 기하학적 관계를 검증
- 매칭된 특징들이 필수 행렬의 제약 조건을 만족하면 루프 클로저가 발생했다고 판단
- 제약 조건 추가(포즈 그래프 업데이트):
루프 클로저가 감지
되면 이를 자세 그래프(pose graph)
에 반영
- pose 그래프는
각 키프레임의 위치
와 키프레임들 사이의 상대적인 이동(Edge)
을 나타내는 그래프 구조
- 현재 키프레임과 루프 클로저 후보 키프레임 사이에
새로운 "에지(Edge)"를 추가
- 이 에지(Edge)는 두 키프레임 간의 상대적인 자세를 나타내며, 루프 클로저 제약 조건을 반영
3.2.3 번들 조정
- 번들 조정(Bundle Adjustment)은
키프레임과 3D 포인트의 정확한 위치를 최적화
하여 맵과 카메라의 위치를 더 정확하게 만드는 과정
- 포즈 그래프 구성:
- 이 포즈 그래프에는 오도메트리(키프레임 간의 상대적인 이동)와 루프 클로저(현재 위치와 이전 위치 간의 관계) 정보가 포함됩니다.
- 최적화 문제 공식화:
- 비선형 최적화:
- 이 최적화는 매우 복잡하고 비선형이기 때문에 일반적인 선형 최적화 방법으로는 해결할 수 없습니다.
- 대신, Levenberg-Marquardt 또는 가우스-뉴턴 같은 비선형 최적화 알고리즘을 사용합니다.
- 여기서 많이 사용되는 라이브러리가 g2o 또는 Ceres Solver입니다.
- 이 라이브러리들은 포즈 그래프를 입력받아 내부적으로 효율적인 수학적 방법을 통해 번들 조정을 수행
- 파라미터 업데이트:
- 최적화 과정이 끝나면 각
키프레임의 자세(위치와 방향)
와 3D 포인트의 위치
가 업데이트됩니다.
3.2.4 지도 업데이트
- 일관성 보장:
- 업데이트된 자세와 지도가 공간적 일관성을 유지하도록 합니다.
- 데이터 관리:
- 성능을 최적화하기 위해 중복 키프레임과 오래된 특징을 제거합니다.
3.3. 전체 알고리즘 워크플로우
4. Feature-Based RGB-D SLAM과 Direct RGB-D SLAM의 비교
4.1. Feature-Based RGB-D SLAM
장점:
-
조명 및 외관 변화에 대한 강건성:
- 특징 디스크립터는 크기, 회전 및 조명 변화에 불변하도록 설계되어 있습니다.
-
희소 데이터에 대한 효율성:
- 키포인트와 그 디스크립터만 처리하므로 밀집 방법에 비해 계산 부하가 줄어듭니다.
-
효과적인 루프 클로저 탐지:
- 대규모 환경에서도 신뢰할 수 있는 장소 인식을 위해 특징 디스크립터를 활용
-
성숙한 기술:
- 컴퓨터 비전에서 확립된 알고리즘을 사용하여 안정적이고 신뢰할 수 있는 성능을 제공
단점:
-
텍스처에 대한 의존성:
- 충분한 텍스처와 구별되는 특징이 있는 환경에서 신뢰할 수 있게 작동
-
특징 추출 오버헤드:
- 특징 감지 및 디스크립터 계산은 특히 고해상도 이미지의 경우 계산 집약적일 수 있습니다.
-
희소 맵핑:
- 결과적으로 희소한 3D 재구성을 제공하며, 자세한 맵이 필요한 응용 프로그램에는 적합하지 않을 수 있습니다.
4.2. Direct RGB-D SLAM
-
밀집 맵핑:
- 모든 픽셀의 강도 정보를 사용하여 환경의 상세한 맵을 생성
-
특징 의존성 없음:
특징 기반 방법이 어려움을 겪는 저텍스처 환경에서도 작동할 수 있음
-
지역적 움직임 추정의 높은 정확도:
- 사용 가능한 모든 이미지 데이터를 활용하여 정밀한 자세 추정을 제공
단점:
-
조명 변화에 대한 민감도:
밝기 불변성을 가정하며 조명 조건이 변할 때 성능이 저하
-
계산 집약성:
모든 픽셀 데이터를 처리하기 때문에 상당한 계산 자원이 필요하며 제한된 하드웨어의 실시간 응용에 적합하지 않을 수 있습니다.
-
초기화에 대한 민감성:
좋은 초기 자세 추정이 필요하며, 프레임 간 큰 움직임이 있는 경우 어려움을 겪을 수 있습니다.
4.3. 요약
-
Feature-Based RGB-D SLAM은 텍스처가 풍부한 환경에 적합하며, 조명 변화에 대한 강건성과 효율적인 루프 클로저 탐지를 제공합니다. 이는 계산 자원이 제한된 대규모 맵핑에 적합합니다.
-
Direct RGB-D SLAM은 구별되는 특징이 부족한 환경에서 뛰어나며 상세하고 밀집된 맵을 제공합니다. 그러나 더 많은 계산 성능이 필요하며 조명 변화에 민감합니다.
두 가지 중 선택:
-
응용 요구사항:
- Feature-Based: 조명 및 외관 변화에 대한 강건성이 필요하고 계산 효율성이 중요한 경우 적합합니다.
- Direct: 가상 현실이나 정밀한 검사 작업과 같이 환경의 상세한 재구성이 필요한 시나리오에 적합합니다.
-
환경 조건:
- Feature-Based: 텍스처가 있는 환경에서 더 잘 작동합니다.
- Direct: 저텍스처 환경을 더 효과적으로 처리합니다.
보완적 접근 방식:
- 실제로, 두 접근 방식을 결합한 하이브리드 방법은 실시간으로 다양한 조건에 적응하여 각각의 강점을 활용할 수 있습니다.