본문 바로가기
Autonomous Vehicle/Theory of Robotics

[번역/요약] Autonomous Navigation : Understanding SLAM Using Pose Graph Optimization

by kim.jeff 2020. 8. 13.

Slam에 대한 좋은 설명 영상을 번역하고 요약하면서 관련 내용을 정리하도록 하겠습니다. ICP알고리즘이나 NDT알고리즘의 기본적인 설명을 굉장히 시각적으로 잘 표현해 주었네요. 

 

https://saint-swithins-day.tistory.com/45

 

[번역/요약] Autonomous Navigation : Particle Filter 알아보기

로컬리제이션 방법 중 하나인 파티클 필터에 대해서 알아보도록 하겠습니다. 매틀랩에서 진행하고 있는 파티클필터에 대한 영상을 번역하고 해석하면서 관련 내용을 요약, 정리하도록 하겠습��

saint-swithins-day.tistory.com

이전 글과 시리즈로 이어지는 내용이니 참고하시면 좋겠습니다. 

 

 


자율주행 : Pose Graph Optimization를 이용한 SLAM 이해하기

Autonomous Navigation : Understanding SLAM Using Pose Graph Optimization 

 

이전의 상황에서는 환경에 대한 모델이 주어졌을 때 차량의 포즈 (방향과 위치)를 예측하고 측정하는 방법에 대해서 알아보았는데요. 이번에는 맵이 없을 때의 상황을 생각해보겠습니다. 이것을 우리는 슬램이라고 하는데요, 슬램에서는 크게 스무딩과 필터링으로 나뉩니다. 필터링의 경우에는 EKF 필터와 PARTICLE 필터가 있습니다. 상태가 최신의 측정을 통해서 로봇이 가면서 업데이트되는 특징을 가집니다. 반대로 스무딩의 경우에는 모든 궤적들이 모든 측정장비들의 세트를 이용하여 측정합니다. 맵이 주어지지 않은 상황에서 맵을 만드는 것을 slam이라고 합니다. SLAM에서는 크게 두 가지로 나눌 수 있는데요, 하나는 필터링 하나는 스무딩입니다. 필터링은 EKF, Particle filter가 있는데, 차량의 상태가 가는 도중에 최신의 측정장비들에 의하여 측정됩니다. 반면에 스무딩(smoothing)은 모든 궤적이 완전한 측정장비의 모음(세트)을 이용하여 측정됩니다. 최신의 정보를 포함한 모든 것이요. 만약 우리가 그것들을 그래프를 통해서 나타낸다면 더 직감적으로 확인이 가능할 겁니다. 최근에는 사실 한 특정 프레임워크의 포즈 그래프 옵티미제이션의 경우, 일반적으로는 팩터 그래프 옵티미제이션이긴 하지만 현대 슬램의 일반적인 설루션이 되었습니다. 

 

 

문제를 한번 정의해 봅시다. 로봇이 하나의 환경을 측정한다고 합시다. 엔코더를 통한 오도메트리 정보를 얻어온다고 합시다. 데드레코닝이라고 하죠. 환경이 어떻게 생겼는지 어떻게 알 수 있는지 알아보도록 하죠.

하나의 장애물이 있는 사무실에 있다고 가정합시다. 이상적인 환경에서는 라이다 센서의 노이즈가 없고 오도메트리 측정에 오차가 없다고 합시다. 그렇다면 현재 오도메트리 측정 데이터에서 들어온 라이다 데이터를 계속 추가시키면서 결과적으로 큰 맵을 만들 수 있습니다. 하지만 이 방법은 굉장히 비현실적입니다. 왜냐하면 센서에는 오차가 많기 때문이죠. 

다시 한번 차량을 이동시켜보겠습니다. 하지만 차량은 슬립에 의해서 실제 위치정보와 측정된 오도메트리 정보가 다를 수밖에 없습니다. 두 가지의 각의 프레임에서 들어온 하나의 라인이 오차에 의해서 한 라인에 없게 됩니다. 이게 반복된다면 실제 맵과는 많이 다른 맵이 만들어지고, 결과적으로 이런 이유 때문에 들어온 데이터를 그대로 맵을 만들 수 없는 것이죠. 

영상 처음 부분에서 SLAM을 위한 Pose Graph Optimization에 대해서 집중하여 살펴보도록 하겠다고 했었죠. 알고리즘 뒤의 직감적인 그래프를 보여주도록 할것입니다. 좌측이 실제 환경의 맵이고 오른쪽의 빈 공간이 앞으로 Pose Graph를 만들 공간입니다.

처음에 라이다를 통해서 거리를 측정합니다. 포즈 그래프에 그립니다. 이 데이터 또한 불확실성이 있지만 뒤에서 그것에 대해서 다루도록 하겠습니다. 최초의 그래프가 생겼군요. 이제 새로운 두번째 데이터가 들어왔습니다. 포즈 그래프에서 두 번의 프레임의 데이터가 함께 생겼습니다. 이 환경에서 로봇이 어디 있는지는 모르지만 두 프레임의 두 로봇의 거리 차이는 알 수 있습니다. 우리의 상황에서는 엔코더로 인한 바퀴 굴림수 체크를 통한 위치 확인이지요. 하지만 SLAM의 알고리즘의 경우에 한 가지의 특정한 오도메트리에 한정되지 않습니다. 상대적인 거리 측정에는 IMU센서나 다른 오도메트리로 인한 측정도 가능합니다. GPS, 가장 신뢰가 높은 데이터를 선정하게 되지요. 

이러한 오도메트리 측정방식이 정확하면 좋겠지만, 현실적으로는 불가능합니다. 그렇다면 두개의 프레임에서 가져온 포즈 그래프를 회전과 이동을 통해서 두 선이 한선에 있게끔 맞추어주면 좋겠다는 생각이 드네요. 그렇다면 두 개의 프레임의 두 차량의 위치 간에 고무 막대가 하나 있다고 생각해 보자고요. 그 상태에서 하나의 차량은 고정시키고 나머지 하나의 차량이 늘어나거나 압축되는 고무 막대에 의해서 거리를 줄였다 늘렸다 할 수 있다고 생각해 봅시다. 고무 막대의 최대 압축 및 신장 강도는 우리가 얻어온 데이터에 얼마나 자신이 있고 신뢰할 수 있는지를 기준으로 정할 수 있습니다. 얻어온 데이터가 충분히 신뢰할 수 있는 데이터라면 변화할 수 있는 정도인 막대의 강도가 강해서 압축이나 신장하기, 즉 측정된 두 차량의 상대적인 거리 값을 바꾸기 어렵게 되는 것이고 신뢰도가 떨어지는 데이터라면, 얼마든지 늘렸다 줄였다 할 수 있도록 하는 것이죠. 이와 같이 센서 신뢰도에 따라 설정된 제약에 따라 x, y값과 rotation값 모두를 바꿀 수 있게 됩니다.

계속 앞에서 부정확한 맵을 만든것처럼 계속 만듭니다. 차량 간에는 고무 막대들이 이어져 있겠죠. 한 바퀴를 돌고 난 뒤 여기서 한 가지 흥미로운 점이 생겼습니다. 이전 프레임의 데이터와 현재 프레임의 데이터가 같은 장애물을 보게 되었네요. 이것은 새로운 꼭짓점을 통한 빌드 할 수 있다는 것입니다. 서로 관계성에 의해서 정합시킬 수 있다는 것입니다.

한 가지 추가적인 제약사항을 추가합시다. 작성된 Pose Graph에서 루프를 닫을 것입니다. 왜냐하면 같은 위치의 데이터가 확인되었기 때문이죠. 그 두 개의 데이터를 한포 인트로 합치고 싶습니다. 새로 생긴 파란색 막대기는 서로 끌어당기는 텐션을 갖게 됩니다. 그렇게 하여 나머지 고무 막대들이 신뢰도에 따라 설정된 강도에 따라서 서로 데이터에 지탱하며 움직이게 됩니다. 두 점이 한 점으로 합쳐졌을 때 과거의 차량의 위치 정보 또한 좋은 정보로 재 측정됩니다.  이와 같이 한 루프 클로져에 의해서 많은 데이터를 얻게 되는 것입니다. 완벽한 환경의 모델을 차량의 포즈를 아직은 얻지 못했습니다.

차량이 계속 이동하면서 이번엔 새로운 새개의 점에서 상관관계를 갖는다고 가정합시다. 상대적으로 특징점이 적인 환경에서요. 이제 우리는 새로운 루프 클로져를 얻게 되었습니다. 다른 포즈들을 조금씩 바꾸고 옵티미제이션을 다시 실행시킬 루프 클로져입니다. 이러한 계속 추가되는 루프 클로져는 더욱 데이터에 신뢰를 얻게 합니다. 신뢰성이 높은 데이터를 얻도록 하는 것이지요.

다른 IMU나 Wheel Encoder 같은 경우에는 Pose Graph Optimization과 같이 과거에 수집했던 위치 데이터들을 바꿀 수는 없습니다. 하지만 본 포즈 그래프 옵티미제이션의 경우 가능하죠. 이것이 큰 장점입니다.

우리가 최적화시킨 맵이 있습니다. 이제, 이 데이터 점들을 이용해서 어떻게 맵을 만들 것이지 알아봅시다. 여러 방법이 있지만 Binary Occupancy Grid에 대해서 빠르게 설명하겠습니다. 이 방법의 시작은 모든 점들이 그리드로 이루어져 있다는 개념입니다. 셀을 포인트가 있다면 차 있는 것으로 판단하고 그렇지 않다면 비어있는 것으로 생각합니다. 약간의 구멍이 보이지만 이 정도의 구멍은 괜찮습니다.

 

Probablilistic Occupancy Grid라는 것도 있습니다. 1과 0 사이에 값을 지정해주어 있을 수도 있는 곳에 값을 지정해주는 방식입니다. 떨어질 수 있는 신뢰도에 의하여 탐색하지 못한 곳은 회색으로 탐지해서 없음을 확인한 곳은 흰색으로 벽이나 물건에 의해서 차 있는 곳은 검은색으로 표현하는 것입니다.

 

이렇게 SLAM의 기본적인 개념을 마쳤습니다. 다음은 Path Planning에 대해서 이야기해보도록 하겠습니다.

 


생각보다 번역하는 과정이 고되네요. 영어를 그대로 들었을 때 아는 것 같은 느낌과 정말 번역을 통해서 그 뜻을 재 정립하고 난 뒤의 이해도가 다른 것 같아요. 본 매틀랩에서 진행했던 온라인 강의자료는 끝까지 번역과 해석을 하면서 제 것으로 만들도록 하겠습니다.