꿈꾸는 개발자

SLAM 개발자를 위한 공부 - 1 본문

SLAM

SLAM 개발자를 위한 공부 - 1

Anssony 2022. 10. 24. 21:13

SLAM (Simultaneous Localization and Mapping)

동시적 위치 추정 및 지도 작성이라 불리는 기술이다.

한국어로도 어려운 슬램. 사용하는 분야는 자율주행, 로봇청소기, 드론 등 다양한 분야에서 사용되고 있다.

슬램 기술에 대해 관심이 생겨 공부를 시작하면서 최종적인 목표로 SLAM 개발자가 되고 싶어 나의 로드맵과 동시에 공부 과정을 담기 위해 글을 작성한다.

 

 

SLAM을 처음으로 접하게 된 것은 연구실에서 Turtlebot3라는 모바일 로봇을 이용해 Navigation 예제를 실행하면서 처음 접하게 되었다.

처음으로 Turtlebot3를 구동시켜 만든 연구실 MAP

Navigation을 진행할 때 항상 궁금했던 거는 어떻게 로봇은 자신의 위치를 알고 그 위치에서 장애물들을 어떻게 회피하면서 갈까?

라는 의문점에서 시작되었고, 결국 해답은 SLAM에 있었다.

 

하지만 나는 SLAM이란 단어만 알았고, 그 안에는 엄청나게 많은 공부가 필요하다는 것을 알게 되었다.

 

만약, 당신이 SLAM을 공부하려고 한다면, 내가 생각하는 몇가지 prerequisite에 대해 설명하려고 한다.

(이건 지극히 주관적인 생각이므로 피드백은 언제나 환영입니다.)

 

 

1. C/C++ 언어

 

SLAM 개발자가 되기 위해선 C/C++ 언어에 대한 숙련도가 높아야 한다는 사실이 나에게 가장 큰 약점으로 다가왔다.

(나는 java만 다뤄봤고, 가끔 deep learning 모델들을 구현하기 위해 Python을 사용한 것 말고 C/C++은 배운 적이 없다...)

 

결국 C/C++을 공부해야겠다고 마음을 먹고, 인프런에서 C/C++ 언어 강의를 구매하였다.

현재도 수강중이다

2. 수학

 

개인적으로 C/C++ 언어와 더불어 가장 중요하다고 생각되는 조건 중 하나라고 생각한다.

SLAM 공부를 하면서 수학적인 지식이 정말 많이 필요한 것 같다.

Bayesian 확률론, 선형대수학 등 다양한 수학적 지식이 많이 필요하다고 생각된다.

나는 수학적 지식에 대해 전부 알고 있지 않을 뿐더러 그 전에 배웠었던 수학적 지식이라도 까먹은 것들이 많아 모르는 게 나오면 찾곤 한다.

 

 

3. 논문

 

이건 당연하다고 생각되지만 당연히 SLAM 개발자가 되기 위해선 SLAM 논문을 많이 읽어야 한다고 생각한다.

SLAM에는 다양한 종류의 SLAM 기술이 존재하고, 기술들에는 각각 특징들이 존재한다.

(Ex. 단안 카메라만을 사용한 SLAM, LiDAR와 카메라를 이용한 SLAM 등)

 

Guanwei Jia 1 , Xiaoying Li 1 , Dongming Zhang 1,*, Weiqing Xu 2,3,* , Haojie Lv 1 , Yan Shi 2,3 and Maolin Cai 2,3 Visual-SLAM Classical Framework and Key Techniques:A Review (MDPI: Sensors, 2022) 1~25

다양한 논문들이 많지만 Visual-SLAM 기술에 대한 Survey 논문을 보기 위해 읽었었다.

이 논문에는 SLAM 알고리즘들에 대한 설명과 특징, SLAM에서 사용하는 주요 기술들을 설명하고 있다.

 

논문들을 추가적으로 읽게 된다면 나중에는 리뷰를 글로 남길려고 한다.

 

4. SLAM KR

 

https://www.facebook.com/groups/slamkr/

 

SLAM KR | Facebook

SLAM 연구 관련하여 정보를 나누는 공간입니다. 학문적 이론에서 실제적 구현을 거쳐 재미있는 응용으로 까지 다양한 SLAM 관련 주제에 대해서 공유하고 토론하는 장이 되었으면 좋겠습니다. For th

www.facebook.com

개인적으로 추천하는 Facebook에서 활동 중인 SLAM 기술을 연구하시는 분들의 커뮤니티이다.

나는 Facebook을 해킹 당한 뒤로 앱으로는 전혀 사용하지 않지만, 종종 웹으로 들어가서 SLAM에 관해 필요한 정보들을 찾곤 한다.

개인적으로 이제 막 공부를 시작한 시점이라 궁금증이 많기도 하고 기초적인 지식이 부족해 많은 것을 이해하진 못하지만, 커뮤니티가 활동적이라 자주 이용하는 편이고 글이 올라왔을 때 모르는 부분들을 찾아보면서 공부하고 있다.

(게시물을 관리하시는 분들에게 따로 메일을 보내 직접 만나서 내가 잘 공부하고 있는 지도 물어보고 싶지만 아직 용기가 없다..더 많이 공부하고 연락을 드려야 피해가 안갈 것 같아서!)

 

 

이외에도 SLAM 분야에 취업하기 위해 엄청 많은 것들이 필요하다고 생각된다.

하지만, 처음 SLAM 분야에 공부를 시작하려고 한다면 1, 2번은 먼저 공부하고 시작하는 것이 어떨까?

물론 나도 지금 공부 중이다.. 아직 할게 많이 남아있다...

 

 

 

추가적으로 Visual SLAM 개발자가 되기 위한 로드맵도 존재한다.

해당 로드맵을 확인할 수 있는 링크를 남겨놓겠다.

(링크에 나와있는 모든 것들을 공부했다면 그때 쯤에는 SLAM을 알고 있다고 해도 괜찮지 않을까?)

https://github.com/changh95/visual-slam-roadmap

 

GitHub - changh95/visual-slam-roadmap: Roadmap to becoming a Visual-SLAM developer in 2021

Roadmap to becoming a Visual-SLAM developer in 2021 - GitHub - changh95/visual-slam-roadmap: Roadmap to becoming a Visual-SLAM developer in 2021

github.com

 

앞으로는 하나씩 공부할 때마다 추가적으로 글을 작성해보려고 한다.

 

 

화창한 미래를 위해 끊임없이 노력! 화이팅!