SLAM을 SLAM답게 만드는 건 무엇일까?: 내맘대로 SLAM 정의하기

Giseop Kim
9 min readApr 19, 2020

SLAM 은 무엇인가?

라는 질문을 자주 생각해본다. 그리고 시릴님 책에 있는 요 그림을 참 좋아한다.

이 정의에 따르자면 SLAM은 mapping 과 localization의 교집합이며, 또한 path planning 과의 융합을 위한 영역으로 느껴진다. 근데 이 정의는 한 그림으로 그리기엔 멋있지만 SLAM을 이해했다고 말하기엔 피상적이라 느껴왔다.

아래 정의들은 내가 거쳐 온 생각들이다.

초보단계

  • 동시적 위치추정 및 지도작성,
  • ⇒ 이란 건 번역에 지나지 않기 때문에 그다지 슬램을 이해하는데 도움이 되진 않아왔다.. 그 말이 수학적으로, 코드적으로 어떤 걸 의미하는지 별로 감을 잡을 수 없었다. 코드를 실제로 읽어야겠다고 생각함.

초보단계2

  • SLAM은 멀뷰인가? 리프로젝션하고... 트라이앵귤레이션하고... 뎁스를 확률적으로 잘 예측한다면 SLAM을 잘 할 수 있겠구나.
  • ⇒ 이 내용은 카메라 센서를 위한 프론트엔드 공부에 해당하기 때문에 코끼리의 코만 보고 코끼리를 이해했다고 생각한 시기. 사실 LiDAR로 SLAM을 입문했기 때문에 이 부분을 잘 몰라도 되긴 됐었다.

실습 하고 코드 읽은 단계 (예: ORB SLAM 돌려보기, LOAM 돌려보기)

  • SLAM은 state 들의 (robot pose와 landmark) joint estimation 이구나 (MAP problem).
  • 그걸 filtering으로 풀 수도 있고 optimization 으로도 풀 수 있구나.
  • ⇒ 요즘 고민은 그게 다인가? 그럼 computer vision 사람들이 푸는 sfm 문제와 크게 다르지 않은데.. SLAM을 SLAM 답게 만드는 건 무엇일까? SLAM engineer 를 SLAM engineer 답게 만드는 건 무엇일까?

SLAM을 SLAM 답게 만드는 건 무엇일까?

아래는 내맘대로의 정의.

SLAM 을 아래 요소들의 복합적 구성요소로 정의해보았다.

  1. (Multiple) Sensor (fusion) -based
  2. (Real-time) State estimation of Bayes network
  3. with Robust data-association
  4. for Robot mission

괄호친 것들은 SLAM을 더욱 SLAM 답게 만들어주는 것들이지만, 막상 논문을 보다보면 꼭 필수는 아닐 수도 있는 것이라 생각된다.

하나씩 조금 더 설명을 덧붙여 보자.

  1. (Multiple) Sensor (fusion) -based
  • SLAM은 여타 컴퓨터비전 태스크와는 사람보다는 로봇에게 더욱 필요한 것이라 생각된다. 그래서인지 위에 언급한 2-4 의 달성에 도움이 된다면 어떤 센서든 차용하고, 융합하기를 꺼리지 않는 것이 (모바일) 로보틱스의 분위기인 거 같고, 그런 분위기가 좋다.
  • 센서를 추가한다는 건 비용을 증가시키고 컨스트레인트를 하나 해제하는 거에 가깝기 때문에 (사실은 어떤 이슈가 오히려 튀어나와서 아닐수도있지만) 이 자체로는 논문이 되기 어려운 것 같다ㅡ그래서 이 쪽 경험이 많이 없는데 이 쪽 경험을 좀 더 보완해보고 싶음. 실제로는 어떤 한 센서로 제약을 줄이는 것보다 여러 센서를 융합해 더 많은 일을 할 수 있는 게 더 멋있다 생각됨. 카메라도 좋지만 LiDAR, Radar, IMU 융합 연구를 하나 해보고싶다.
  • 암튼 Multi sensor calibration (특히 online, non-overlapping sensors의 경우) 도 그래서 SLAM에 있어서 참 멋있고 매력적인 연구주제이다.

2. (Real-time) State estimation of bayes network

  • SLAM을 SLAM 답게 만드는 건 SLAM의 태생에 있다 생각함. 그 태생적 유산을 하나만 남긴다면 바로 bayes network 라고 말하고 싶다. X*, L* = argmax P(X, L | Z, U) 는 그 태생적 가정에 의해 해체되고 단순화된다. 그렇게 수식을 변형해나가는게 SLAM의 아름다움처럼 느껴짐. 그래서 두꺼운 Probabilisitc robotics 책에서 SLAM을 baye net 으로 구성하고 beleif 식을 recursive 하게 유도하는 부분만 읽어도 아주 큰 부분을 이해한 것이라 생각된다. bayes net 을 factor graph 로 바꾸고 factor들의 곱으로 된 loss function에 대한 optimization 을 풀자는 식으로 발전해온 것도 참 멋있는 부분.
  • state 라 말하면 robot 의 ego pose 와 map 의 landmark pose 들을 모두 아우르는 표현이기 때문에 또한 state estimation 이라는 단어로 SLAM을 정의하는게 멋있다. 굳이 localization 과 mapping 을 분리하여 말할 필요가 없는 것.
  • 또 estimation 이라 말하면 filtering 이니 optimization 이니 하는 개념을 포괄할 수 있기 때문에 또 더 원론적인 단어라 생각된다. 암튼 그래서 바풋님의 state estimation for robotics 책을 갠적으로 스룬님의 prob robotics 보다 좋아함...
  • 아무튼 이 부분이 실제로 SLAM을 공부하는 데 있어서 가장 많은 자료들이 있기도 있고, 가장 많은 시간이 소요되는 부분인 듯하다. probabilistic robotics, lie algebra, iSAM, … 등 논문을 보다보면 등장하는 많은 부분들이 여기에 해당한다고 생각함.

3. with Robust data-association

  • SLAM의 태생적인 graph 구조를 푸는 것과는 별개로 graph 자체가 잘못 구성되면 결국 잘못된 답으로 유도되기 때문에, robust 한 data association 역시 SLAM의 큰 구성요소라 생각된다.
  • Data association은 아주 국소적 스케일 (e.g., finding point correspondence, object tracking) 에서 이루어 질수도 있고, 그 중간적 스케일 (e.g., probabilistic Data Association for Semantic SLAM), 혹은 개념적 공간에서 (e.g., loop detection (place-to-place association)) 이루어질 수 도 있기 때문에 일반적인 용어라 생각되어 마음에 든다.
  • Data association 의 robustness 는 프론트엔드에서 그 역할을 짊어질 수도 있고, 백엔드에서 그 역할을 짊어질 수도 있는데 그 둘다를 이해해야 하는 것도 SLAM 엔지니어가 멋있게 느껴지는 이유였다. 최근에는 프론트엔드에서 로버스트한 scan context 와 백엔드에서 로버스트한 DCS 를 통합하기도 했다 (https://github.com/irapkaist/SC-LeGO-LOAM). 한 부분이 100% 퍼펙트할 수 없으므로 서로 도와야 한다고 생각.
  • 최근 딥러닝과의 융합이 기대되고 많은 시도가 이루어지고 (이루어질 수 있다고 생각되고) 있는 부분이기도 한듯. Superpoint 나 Visual Odometry Revisited: What Should Be Learnt?, Deep Closest Point 같은 시도들이 나오는게 참 좋다. 아직 딥러닝을 잘 몰라 구경만 하고 있는데 하나 해보고싶은 포션이기도 하다.

4. for Robot mission

  • 결국 1-3의 과정을 잘 하려는 이유는 4에 있다고 생각된다. 이 부분이 SLAM을 SLAM답게 만드는, 만들 수 있는 가장 큰 부분이라 생각됨.
  • 그 mission 이 정교한 map 제작에 있는 경우 이 로봇은 정확도에 목적을 두고 1-3을 꾸려나가야 하고, 때로는 offline 처리가 허락되기도 하는 것 같다. 따라서 SLAM을 real-time 에 국한할 필요가 크게 있나 싶은 요즘이다ㅡ원래 real-time이란 application-dependent 한 것이니까 (또 수중로봇의 경우 한 번의 퍼셉션 이후 컨트롤 까지 충분한 수초에 수분 정도의 시간이 주어질 수도 있다고 하는 등).
  • 그 mission 이 빠르고 융통성 있는 goal point 도착에 있는 경우 이 로봇은 앞의 정교하고 숙고하던 로봇과 달리 정밀한 맵을 만들지 않아도 될 수도 있고, 앞의 로봇이 만든 맵을 그저 이용하기만 해도 될 수도 있고, 네비게이션에 충분한 정도의 SLAM 정확도만 얻어도 될 수도 있다고 생각함.
  • 또한 어떤 로봇은 같은 지역을 오랫동안 매핑하는 미션을 가지고 있을 수도 있고, 어떤 로봇은 다른 로봇들과 잘 팀을 이루어 어떤 미션을 해야하는 미션을 가지고 있을 수도 있다. 이 부분에 대한 연구는 이제 막 시작처럼 느껴진다. 그런 면에서 SLAM은 혹자가 말하듯 연구가 다 된 분야이긴 하지만 여전히 할 게 많은 분야이고 여전히 매력적인 분야라고 하고 싶다. 그리고 실제 밖으로 나가면 책에서 이야기했던 것들이 안되는 것도 역시 SLAM을 여전히 매력적으로 만드는 요소다 (...)
  • 그래서인지 1cm accuracy 를 더 올리는 odometry benchmark 연구를 하는게 요즘인데 그쪽엔 흥미를 잃고 ... 차라리 어떻게 현재 적당히 디벨롭된 SLAM기술을 planning 에 잘 융합할까, 아니면 1-3 중 다른 포션에서 어떤 부분을 보완해야 근본적으로 빈 부분을 메꿀 수 있을까 이 생각을 하게 된다. 100에 1.03 을 곱하려는 시도 보다 때론 100에 다른 10을 더하는 게 쉬울수도 있고, 더 유효하지 않나... A급 SLAM 엔지니어의 기본은 주어진 로봇 미션이 무엇인지 잘 이해하고, 적합한 SLAM 기법을 적절한 수준에서 차용할 수 있는게 아닐까? 암튼 생각은 이런데 여전히 경험이 적어서 뭘 차근차근 더 해봐야할까 싶다.

다른 사람들의 의견도 궁금하다.

SLAM을 SLAM답게 만드는 건 무엇일까?

암튼 다음주제 뭐하지 라고 계속 외치다가 (…) 대충 분류해보았고, 어떤 연구주제든 위 4가지 부분 중 한가지에 (혹은 여러가지) 속할 수 있다고 생각된다. 다음 연구는 어떤 영역에서 해야할지.. ?_?

SLAM은 무엇이다

어디서 본 얘긴데, 말타는 법을 다 배운 다음에는 말 타는 법을 잊어야 한다고 했던가. SLAM을 다시 정성적이고 인문학적으로 이야기하자면 이렇게 말하고 싶다. SLAM은 Spatial AI이다. 앤드류 데이비슨 교수님이 밀고 계시는 용어인데 나도 그 용어의 fan 이 되었다. SLAM의 모든 것은 결국 우리 주변 환경을 잘 이해하려는 시도라고 말할 수 있을 것이다. 그 지점에 이르면 이 논문은 SLAM논문이다 아니다 라는 논쟁은 모두 무의미해질 것 같다. 결과적으로 로봇이 공간을 이해하기 위해 필요한 것들에 대한 것이라면 어떤 일이든 다양한 분야의 사람들과 만나고 싶다.

끝!

--

--

Giseop Kim

Ph.D. candidate, KAIST. Studying robot mapping and Spatial AI.