이 문서는 중국어 원서인 “입문 Visual SLAM 이론에서 연습까지 14 강(视觉SLAM十四讲 从理论到实践)” 책의 원저자로부터 한글 번역 허가를 받고 구글 번역기를 이용하여 작성된 문서입니다. 본 문서는 아래의 Contribution을 특징으로 합니다.
- 중국어 전공 서적을 구글 번역기를 이용해 한글로 초벌 번역했습니다.
- 초벌 번역 후 매끄럽지 않은 문장은 문맥에 맞게 수정되었습니다.
- 문서 내용 중 참고할만한 웹문서를 코멘트로 추가했습니다.
- SLAM 연구에서 주로 사용되는 용어는 한글로 번역된 용어보다 주로 사용되는 영어로 된 용어 그대로 표시하였습니다.
그럼에도 불구하고 부정확하거나 매끄럽지 않은 부분이 있을수 있습니다. 그런 부분은 코멘트로 제안해주시면 반영하도록 노력하겠습니다. 또한 읽으시다가 잘 이해가 가지 않는 부분도 코멘트로 질문해주시면 답변해드리도록 하겠습니다.
번역 참가자:
- 신동원 (광주과학기술원 박사과정)
- 김선호 (VIRNECT 선임연구원)
- 조원재 (일본국립농업기술혁신공학센터 연구원)
- 장형기 (Imperial College London 석사)
- 박준영 (광주과학기술원 석사과정)
2018년 10월 1일 신동원 드림
주요 목표
- 고전적인 SLAM 구현을 이해합니다.
- 실험을 통해 다양한 SLAM 체계의 유사점과 차이점을 비교하십시오.
- SLAM의 향후 방향을 탐구하십시오.
SLAM 시스템의 각 모듈에 대한 이전 작동 원리는 다년간의 연구 결과입니다. 현재 이 이론적인 프레임 워크 외에도 많은 우수한 오픈 소스 SLAM 솔루션이 축적되어 있습니다. 그러나, 구현의 대부분은 복잡하고 초보자에게 적합하지 않기 때문에, 우리는 책의 끝 부분에 소개했습니다. 나는 독자가 이전 내용을 읽음으로써 기본 원칙을 이해할 수 있어야한다고 생각한다.
이 강좌는 책의 요약이며, 기존의 SLAM 프로그램이 어떻게 수행되는지 독자가 알아볼 것입니다. 특히 우리는 오픈 소스 구현을 제공하는 사람들에게 초점을 맞추고 있습니다. SLAM 연구 분야에서는 오픈 소스 솔루션을 쉽게 볼 수 없습니다. 논문에서 소개된 이론은 종종 내용의 20 %만을 차지하고 나머지 80%는 코드에 쓰여지는데 이는 논문에서 언급하지 않았습니다. 후발 연구원에게 더 높은 출발점을 제공하는 것은 SLAM 업계 전체의 급속한 발전을 이끌어 낸 이러한 연구원들의 사심없는 헌신입니다. SLAM을 시작하기 전에 유사한 프로그램에 대해 깊이 이해하고 자체 연구를 수행해야합니다.
이 강의의 전반부에서는 독자가 현재의 Visual SLAM 프로그램을 방문하고 그 역사적 지위와 강점과 약점을 검토하게됩니다. 표 14-1은 몇 가지 일반적인 오픈소스 SLAM 솔루션을 나열하고 독자는 연구 및 실험을 위해 관심있는 솔루션을 선택할 수 있습니다. 공간 제한으로 인해, 우리는 포괄적이지는 않은 몇 가지 대표 프로그램만을 선택했습니다. 하반기에 우리는 가능한 미래 개발 방향을 모색하고 현재의 연구 결과를 발표 할 것입니다.
표 14-1 일반적인 오픈 소스 SLAM 솔루션
Visual SLAM에 대해 말하면서, 많은 연구자들은 A.I.Davison의 MonoSLAM 연구를 처음으로 생각했습니다[2,125]. Davison 교수는 Visual SLAM 연구 분야의 선구자입니다. 그는 2007 년에 제안한 MonoSLAM이라는 최초의 단안용 SLAM 시스템을 개발했습니다[2]. MonoSLAM은 확장 된 칼만 필터링을 백 엔드로 사용하여 front end에서 매우 sparse한 특징점을 추적합니다. 초기 SLAM에서 EKF가 지배적인 위치에 있기 때문에 MonoSLAM은 EKF를 기반으로 카메라의 현재 상태와 모든 랜드 마크 점을 상태량으로 평균 및 공분산을 업데이트합니다.
그림 14-1은 MonoSLAM의 작동을 보여줍니다. 단안 카메라가 이미지에서 매우 sparse한 특징점을 추적한다는 것을 알 수 있습니다. EKF에서 각 특징점의 위치는 가우시안 분포를 따르므로 타원체 형태로 그 평균과 불확도를 표현할 수 있습니다. 그림의 오른쪽 절반에는 공간에 분포 된 작은 공이 있습니다. 특정 방향에서 더 길게 나타날수록 그 방향에서의 위치가 불확실 해집니다. 특징점이 수렴하면 아주 긴 타원체 (카메라의 Z 방향에서 매우 불확실 함)에서 그것을 볼 수 있어야하고 결국 작은 점이되어야한다고 상상할 수 있습니다.
그림 14-1 MonoSLAM의 런타임 스크린 샷. 왼쪽 : 이미지의 특징 지점 표현을 추적하고, 오른쪽 : 3D 공간의 특징 지점을 나타냅니다.
이 접근법은 오늘날 많은 단점을 갖고 있는 것으로 보이지만 그 전에는 시각적인 SLAM 시스템이 기본적으로 온라인으로 실행될 수 없었기 때문에 로봇이 데이터를 수집하고 오프라인으로 배치하기 위해 카메라를 들고 있었기 때문에 이 시점은 이미 획기적인 사건이었습니다. 컴퓨터 성능이 향상되고 이미지를 sparse 방식으로 처리하면서 SLAM 시스템이 실시간으로 동작하게 되었습니다. 현대적인 관점에서, MonoSLAM은 좁은 응용 시나리오, 제한된 수의 랜드마크를 가지고 있으며, sparse 특징 포인트는 쉽게 잃어 버릴 수 있으며 개발이 멈추었으며 고급 이론 및 프로그래밍 도구로 대체되었습니다. 그러나 이것은 우리의 전임자들의 작업에 대한 우리의 이해와 존중을 저해하지 않습니다.
2007 년 Klein은 PTAM (Parallel Tracking and Mapping)을 제안 하였는데, 이는 Visual SLAM의 개발에서 중요한 사건이기도하다. PTAM의 중요성은 다음 두 가지 점에있다.
-
PTAM은 추적 및 매핑 프로세스의 병렬화를 제안하고 구현합니다. 이제 추적 부분이 이미지 데이터에 실시간으로 응답해야 하지만 반면에 지도의 최적화를 실시간으로 계산할 필요가 없다는 것을 알게되었습니다. Backend optimization는 백그라운드에서 천천히 수행 할 수 있으며 필요한 경우 스레드 동기화를 수행 할 수 있습니다. 이것은 Visual SLAM의 frontend와 backend사이의 첫 번째 차이점이며 많은 Visual SLAM 시스템의 기반구조가 되었습니다.
-
PTAM은 backend로 전통적인 필터를 사용하는 대신 비선형 최적화를 처음으로 사용합니다. 키 프레임 메커니즘을 도입했습니다. 각 이미지를 세부적으로 처리하는 대신 몇 개의 주요 이미지를 결합하고 궤적과 맵을 최적화합니다. 초기 SLAM의 대부분은 파티클 필터뿐만 아니라 EKF 필터 또는 그 변형을 사용했으며, PTAM 이후 비주얼 SLAM 연구는 점진적으로 비선형 최적화가 지배하는 backend로 전환되었습니다. 사람들은 이전에 Backend optimization의 희박성을 깨닫지 못했기 때문에 최적화 backend가 이러한 대규모 데이터를 실시간으로 처리 할 수 없는 것으로 간주되어왔으나 PTAM은 그 해결책을 제시했습니다. PTAM은 또한 멋진 AR 효과를 보여주는 증강 현실 소프트웨어입니다 (그림 14-2 참조). PTAM에 의해 추정 된 카메라 포즈를 기반으로 실제 장면과 같이 보이는 가상 평면에 가상 물체를 배치 할 수 있습니다.
그림 14-2 PTAM 데모 스크린 샷 가상 평면상의 가상 객체는 물론 실시간 위치 추정 및 매핑을 제공 할 수 있습니다.
그러나 현대적인 관점에서 PTAM은 AR과 결합 된 초기 SLAM 작업 중 하나입니다. 많은 초기 작업과 마찬가지로 작은 장면, 쉬운 추적 등 명백한 결함이 있습니다. 이들은 이후 시나리오에서 개정되었습니다.
역사에 몇 가지 시나리오를 소개 한 후 일부 최신 SLAM 시스템을 살펴 보겠습니다. ORB-SLAM은 PTAM 후계자 [173] 중 잘 알려진 하나입니다 (그림 14-3참조). 그것은 현대 SLAM 시스템에서 가장 완벽하고 사용하기 쉬운 시스템 중 하나로 2015 년에 제안되었습니다. 이전 작업과 비교하여 ORB-SLAM은 다음과 같은 뚜렷한 장점을 가지고 있습니다.
-
단안, 양안, RGB-D의 세 가지 모드를 지원합니다. 이를 통해 ORB-SLAM에서 어떤 센서를 사용하든 테스트 할 수 있습니다. 다용도 성이 뛰어납니다.
-
전체 시스템은 Visual odometry 및 Loop closure detection의 ORB 사전을 포함하여 ORB 기능을 중심으로 계산됩니다. 이는 ORB 피쳐가 현재 컴퓨팅 플랫폼의 탁월한 효율성과 정확성 사이의 타협임을 반영합니다. ORB는 SIFT 또는 SURF만큼 시간이 많이 걸리지 않으며 CPU에서 실시간으로 계산할 수 있으며 Harris 모서리와 같은 간단한 모서리 기능에 비해 회전 및 스케일 불변성이 뛰어납니다. 또한 ORB는 Loop closure detection 및 large scale 움직임 중에 relocalization을 수행할 수 있는 디스크립터를 제공합니다.
-
ORB의 Loop closure detection가 가장 중요합니다. 탁월한 Loop closure detection 알고리즘을 통해 ORB-SLAM은 누적 오류를 효과적으로 방지하고 손실 후 신속하게 검색 할 수 있습니다. 많은 기존 SLAM 시스템이 완벽하지 않습니다. 이를 수행하기 위해 ORB-SLAM은 실행하기 전에 큰 ORB 사전 파일을 로드해야 합니다 [1].
-
ORB-SLAM은 혁신적으로 세 가지 스레드를 사용하여 SLAM을 완성합니다: 실시간으로 특징 지점의 Tracking 스레드, local bundle Adjustment의 co-visibility graph 및 global pose graph의 루프 감지 및 최적화 스레드. 이 중 Tracking 스레드는 각 새 이미지에 대한 ORB 피쳐를 추출하고 가장 가까운 키 프레임과 비교하여 특징 점의 위치를 계산하고 대략적으로 카메라 포즈를 추정합니다. Local map 스레드는 로컬 공간에서 특징점과 카메라 포즈를 포함하는 Bundle Adjustment문제를 해결합니다. 이 스레드는 더 미세한 카메라 포즈와 피쳐 포인트 공간 위치를 해결합니다. 그러나 첫 번째 두 스레드 만이 더 나은 시각적 주행 거리를 완료했습니다. 세 번째 스레드는 누적 된 오류를 제거하기 위해 전역 맵과 키 프레임에서 Loop closure detection을 수행합니다. 전역지도에 너무 많은지도 지점이 있으므로이 스레드의 최적화에는 지도 지점이 포함되지 않지만 카메라 포즈로 구성된 포즈만 자세를 취합니다. PTAM의 듀얼 스레드 아키텍처에 이어 ORB-SLAM의 3 스레드 아키텍처는 매우 우수한 추적 및 매핑 효과를 달성하여 궤적과 맵의 글로벌 일관성을 보장합니다. 이 구조는 이후의 연구자들에 의해서도 인정되고 채택 될 것입니다.
그림 14-3 ORB-SLAM 실행의 스크린 샷. 왼쪽은 이미지이고 추적 된 피쳐 포인트이며, 오른쪽은 카메라 트랙과 모델링 된 피쳐 포인트 맵입니다. 아래는 상징적인 3 스레드 구조입니다.
- ORB-SLAM은 피쳐 포인트를 중심으로 최적화되었습니다. 예를 들어, OpenCV의 특징 추출에 기반하여 특징점의 균일 한 분포가 보장됩니다. 포즈 최적화에서 루프 최적화 방법을 4 번 사용하면 보다 정확한 일치를 얻을 수 있고 키 프레임 선택 전략은 PTAM보다 더 편안합니다. 이러한 사소한 개선으로 인해 ORB-SLAM이 다른 솔루션보다 훨씬 강력 해졌습니다. 어려운 시나리오의 경우에도 제대로 교정되지 않은 내부 참조 인 ORB-SLAM이 원활하게 작동합니다.
물론 ORB-SLAM에는 몇 가지 단점이 있습니다. 첫째, 전체 SLAM 시스템은 계산을 위해 특징점을 사용하므로 각 이미지에 대한 ORB 기능을 계산해야하므로 시간이 많이 소요됩니다.
ORB-SLAM의 3 스레드 구조는 또한 CPU에 더 많은 부담을 주며 현재 PC 아키텍처의 CPU에서 실시간 작업만 수행 할 수 있으며 임베디드 장치로 포팅하기는 어렵습니다. 두 번째로, ORB-SLAM은 Sparse SLAM이다. 맵을 저장하고 읽은 후에는 다시 위치 추정하는 기능이 없다. 구성 부분의 분석에 따르면 sparse 피쳐맵은 위치 추정 요구 사항 만 충족시킬 수 있지만 탐색, 장애물 회피, 상호 작용 및 기타 많은 기능을 제공 할 수는 없습니다. 그러나 ORB-SLAM 만 사용하여 위치 추정 문제를 처리하면 너무 무거워 보입니다. 반대로 다른 솔루션은보다 가벼운 포지셔닝을 제공하므로 로우 엔드 프로세서에서 SLAM을 실행하거나 CPU가 다른 트랜잭션을 처리 할 수있는 리소스를 가질 수 있습니다.
LSD-SLAM (Large Scale Direct monocular SLAM)은 2014 년 J. Engel 등이 제안한 SLAM의 연구이다 [57,59]. ORB-SLAM의 특징점과 유사하게 LSD-SLAM은 SLAM에서 단안 Direct method의 성공적인 적용을 나타냅니다. LSD-SLAM의 핵심적인 기여는 semi-dense monocular SLAM에 Direct method을 적용하는 것입니다. 피쳐 포인트의 계산이 필요하지 않을뿐만 아니라 semi-dense 맵도 생성됩니다. 여기에서 semi-dense 맵은 주로 그라디언트가 중요한 것으로 추정되는 픽셀 위치를 나타냅니다. 주요 이점은 다음과 같습니다.
-
LSD-SLAM의 Direct method는 픽셀을 위한 방법입니다. 저자는 픽셀 그래디언트와 Direct method 사이의 관계 및 고밀도 재구성시 픽셀 기울기와 epipolar line 방향 간의 각도 관계를 창의적으로 제안했습니다. 이것들은이 책의 8 번째와 13번째 강의 모두에서 논의되었습니다. 그러나 LSD-SLAM은 단안 영상에 대한 semi-dense 추적이며 구현 원리는 이 책의 루틴보다 복잡합니다.
-
LSD-SLAM은 이전 시나리오에서는 거의 볼 수 없었던 CPU의 semi-dense 장면 재구성을 구현합니다. 피처 기반의 방법은 있지만, 조밀하게 재구성 된 솔루션은 주로 RGBD 센서를 사용하거나 GPU를 사용하여 밀도가 높은지도를 만듭니다. TUM 컴퓨터 비전 그룹 (TUM Computer Vision Group)은 수년 간의 direct method 연구를 기반으로 이 CPU에 대해 실시간 semi-dense SLAM을 구현했습니다.
-
앞서 말했듯이, LSD-SLAM의 semi-dense 추적은 추적의 실시간 및 안정성을 보장하는 몇 가지 미묘한 수단을 사용합니다. 예를 들어, LSD-SLAM은 단일 픽셀도 이미지 블록도 사용하지 않고 SSD를 측정하기 위해 epipolar line에서 등거리로 5 포인트를 취합니다. 깊이 추정에서 LSD-SLAM은 먼저 깊이를 임의의 숫자로 초기화합니다. 평가 후, 깊이 평균은 스케일을 조정하기 위해 정규화되며 깊이 불확실성을 측정 할 때 삼각 측량의 기하학적 관계뿐만 아니라 epipolar line과 깊이 사이의 각도도 고려되며 조도 불확도가 요약됩니다. 키 프레임 사이의 제약 조건은 유사한 변환 그룹과 해당 Lie 대수를 사용하여 눈금을 명시 적으로 표현합니다. Backend optimization에서는 다양한 눈금 장면을 고려할 수 있으므로 눈금 표류 현상이 줄어 듭니다.
그림 14-4는 LSD의 작동을 보여줍니다. 우리는 이 semi-dense 지도가 sparse 지도와 dense 지도 사이의 한 형태 인 것을 볼 수 있습니다. semi-dense 맵은 그레이 스케일 이미지의 중요한 그라디언트 부분을 모델링합니다.이 그라디언트는 맵에 표시됩니다.이 부분의 상당 부분은 물체의 가장자리 또는 표면의 텍스처 부분입니다. LSD-SLAM은 키 프레임을 추적하여 키 프레임을 생성하고 마지막으로 그러한 맵을 얻도록 최적화합니다. sparse지도보다 많은 정보를 갖고있는 것처럼 보이지만 dense 맵과 같은 완전한 표면은 없습니다 (dense 맵은 일반적으로 CPU만으로는 실시간이 가능하지 않다고 생각합니다).
그림 14-4 LSD-SLAM 실행 그림. 위쪽 부분은 추정 된 궤적과지도이고, 아래쪽 부분은 모델링 된 이미지의 일부입니다 (즉, 픽셀 그라디언트가 더 좋은 부분).
LSD-SLAM은 추적을 위해 Direct method을 사용하기 때문에 Direct method (특징이없는 영역에 민감하지 않음)의 이점을 가지며 Direct method의 단점을 상속합니다. 예를 들어, LSD-SLAM은 카메라 내부 파라미터 및 노출에 매우 민감하며 카메라가 빠르게 움직이는 경우 쉽게 손실됩니다. 또한, 루프백 검출부는 직접 방식에 의한 루프백 검출 방법이 없기 때문에 LSD-SLAM은 루프백 검출을위한 특징점 방식에 의존해야하며, 특징점의 계산을 완전히 없애지는 못한다.
SVO는 Semi-direct Visual Odoemtry [56]의 약어입니다. 이것은 포스터 (Forster)에 의해 2014 년에 제안 된 Direct method에 기반한 Visual odometry입니다. 저자의 이름에 따르면 "semi-direct" 방법이라고 해야 하지만, 이 책의 개념적 틀에 따르면 "sparse direct method"이라고 부르는 것이 낫습니다. 원본 텍스트에서의 semi-direct 의미는 특징점과 Direct method의 조합을 의미합니다. SVO는 몇 가지 주요 지점 (코너 점, 디스크립터가 없음)을 추적 한 다음 Direct method과 마찬가지로 이러한 주요 지점 주변의 정보를 기반으로 카메라 동작을 추정합니다. 그 위치 (그림 14-4와 같이). 구현시 SVO는 블록 E의 핵심 포인트를 중심으로 4 x 4 크기의 작은 블록을 사용하여 카메라 자체의 동작을 추정합니다.
다른 솔루션과 비교하여 SVO의 가장 큰 장점은 매우 빠릅니다. sparse Direct method으로 인해 디스크립터를 계산하기 위해 열심히 일할 필요가 없으며 밀도가 높고 semi-dense만큼 많은 정보를 처리하지 않아도 되므로 PC 플랫폼에서 로우 엔드 컴퓨팅 플랫폼에서도 실시간 성능을 얻을 수 있습니다. 초당 100 프레임 이상의 속도에 도달 할 수 있습니다. 후속 SVO 2.0에서 속도는 초당 놀라운 400 프레임에 도달했습니다. 따라서 SVO는 드론 (drones), 핸드 헬드 AR / VR 장치의 배치와 같이 컴퓨팅 플랫폼이 제한적인 응용 프로그램에 이상적입니다. 무인 항공기는 SVO를 개발할 수있는 대상 응용 프로그램 플랫폼이기도합니다.
SVO의 또 다른 혁신은 깊이 필터의 개념과 Gauss Mixture Model에 기반한 깊이 필터의 유도입니다. 이것은 이 책의 제 13강에서 언급되었지만 원칙이 더 복잡하기 때문에 자세히 설명하지 않았습니다. SVO는 키 포인트의 위치 추정에 이 필터를 사용하고 피쳐 포인트의 위치를 더 잘 계산하기 위해 Inverse depth를 매개 변수화 된 형식으로 사용합니다.
SVO 코드의 오픈 소스 버전은 읽기 쉬우므로 독자가 첫 번째 SLAM 인스턴스로 분석하는 것이 이상적입니다. 그러나 SVO의 오픈 소스 버전에는 몇 가지 문제가 있습니다:
-
대상 응용 플랫폼은 무인 항공기의 오버 헤드 카메라이므로 시야의 물체는 주로 지면에 있으며 카메라의 움직임은 주로 수평과 위, 아래입니다. SVO의 많은 세부 사항은 이 응용 프로그램 주위에 설계되어 헤드업 카메라의 성능이 좋지 않습니다. 예를 들어, SVO는 전통적인 공장 대신 단조로운 매트릭스를 분해하는 방법이나 단안의 초기화에서 5개의 매트릭스를 사용합니다. 단점은 특징점이 평면에 있다고 가정합니다. 이 가정은 탑 뷰 카메라에 해당하지만 일반적으로 헤드업 카메라에는 적용되지 않으며 초기화 오류가 발생할 수 있습니다. 또 다른 예로 SVO는 회전 수를 고려하지 않고 키 프레임 선택에서 새 프레임을 결정하기위한 전략으로 패닝 M을 사용합니다. 무인 항공기 구성에도 효과적이지만 헤드 업 카메라에서는 쉽게 손실됩니다. 따라서 독자가 헤드 업 카메라에서 SVO를 사용하려면 직접 수정해야합니다.
-
속도와 경량을 위해 SVO는 Backend optimization 및 Loop closure detection 부분을 포기했으며 기본적으로 매핑 기능이 없습니다. 즉, SVO 포즈 추정에는 누적 오류가 있으며 tracking 실패 후 재배치(re-localization)하기가 쉽지 않습니다 (Loop closure detection에 디스크립터가 사용되지 않으므로). 그래서 우리는 완전한 SLAM이 아니라 VO라고 부릅니다.
앞에서는 몇 개의 단안 SLAM 기법을 소개 했습니다. 이제 RGB-D 센서의 SLAM 기법을 살펴 보자. 단안 및 쌍안과 비교했을 때, RGB-D SLAM의 원리는 (반드시 구현되는 것은 아니지만) 훨씬 간단하며 CPU에 실시간으로 dense 지도를 만드는 것이 가능합니다.
RTAB-MAP (Realtime Appearance-Based Mapping) [107]은 RGB-D SLAM에서 상대적으로 고전적인 솔루션입니다. 그것은 RGB-D SLAM에 있어야 하는 모든 것을 구현합니다 : 특징 기반 Visual odometry, bag-of-visual-word 기반 Loop closure detection, backend 포즈 맵 최적화, 포인트 클라우드 및 그리드 맵. 따라서 RTAB-MAP은 완전한 RGB-D SLAM 솔루션을 제공합니다. 현재 Google은 ROS에서 직접 바이너리 프로그램을 가져올 수 있으며, Google 애플리케이션 탱고에서도 App 사용을 얻을 수 있습니다 (그림 14-6 참조).
그림 14-6 Google Project Tango에서 실행중인 RTAB-MAP 샘플.
RTAB-MAP은 Kinect, Xtion 등과 같은 일반적인 RGB-D 및 양안 센서를 지원하며 실시간 위치 추정 및 매핑 기능을 제공합니다. 그러나 높은 수준의 통합으로 인해 다른 개발자가 2차 개발을 수행하기가 어렵기 때문에 RTAB-MAP은 연구보다 SLAM 애플리케이션에 더 적합합니다.
이 오픈 소스 솔루션 외에도 독자는 DVO-SLAM [127], RGBD-SLAM-V2 [88], DSO [58]와 같은 openslam.org와 같은 사이트에서 많은 다른 연구를 찾을 수 있습니다. KinectFusion 관련 작업 등 시대의 발전에 따라보다 새롭고 우수한 오픈 소스 SLAM 작품이 사람들의 시야에 나타날 것이며 여기서는 하나씩 소개하지 않을 것입니다.
필자는 기존 솔루션을 보았으며 이제 향후 방향을 논의 할 것입니다. 일반적으로 SLAM의 향후 개발 동향은 두 가지 주요 범주로 나뉩니다. 첫째, 경량화, 소형화, SLAM이 내장형 또는 휴대 전화와 같은 소형 장치에서 원활하게 작동 할 수 있도록 개발한 다음 응용 프로그램을 기본 기능으로 간주합니다. 결국 대부분의 경우 SLAM은 스포츠, 내비게이션, 교육 및 엔터테인먼트와 같은 로봇, AR / VR 장치의 기능을 구현하는 것이지만 SLAM은 상위 애플리케이션에 대해 자체 자세 추정을 제공합니다. 이러한 응용 프로그램에서는 SLAM이 모든 컴퓨팅 리소스를 차지하지 않기를 원하므로 SLAM의 소형화 및 중량 감소에 대한 강한 요구가 있습니다. 한편, 고성능 컴퓨팅 장치를 사용하여 정확한 3D 재구성 및 장면 이해를 달성합니다. 이러한 어플리케이션에서 우리의 목표는 컴퓨팅 리소스 및 장비의 이식성에 대한 많은 제한없이 장면을 완벽하게 재구성하는 것입니다. GPU를 사용할 수 있기 때문에 이 방향과 딥러닝도 결합되어 있습니다.
우선, 우리는 강력한 애플리케이션 배경을 가진 방향에 대해 이야기하고자 합니다 : 시각 관성 항법(visual-inertial) 융합 SLAM 솔루션. 실제 로봇, 하드웨어 장치는 대개 하나의 센서 유형만 포함하며 대개 여러 개의 센서가 결합되어 있습니다. 학술 연구자들은 하나의 카메라로 Visual SLAM을 해결하는 Big Clean Problems를 좋아합니다. 그러나 업계의 친구들은 알고리즘을보다 실용적으로 만드는데 집중하고 있으며 복잡하고 사소한 시나리오를 다루어야합니다. 이 애플리케이션 컨텍스트에서 시각적 관성 항법 융합을 사용하는 SLAM은 뜨거운 주제가되었습니다.
관성 센서 (IMU)는 센서 몸체의 각속도와 가속도를 측정 할 수 있으며 카메라 센서와 상당히 상보적인 것으로 간주되며 융합 후 더 완전한 SLAM 시스템을 구현할 수있는 잠재력이 있습니다 [128]. 왜 그런것일까요?
-
IMU가 각속도와 가속도를 측정 할 수 있지만 이 양에 상당한 편차 (드리프트)가있어 두 통합에서 얻은 자세 데이터를 매우 신뢰할 수 없습니다. 예를 들어, 우리는 IMU를 테이블 위에 올려 놓고 그것을 움직이면 IMU를 읽음으로써 얻은 위치가 100,000 마일에서 벗어날 것입니다. 그러나 단기간의 빠른 이동을 위해 IMU는 좋은 추정치를 제공 할 수 있습니다. 이것은 카메라의 약점입니다. 너무 빠르게 움직이는 경우 카메라 (롤링 셔터)에 모션 블러가 발생하거나 두 프레임 사이의 겹침이 너무 작아서 기능에 맞지 않으므로 순수한 Visual SLAM은 빠른 모션을 매우 두려워합니다. IMU를 사용하면 카메라 데이터가 유효하지 않은 기간에도 순수 포즈 SLAM에서는 불가능한 좋은 자세 추정을 유지할 수 있습니다.
-
IMU와 비교하여 카메라 데이터는 전혀 drift하지 않습니다. 카메라가 제 위치에 고정되어 있으면 (고정 장면에서) Visual SLAM의 자세 추정도 고정됩니다. 따라서, 카메라 데이터는 IMU 판독 값의 드리프트를 효과적으로 추정하고 보정하여 슬로우 모션 후의 포즈 추정이 여전히 유효합니다.
-
이미지가 바뀌면 본질적으로 카메라 자체가 이동했는지 외부 조건이 바뀌었는지 알 수 없으므로 순수한 Visual SLAM은 동적인 장애물을 처리하기 어렵습니다. IMU는 자체 모션 정보를 느낄 수 있으며 동적 객체의 영향을 어느 정도 완화 할 수 있습니다.
결과적으로, IMU는 빠른 모션을위한 더 나은 솔루션을 제공하며, 카메라는 슬로우 모션 하에서 IMU 드리프트 문제를 해결할 수 있습니다.
그림 14-7 점점 더 많은 카메라가 IMU 장치를 통합하기 시작했습니다.
물론 그것이 이론이나 실습이든간에 매우 좋게 들리지만, VIO (Visual Inertial Odometry)는 매우 복잡합니다. 그들은 매우 복잡합니다. 복잡성은 주로 IMU가 가속도 및 각속도를 측정한다는 사실로부터 유도되므로 기구학적 계산을 도입 할 필요가 있습니다. 전면 VIO 프레임 워크는 크게 Loosely Coupled와 Tightly Coupled의 두 가지 범주로 나뉩니다. 느슨한 커플 링은 IMU와 카메라가 각각 자체 모션 추정을 수행 한 다음 포즈 추정 결과를 융합하는 것을 의미합니다. 밀접한 결합은 IMU의 상태와 카메라의 상태를 결합하고, 운동 방정식과 관측 방정식을 함께 구성한 다음 상태 추정을 수행하는 것을 말하며 이는 이전에 도입 한 이론과 매우 유사합니다. 우리는 tight coupling theory가 필터링과 최적화를 기반으로 두 방향으로 나뉠 것이라고 예측할 수 있습니다. 필터링의 관점에서 전통적인 EKF [130]와 개선 된 MSCKF (Multi-State Constraint KF) [131]는 특정 결과를 얻었으며 연구자들은 EKF에 대한 심도있는 토론 (예 : 관측 가능성 최적화) 해당 프로그램도 있습니다. IMU의 데이터 빈도가 매우 높기 때문에 VIO에서 최적화 방법이 순수한 Visual SLAM을 지배했지만, 상태를 최적화하는 데 필요한 계산이 훨씬 크기 때문에 여전히 현재 상태입니다. 필터링과 최적화의 단계는 공존한다. 깊이 들어가면 너무 복잡하기 때문에 여기서는 대략적인 소개만 할 수 있습니다.
VIO는 SLAM의 향후 소형화 및 비용 절감에 매우 효과적인 방향을 제시합니다. 또한 sparse Direct method와 결합하여 로우 엔드 하드웨어에서 SLAM 또는 VO 효과를 기대할 수 있습니다. 이는 매우 유망한 방법입니다.
SLAM의 또 다른 주요 방향은 딥러닝 기술의 결합입니다. 지금까지 SLAM의 솔루션은 특징점 또는 픽셀의 수준에 있습니다. 우리는 이러한 특징점이나 픽셀이 무엇을 얻는 지 전혀 알지 못합니다. 이로 인해 컴퓨터 비전에서의 SLAM은 우리 인간의 관습과 유사하지 않습니다. 적어도 우리는 스스로 특징 점을 보지 않으며 특징 점을 기준으로 이동 방향을 판단하지 않습니다. 우리가 보는 것은 왼쪽 눈과 오른쪽 눈으로 거리를 판단한 다음 이미지의 움직임에 따라 카메라의 움직임을 추정하는 객체입니다.
오래 전에 연구자들은 객체 정보를 SLAM에 통합하려고했습니다. 예를 들어, [135-138]에서 객체 인식은 Visual SLAM과 결합되어 객체 레이블이있는지도를 구성합니다. 반면에, 목적 함수와 BA 나 최적화 측면의 제약에 태그 정보를 도입함으로써, 특징점의 위치와 태그 정보를 최적화 할 수있다 [139]. 이러한 작업은 모두 의미론적 SLAM이라고 할 수 있습니다. 요약하면, SLAM과 의미의 결합에는 두 가지 주요 측면이 있습니다 [9].
의미론은 SLAM을 도와줍니다. 전통적인 객체 인식, 분할 알고리즘은 종종 하나의 그림만 고려하고, SLAM에서는 모바일 카메라를 사용합니다. 모션의 그림을 대상 레이블로 가져 오면 레이블이 있는 지도를 얻을 수 있습니다. 또한, 객체 정보는 루프 탐지 및 BA 최적화를위한 더 많은 조건을 가져올 수 있습니다.
SLAM은 의미론을 돕습니다. 물체 인식과 세분화 둘 다 많은 양의 학습 데이터가 필요합니다. 분류기가 다양한 각도로 물체를 인식하기 위해서는 다른 관점에서 물체의 데이터를 수집한 다음 수동으로 보정하는 것이 매우 어렵습니다. SLAM에서는 카메라의 움직임을 예측할 수 있기 때문에 이미지에서 물체의 위치를 자동으로 계산할 수 있으므로 수동 보정 비용이 절약됩니다. 고품질 주석이있는 샘플 데이터가 자동으로 생성되면 분류 자의 학습 프로세스가 크게 가속화 될 수 있습니다.
그림 14-8 의미론적 SLAM의 일부 결과, 왼쪽 및 오른쪽 이미지는 문헌에서 나온 것입니다 [138,140]
딥러닝의 광범위한 응용 프로그램을 사용하기 전에 우리는 머신러닝과 같은 전통적인 도구의 지원을 사용하여 객체나 장면을 구분하고 식별하거나 관찰 데이터를 데이터베이스의 샘플과 직접 비교할 수 있습니다. 의미론적 지도를 만들려고 노력하십시오. 이러한 도구 자체에는 올바른 분류 비율에 제한이 있기 때문에 효과가 만족스럽지 않을 수 있습니다. 딥러닝이 발전함에 따라 우리는 네트워크를 사용하여 이미지를 보다 정확하게 식별하고 감지하고 구분했습니다. 이것은 정확한 시맨틱 맵을 구축하기위한 더 나은 토대를 제공합니다 [151-153]. 일부 학자들은 SLAM 자체의 포즈 추정 및 Loop closure detection에서도 SLAM에서 객체 인식 및 세분화에 대한 신경망 방법을 점차 도입 한 것으로 나타났습니다. 이러한 방법이 아직 주류는 아니지만 이미지를 처리하기위한 SLAM과 깊은 학습을 결합하는 것도 유망한 연구 방향입니다.
또한 SLAM [154-156]은 라인/얼굴 특징을 기반으로하고 SLAM [157-159]은 동적 장면에서, [67, 160, 161]은 다중 로봇에서 연구자가 흥미를 느끼고 일하고자하는 곳입니다.
[9]에 따르면 Visual SLAM은 질문하고, 알고리즘을 찾고, 알고리즘을 완성하는 세 가지 주요 시대를 거쳤습니다. 그리고 우리는 현재 Visual SLAM 시스템이 다양한 간섭 조건 하에서 안정적으로 작동 할 수 있도록 기존 프레임 워크를 개선하는 방법에 직면 한 세 번째 시대에 있습니다. 이 단계는 많은 연구자들의 끊임없는 노력을 필요로 합니다.
물론 미래를 예언 할 수 있는 사람은 아무도 없습니다. 언젠가는 그러한 일이 발생할지 모른다고 말할 수 없으며, 전체 프레임 워크는 새로운 기술로 다시 쓰여질 것입니다. 그러나 그때조차도 오늘날 우리의 노력은 여전히 의미가 있습니다. 오늘날의 연구 없이는 미래의 발전이 없을 것입니다. 마지막으로,이 책을 읽은 독자가 기존 SLAM 시스템을 완전히 이해할 수 있기를 바랍니다. 또한 SLAM 연구에 대한 귀하의 공헌을 기대합니다!