hi.log
로그인
hi.log
로그인
orb slam
David8
·
2023년 1월 17일
팔로우
0
orb slam
0
자율주행(Ex. slam ...)
목록 보기
3/10
ORB SLAM(Oriented FAST and Rotated BRIEF)
ORB SLAM
정의
feature-based slam
ORB 특징점 검출방식 사용
FAST 알고리즘, BRIEF 알고리즘, 해리스 코너 알고리즘 결합한 알고리즘
장점
3개의 thread를 활용하여 속도가 빠름 --> 많은 연구들이 orb-slam 기반으로 이루어지고 있음
실시간 데이터 처리 용이
ORB slam 구조
3개의 thread를 활용 --> 속도 빠름
프로세스(process): 단순히 실행 중인 프로그램
스레드(thread): 프로세스 내에서 실제로 작업을 수행하는 주체
모든 프로세스에는 한 개 이상의 스레드 존재하여 작업을 수행
멀티스레드 프로세스: 두개 이상의 스레드를 가지는 프로세스
3 Thread
Trackig thread
지도에서 현재 위치 찾음 --> 기존의 지도정보와 ORB Feature를 활용하여 현재 위치 추정
local mapping
각각의 keyFrame 정보를 지도에 mapping(2d point --> 3d point)
loop closing
영상정보를 통해 지도 만들다보면 drift 현상 발생(위치 어긋남)
Slam으로 만들어진 지도 정보를 통해 현재 위치 교정
3 thread
Tracking Thread
tracking thread
tracking
정의
비디오 영상에서 특정 대상의 위치 변화 추적
비디오는 일련의 영상 프레임으로 구성 --> 인접한 영상 프레임 사이에는 유사성이 존재 ==> 이러한 유사성을 이용하여 특정 대상의 위치 변화 추적
orb slam에서 tracking
영상에서 특징점을 추출하여 key frame을 생성하고, 카메라의 위치를 추정하는 과정
orb-slam에서는 물체 추적보다는 카메라 위치를 추정
물체는 가만히 있고 카메라(ex. 자동차)가 움직임
key frame: 유의미한 특징점을 많이 가지는 frame(지도를 만드는데 중요한 정보를 담고 있는 frame)
과정
orb 추출
정의
input 영상 전처리 과정
orb feature descriptor 이용하여 영상 내 특징점 검출
Map Initialization
정의
이전 Frame과 현재 Frame간의 Feature Matching을 통해 3D Point 생성
왼쪽 사진 초록색 부분이 한 Frame의 Feature들이고, 오른쪽 빨간 점들이 3D Map Point들임
pose estimation(or relocalisation)
정의
카메라의 위치 추정하는 단계
상황별 접근 방법
tracking이 잘되는 경우
이전 frame을 통한 위치 추정
constant velocity motion model 이용하여 카메라 위치 추정(등속도로 움직인다는 가정) --> pose optimization(위치 추정)
tracking이 lost된 경우(global relocalizaion)
back of words를 활용하여 현재 영상과 가장 유사한 key frame 찾음 --> tracking 회복
찾은 key frame을 바탕으로 solvePnP를 이용하여 카메라 위치 추정 --> pose optimization
track local map
사전에 생성한 지도 정보를 투영 --> 더 정확한 카메라 pose 추정
new keyframe decision
특정 4가지 조건 모두 충족시 key frame으로 결정
특징점이 어느정도 이상 되어야함
직전 frame과 유사하다면 현재 frame을 key frame으로 지정할 이유가 없음 --> 이전 frame과 유사성 비교
Local Mapping Thread
local mapping thread
정의
중복되는 key frame과 tracking 후에 생성된 map point들을 최적화
새로 들어오는 key frame을 아래의 순서로 처리하는 과정
과정
keyframe 삽입
tracking thread에서 새로운 key frame이 생성되면 해당 bag of words 계산
이를 바탕으로 새로운 key frame과 원본 영상 프레임의 map point 비교
covisibility graph를 update함
covisibility graph
정의
두 대 이상의 시점에서 겹치는 부분의 개수를 표현한 것
특징
1. 각 카메라의 영사 정보를 사용하고 상관관계를 파악하여 실제와 최대한 비슷하게 지도를 만들 수 있음
recent map point 선별
tracking 과정 후 생긴 map point와 새로 삽입된 key frame을 비교하여 bad point 제거
low visibility, not trackable 점
new points 생성
앞에서 수정된 covisibility graph를 이용하여 현재 프레임과 연결되어 있는 프레임들을 찾음
찾은 프레임과 현재 프레임의 map point쌍을 이용하여 triangulate함
triangulate 과정 후 생긴 프레임의 map point 생성
triangulation(삼각 측량법): 두 이미지 평면 사이의 기하학적 관계가 주어지고, 두 이미지 평면상의 매칭쌍 p1, p2가 주어지면 이로 부터 원래의 3d 공간좌표 p를 결정할 수 있다는 것을 의미
Map point들 중 현재 프레임과 covisibility graph상에서 연결되어 있는 map point들만 project 시킴
그 후, covisibility graph를 다시 update함
local ba
map point 개수를 최적화 하는 과정
현재 key frame과 covisibility 관계에 있는 key frame을 찾음
각 프레임들을 비교하여 같은 곳을 표시하는 map point 연결하고, 그러지 못한 map point는 outliers로 판단하여 제거
local keyframe 선별
다음과 같은 제약을 두어 key frame 개수 제한함
다른 3개의 프레임에서 map point가 90% 이상 겹치는 key frame들은 버림
key frame이 너무 많으면 relocalization과 BA의 효과가 적어짐
Loop Closing Thread
loop closing thread
정의
이전에 방문한 적 있는 공간인지를 확인 --> 방문했던 공간이라고 판단되면 이전에 생성된 지도와 통합
특징
에러가 누적되면 사전의 방문된 공간이 다른 위치로 나옴
place recognition을 통해 이전의 방문했던 공간인지 확인
Place recognition
bag of words 방법 사용
종류
visual vocabulary
많은 이미지들로부터 feature 추출 후, descriotor 모으고 descriptor들을 몇개씩 묶음 --> clustering 한 가운데 값을 vocabulary라고 함
recognition database
keyframe 생성 시, visual vocabulary를 사용해 keyframe에 대한 이미지 특징을 표현한 data를 만들어 저장
loop detection
현재 keyframe에서 나온 visual vocabulary를 후보군 안에 모든 data와 비교하여 진행(recognition database를 후보군으로)
동일한 장소라고 판단되는 일정한 기준을 만족하면 지도 통합
Map data
정의
orb slam으로 부터 생성되는 데이터 중 하나
1. orb slam으로 부터 2가지 데이터가 생성 됨
1. place recognition
2. map data
종류
map point
정의
frame에서 검출된 feature들을 3d로 지도에 mapping한 point
각 map point(pi)가 가지는 world 좌표계 상의 pi의 위치
key frames
지도 생성시 특징이 될만한 위치를 나타내는 frame(유의미한 feature 다수 보유)
covisibilty graph
정의
key frame간의 map point 공유관계를 나타낸 graph(spanning tree)
David8
팔로우
이전 포스트
파이썬 기본
다음 포스트
특징점 추출
0개의 댓글
댓글 작성