SLAM
-
[논문 리뷰] Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud MapSLAM/SLAM 관련 논문 리뷰 2021. 9. 25. 16:13
KAIST 학생분들이 쓰신 논문이네요! Scan Context라는 Spatial Descriptor 개념을 제시한 논문인데, 간단히 요약하자면 어떤 위치에서 관측된 point cloud의 특징을 요약할 수 있는 descriptor를 제작해 LiDAR 기반 SLAM에서의 loop closure detection 또는 global localization등에 응용할 수 있도록 제안한 연구입니다. 비유를 해 보자면, 2D 이미지에서 특징점을 뽑은 다음에 각각의 특징점들을 ORB나 SURF등의 descriptor들을 사용해서 벡터로 encoding을 해 놓는 것처럼 어떤 특정한 위치에서의 point cloud data를 알아볼 수 있는, 말하자면 "요약본"을 제시한 것이라고 할 수 있겠습니다. 임의의 포인트 클라..
-
[논문 리뷰] Deep Virtual Stereo Odometry: Leveraging Deep Depth Prediction for Monocular Direct Sparse OdometrySLAM/SLAM 관련 논문 리뷰 2021. 9. 24. 12:41
이 논문은 다른 글에서 소개한 단안 깊이 추정 기법을 응용하여(참조한 논문은 다른 논문이지만 아이디어는 유사합니다) Monocular Visual Odometry에 적용한 시스템을 제안합니다. 링크를 걸어둔 두 논문은 한 장의 이미지를 입력으로 받아 단안 깊이 추정을 수행하는 시스템이지만, 이 논문은 거기에서 한 걸음 더 나아가 여러 프레임에서 생성된 depth information이 보다 일관되도록(정확히 어떤 의미인지 곧 설명하겠습니다) 제약 조건을 걸어서 최적화에 포함시킴을 통해 더욱더 정확한 3d reconstruction을 이루어 냈습니다. 그리고 논문 제목을 잘 보면 SLAM이 아니라 Visual Odometry입니다. 즉 현대적인 SLAM framework에 필수인 Loop Closure 과..
-
-
S-PTAM 리뷰 - 이론(5) : Local Bundle Adjustment 2SLAM/S-PTAM 이론 설명 및 코드 리뷰 2021. 7. 7. 15:15
그림과 수식이 많아 제 필기로 대체하겠습니다! Bundle Adjustment는 최적화 이론과 선형대수를 공부해볼 수 있는 좋은 기회라고 생각합니다. 다행인 점은 이 비선형 최적화 과정을 수행해 주는 g2o라는 라이브러리가 존재한다는 사실입니다. g2o에 각 frame의 pose에 대한 initial estimate와 3D-2D point correspondency를 입력해 주면 이 데이터로 error function을 생성하고(robust cost function도 선택 가능) 빠르게 최적화를 수행해 줍니다. 다음 글에서는 bundle adjustment가 S-PTAM 코드에서 어디에 있는지, 어떻게 돌아가는지 살펴보도록 하겠습니다.
-
S-PTAM 리뷰 - 이론(4) : Local Bundle Adjustment 1SLAM/S-PTAM 이론 설명 및 코드 리뷰 2021. 7. 6. 09:30
다음과 같은 자료를 참조하였습니다. https://www.ipb.uni-bonn.de/photogrammetry-i-ii/ (Cyrill Stachniss 교수님의 Mobile Sensing and Robotics 강의자료) http://rpg.ifi.uzh.ch/teaching.html (Davide Scaramuzza 교수님의 Vision Algorithms for Mobile Robotics 강의자료) 지난 글까지는 이론과 코드를 통해 S-PTAM의 visual odometry pipeline에 대해 알아보았습니다. Visual odometry란 카메라가 촬영한 이미지들을 사용해 카메라의 위치(=궤적, odometry)를 복원해 내는 기법을 말합니다. S-PTAM에서는 outlier detector..
-
S-PTAM 리뷰 - 코드(2) : Visual Odometry 2SLAM/S-PTAM 이론 설명 및 코드 리뷰 2021. 7. 5. 17:26
지난 글에서는 S-PTAM의 visual odometry에서 initialization 부분에 대해 알아보았습니다. 요약하자면 최초의 stereo frame으로부터 최초의 MapPoint와 Measurement들이 생성되고, 이 frame은 최초의 keyframe으로 선정되었습니다. 이제 두번째 프레임부터는 가지고 있는 MapPoint들로부터 3D-2D point correspondency를 찾아 6D pose 계산에 활용하고, 특정 조건(이 글 참조)을 만족하면 keyframe으로 지정하는 단계를 반복합니다. Initialization단계는 sptam.py의 SPTAM 클래스의 initialize 함수를 통해 수행되었습니다. sptam.py의 main 함수에서 여기까지의 코드는 다음과 같습니다. if ..
-
S-PTAM 설치 및 구동 가이드SLAM/S-PTAM 이론 설명 및 코드 리뷰 2021. 7. 2. 15:05
이전 글에서 언급했듯, S-PTAM 구동을 위해서는 pangolin의 Python 버전과 g2o의 Python 버전이 필요합니다. S-PTAM 파일은 제가 원본에 기능 추가/삭제/수정을 위해 원본에서 fork한 repositiory에 존재하고, pangolin과 g2o는 소스 코드를 내려받아 빌드해야 합니다. 가이드 시작 전, 제 구동 환경을 나열해 보자면 : AMD Ryzen 7 4700U, 16g 램 VMWare Workstation 16 Player에서 돌아가는 Pop!_OS 20.04(우분투 배포판 중 하나입니다) Linux 커널 5.11.0 과 같습니다. 라이브러리 설치와 구동을 위해 리눅스 운영체제가 필요합니다. ※ 구동 환경에 따라 저에게 없었던 오류가 나타날 수 있습니다. 그 때는 터미널의..
-
S-PTAM 리뷰 - 코드(1) : Visual Odometry 1SLAM/S-PTAM 이론 설명 및 코드 리뷰 2021. 7. 2. 11:11
S-PTAM에서 사용하는, 스테레오 카메라를 이용한 visual odometry pipeline에 대해 지난 3개의 포스트에서 알아보았습니다. 이번 포스트에서는 S-PTAM 코드에서 visual odometry에 관련된 부분을 살펴보며, 그러한 논리적 흐름과 수학적 방법론들이 코드로는 어떻게 구현되어 있는지 구경해 보도록 하겠습니다. 일단 이 글에서 설명한 대로 코드를 내려받았다고 가정합니다. 이번 포스트와 함께 열어놓고 참조하며 읽는 것이 도움이 될 것이라고 생각합니다. 처음에는 코드를 line-by-line으로 설명해 볼까 시도도 했는데, 함수 안에 함수 안에 함수가 있는 식으로 복잡한 코드인데다 데이터를 여기저기서 상호참조해 오기 때문에 흐름을 따라가기가 쉽지 않습니다. 따라서 모든 함수를 설명하지..