본 포스트에서는 SLAM을 처음 접하거나 아직 익숙해지지 않은 분들에게 필요한 선수 지식, 공부 자료들에 대해 설명한다. 필자는 2019년에 SLAM에 대해 처음 접하고 석사 연구 주제로 선정하였으며 그 때 많이 도움을 받은 자료 위주로 설명할 예정이다. 이후 더 좋은 자료가 있으면 업데이트할 예정이다. (last updated: 23.11.22)
1. Korean community
SLAM을 공부하면서 커뮤니티의 도움을 받으면 어려운 난관을 비교적 수월하게 헤쳐나갈 수 있다. 포스팅 시점에 국내에는 크게 두 개의 커뮤니티가 존재한다.
1.1. Facebook SLAM KR
포스팅 시점(23.6) 기준 3500명 규모의 페이스북 그룹이다. 국내에서는 최대 규모인 것으로 알고 있다. 개설된 지 5년 정도 되었으며 다양한 학술 자료 및 연구, 최신 뉴스 등을 공유하는 페이지이다. 신동원님이 운영자로 관리하고 있으며 비정기적으로 스터디 모임 또한 하고 있다. 페이스북 특성 상 포스팅이 빠르고 커뮤니티가 활성화되어 있진 않지만 포스팅된 글들을 천천히 훑어보며 최신 동향과 공부 리스트를 찾기 좋다. 모르는 내용에 대해 물어보면 자세한 답변을 얻을 수 있다.
1.2. KakaoTalk '저희는 SLAM 마스터가 될 겁니다'
포스팅 시점(23.6) 기준 1000명 규모의 카카오톡 오픈채팅방이다. 장형기님이 운영자로 관리하고 있으며 SLAM에 대한 최신 동향을 알 수 있다. 카카오톡 특성 상 커뮤니티가 활성화되어 있으며 질문 및 답변이 활발한 편이다.
2. Study
2.1. Visual SLAM learner's road map
필자가 생각하는 Visual SLAM의 공부 로드맵은 다음과 같다. 각각 학문에서 필수적으로 알아야 하는 키워드를 회색 글자로 표기하였다. 개인적으로 Visual SLAM을 공부하면서 정립한 road map이므로 참고 용도로만 봐주면 좋을 것 같다. Visual SLAM을 파고자하는 경우가 아니면 다중기하학은 제외하여도 좋을 것으로 보인다. 추가적으로 Deep SLAM에 관심이 있는 독자는 딥러닝 관련 지식을 학습하면 좋을 것이다.
2.2. SLAMKR Online Study Season 1
페이스북 SLAMKR 그룹에서 2019년에 업로드한 SLAM 온라인 스터디 자료이다. SLAM의 기본적인 개요부터 시작해서 Image Formation, 3D Rigid Body Transformation, Camera Model, Lie Group, Visual Odometry, Backend, Loop Closing까지 거의 모든 분야에 대해 커버하고 있어서 SLAM에 대해 공부하려면 어떤 어떤 개념들을 익혀야 하는지 로드맵을 잡는데 큰 도움이 되었다.
2.3. SLAMBook (English ver.)
pdf: https://github.com/gaoxiang12/slambook-en/blob/master/slambook-en.pdf
필자가 Visual SLAM을 공부하면서 가장 많은 도움을 받은 책 중 하나이다. 해당 책은 TUM의 박사과정 학생 Xiang Gao이 2017년에 입문용으로 작성하였는데 Visual SLAM의 기초부터 심화까지 깔끔한 설명 + 수식 + 예제 코드를 통해 친절하게 설명해주기 때문에 엄청난 인기를 누렸다. 하지만 원문이 중국어로 작성되어 있어서 영문판에 대한 요구가 이어졌고 2021년에 영문 번역이 마무리 되어 공개되었다. 앞서 설명한 SLAMKR Online Study도 SLAMBook을 기반으로 하여 스터디하였을 정도로 구성이나 내용이 좋다. Visual SLAM에 관심있는 분들은 적극 추천한다.
개인적으로는 영문이 나오기 전에 신동원님 포함 SLAMKR 분들이 한글로 번역한 버전을 주로 많이 봤다.
2.4. SLAMBook (Korean ver.)
앞서 설명한 Visual SLAM 중국어 원본을 정식으로 한국어로 번역한 책이다. 필자도 구매해보진 못했으나 주변에 들리는 평가로는 번역이 깔끔하게 잘 되어서 공부하기 좋다고 한다. Slambook을 한글로 공부하고 싶은 독자들에게 추천한다.
2.5. 신동원, 장형기님의 'NVIDIA Jetson Nano와 함께하는 SLAM 이해와 구현'
SLAMKR의 운영자이신 신동원님과 장형기님께서 23.6.15에 공개한 SLAM 교재이다. 대부분의 자료가 영어인 SLAM 필드에서 한국인 저자가 한글로 작성한 최초의 SLAM 책이라고 할 수 있다. SLAM의 배경부터, 이론, 코드 구현, 미래 방향, 자료 추천까지 거의 모든 내용에 대해 다루고 있으므로 입문자들에게 추천한다.
2.6. 주재걸 교수님의 '인공지능을 위한 선형대수'
주재걸 교수님의 선형대수학 강의는 선형대수학을 전혀 공부하지 않았던 필자에게 많은 도움이 되었던 수업이다. 기초부터 매우 자세하게 예시와 함께 설명해주기 때문에 선형대수 이론을 공부하는데 매우 좋았던 강의였다.
2.7. Robot Mapping Course (by Prof. Cyrill Stachniss)
필자가 처음으로 공부했던 SLAM 강의 영상이다. 전통적인 Filter-based SLAM 부터 최신 Graph-based SLAM까지 다양한 내용에 대해 커버하고 있으며 비교적 쉬운 설명과 양질의 슬라이드로 인해 SLAM의 전반적인 개념을 잡는데 많은 도움을 받았다. 모든 강의가 영어로 진행되기 때문에 영어에 익숙해야 강의를 원활하게 이해할 수 있다.
2.8. Multiple View Geometry - Lecture 1 (Prof. Daniel Cremers)
Visual SLAM을 공부하면서 필수적으로 공부해야 하는 Multiple View Geometry를 설명하는 강의이다. TUM의 Daniel Cremers 교수님이 직접 강의하시며 Visual Odometry에 필요한 MVG의 핵심 개념들을 배울 수 있다. 모든 강의가 영어로 진행되기 때문에 영어에 익숙해야 강의를 원활하게 이해할 수 있다.
2.9. Lie theory for the roboticist (by Joan Sola)
SLAM을 공부하면서 최적화를 공부하면 Lie Theory를 자주 접하게 된다. 처음에 이론적인 배경을 모르고 들으면 복잡한 수학에 압도되어 더 나아가기 어렵다. 유튜브에 Joan Sola님의 강의는 복잡한 Lie Theory를 다양한 그림 자료와 함께 자세하게 설명해주기 때문에 개념을 잡기에 매우 좋다. 모든 강의가 영어로 진행되기 때문에 영어에 익숙해야 강의를 원활하게 이해할 수 있다.
3. My posting
필자가 SLAM을 공부하면서 느낀점 중 하나는 인터넷에 양질의 자료는 많지만 너무 파편화되어있고 영어로 작성되어 있어서 이를 공부하는데 많은 시간이 소요된다는 것이었다. 따라서 이를 한글로 한 번에 정리하는 자료를 PPT, PDF 포맷으로 SLAMKR에 게시하였고 추후 블로그를 시작하여 지속적으로 포스팅하고 있다. SLAM을 공부하면서 필요하다고 생각하는 선수 지식들을 블로그 포스팅으로 정리하였다.
3.1. Linear Algebra
Edwith의 주재걸 교수님의 '인공지능을 위한 선형대수'라는 강의를 듣고 이를 정리한 내용의 블로그 포스팅이다. 선형 방정식부터 선형 시스템, 행렬의 Rank와 Null Space, Least Squares, SVD 등등 많은 내용들을 쉽게 자세하게 설명해주셔서 선형대수학을 공부하는 데 많은 도움이 되었다.
3.2. Robotics (Spatial Transformation)
로봇공학에서 배우는 3차원 물체의 변환과 관련된 내용을 정리하였다. Coordinate System, Rotation Matrix, Transformation Matrix부터 시작하여 다양한 3차원 회전 표현법들인 Angle-axis, Euler Angle, Quaternion에 대해 공부할 수 있다.
3.3. Multiple View Geometry Part 1,2,3
Visual SLAM에 관심이 있다면 필수적으로 공부해야 하는 Hartley의 "Multi View Geometry in Computer Vision" 책을 한글로 정리한 포스팅이다. 석사과정 때 들었던 MVG 수업과 인터넷 상의 다양한 자료를 참고하여 정리하였다. Projection Space, Camera Models, Homogeneous Coordinate, Epipolar Geometry 등 Visual SLAM의 필수적인 내용들을 공부할 수 있다.
3.4. Lie Theory (SO(3), SE(3))
SLAM을 공부하면서 가장 수학적으로 난해했던 부분인 Lie Theory를 정리하였다. 대부분의 내용은 유튜브의 Lie theory for the roboticist (by Joan Sola) 영상을 참고하였다. SLAM 최적화 부분에서 항상 나오는 Lie Theory가 왜 사용되는지, 어떤 성질을 가지고 있는지 자세하게 작성하였다.
3.5. Plücker Coordinate
3차원 공간 상의 직선을 나타내는 방법 중 하나인 Plücker Coordinate를 공부하면서 마땅한 한글 자료 및 전체적으로 알아보기 쉽게 정리한 포스팅이 없다고 생각하여 이를 직접 정리하였다. 이는 SLAM에서 Line Feature를 표현 및 최적화할 때 사용하는 방법으로 Line Feature 기반의 SLAM을 공부한다면 필수적으로 알아야 할 개념이다.
3.6. Kalman Filter (+ Probability Theory)
최적화 기반 SLAM 이전에 널리 연구되었던 EKF SLAM을 공부하거나 VIO에서 IMU의 Error-state System Equation을 이해하기 위해서는 우선 Kalman Filter를 이해해야 한다. Joint Gaussian, Mutlivarite Gaussian 등 확률 이론의 기본 개념에 대해 소개한 후 KF, EKF, ESKF에 대해 설명한다.
4. Useful posting
SLAM 관련하여 잘 정리된 자료들을 공유한다. 순서는 무작위로 리스팅하였다.
- Visual Odometry and vSLAM - IanFlow 블로그
- How to use g2o - IanFlow 블로그
- Visual Odometry - Miller Shin 블로그
- ORB SLAM의 구조와 쓰레드 영상 - Yotube : 한동대학교 황성수 교수님이 설명해주시는 ORB SLAM 분석 영상이다
- 50가지 CV/SLAM 기술면접 질문 리스트 - cv-learn 블로그 : 다양한 SLAM의 이론적 내용을 면접 질문/답변 형식으로 정리하셔서 개념을 공부하기 좋다
5. Useful blog
잘 정리된 국내 SLAM 엔지니어분들의 블로그를 공유한다. 개인적으로 SLAM 공부하면서 많이 참조하였다. 아래 리스트에 없는 좋은 SLAM 블로그가 있는 경우 댓글로 언급해주면 추가하도록 하겠다. (순서는 무작위로 리스팅하였다.)
- https://limhyungtae.github.io/
- http://jinyongjeong.github.io/
- https://gisbi-kim.github.io/
- https://dongwonshin.oopy.io/
- https://taeyoung96.github.io/
- https://youngguncho.github.io/
- https://merobot.tistory.com/
'Curated' 카테고리의 다른 글
[Curated] SLAM 엔지니어 역량 점검 체크리스트 질문 (0) | 2024.04.08 |
---|---|
[Curated] SLAM 논문 리뷰 모음 (+ VO, VIO, LO, LIO) (1) | 2024.01.28 |
[Curated] SLAM 유튜브 채널 (1) | 2023.07.04 |
[Curated] Download Archive (0) | 2023.01.21 |
[Curated] SLAM 연구 및 논문 자료정리 (~20) (0) | 2022.01.05 |