본문 바로가기
자율주행

[01] SLAM?

by 너티드코오딩 2023. 12. 28.

 

SLAM은 Simultaneous Localization and Mapping 의 약자로, 동시적 위치추정 및 지도작성을 뜻한다.

 

SLAM을 제대로 이해하기 앞서 먼저 로봇의 동작부터 이해를 해야한다.

산업용 로봇

 

우리가 잘 알고 있는 로봇말고, 산업용 로봇을 한번 살펴보면 산업용 로봇은 대체로 몸통이 붙어 있고 손이움직이는 형태이다. 위에 그림처럼 몸은 고정되어 있고, 손이 움직이는데 보다시피 여러 로봇이 아주 빽빽하게 붙어있다.

산업용로봇은 1959년에 처음으로 보급이 되기 시작했는데, 산업용 로봇의 중요한 점은 얘가 바로 3단계의 제어 과정을 거친다는 것이다.

 

로봇의 3단계 과정: 인지-판단-제어 

 

사물을 인지하고, 어떻게 해야할지 판단하며 이를 실제로 제어하는 행동을 하는 것이 로봇의 3단계 과정이다.

 

하지만 이러한 산업용로봇에서도 큰 한계가 있었는데, 바로 움직일 수 없다는 것이었다.

 

움직일 수 없기 때문에 고난이도의 작업은 수행할 수 없게 되었고, 그 자리에서 할 수 있는 조립과 같은 일들을 로봇이 하게 되었으며 일렬로 쭈욱 빽빽하게 붙여서 배치함으로써 움직일 수 없는 한계를 극복했다.

하지만 결국 이는 효율의 문제를 가져오게 된다. 비싼 로봇을 빽뺵하게 배치해서 그 자리에서 밖에 못쓰게 된 것이다.

 

이를 극복하고자, 로봇에 다양한 시도를 하게 된다.

레일로 움직이는 산업용 로봇

 

바로 움직이도록 하는 것.

몸통 아래에 레일을 두어 좌우로 움직일 수 있도록 하는 방법이 개발되거나, Caterpillar, 한글로 애벌레인데 마치 애벌레의 움직임처럼 움직일 수 있는 로봇을 개발하게 된다.

다리가 있는 로봇

더 나아가, 바퀴, 다리를 로봇에 붙여서 작동하게 만들면서 로봇을 움직이도록 하는데 치중하게 되는데 이것이 바로 모바일 로보틱스의 시작이다.

 

결국 모바일 로보틱스는 로봇을 움직일 수 있도록 하는 것이다. 다만, 로봇이 스스로! 알아서! 움직여야 하는데 이 과정을 사람이 움직이는 것과 비교해서 생각해보자. 사람의 움직임에 대한 인지과정을 한 단계씩 살펴보자.

 

사람의 인지과정: 앞으로 10m를 가야한다 → 2m 앞에 큰 벽이 있다 → 벽을 우회해서 가야겠다 → 목적지 도착

 

사람은 이런 인지과정을 아주 자연스럽게 거쳐 목적지까지 진행하게 된다. 이 움직임을 로봇이 스스로 판단을 내려 하도록 하는 것이 모바일 로보틱스의 핵심이다.

 

즉 로봇의 3대 단계 과정인 인지-판단-제어 가 진행되어야 한다는 것이다.

 

따라서 로봇은 목적이 필요하며, 움직임에 대한 공간을 인식해야 하고, 해당 움직임이 자동화되어야 한다.

로봇이 해당 공간이 이동할 수 있는 공간인지 파악하고, 벽이나 장애물을 인지하고, 로봇이 움직일 수 있는 공간을 찾도록 하는 것이 필요하다.

 

이를 위해 인지 과정에서는 대표적으로 센서가 활용된다.

 

센서는 크게 2가지로 분류된다.

 

외부 감각 센서와, 자각 감각 센서(내부 센서로 칭할 수 있음)로 나뉘는데 각각의 역할이 다르다.

외부 감각 센서는 쉽게 말해서 로봇 바깥의 상황을 파악하는데 활용한다. 카메라, LiDAR, Radar 마이크 등등 '로봇' 말고 다른 환경이 어떨까? 를 고려할 때 사용한다. 쉽게 말해서 앞에 벽이 있는지 없는지도 외부 감각 센서로 아는 것.

사람으로 따지면 눈, 코, 입 과 같이 외부 환경을 파악할 때 활용하는 것을 말한다.

 

자각 감각 센서는 로봇의 내부 상황을 파악하는데 활용한다. GPS로 로봇 위치가 어딘지? 내가 회전하는지? 지금 속도가 어떤지? '로봇'의 상태를 파악하는 데 활용한다는 것이다.

 

이렇게 2개의 센서가 복합적으로 작용을 하여 로봇은 '인지'를 한다

인지 후 이동 원리

 

'인지'와 이동의 관계를 살펴보면, 센서를 통해서 값들을 파악하고 이동을 한다. 이 과정을 무한정 반복하여 이동하는 것이 로봇의 이동 원리이다. 사람과 유사하지 않은가?

사람도 이동 목적을 갖고, 앞에 벽이 있는지, 장애물이 있는지 파악하고 이동을 하고 그 과정이 거의 동시에 일어나서 마치 이런 과정을 거치는지 조차 모르는 것이다.

 

하지만 이 과정에서 크나큰 단점이 하나 있는데 바로 '오차' 다.

센서의 값이 오차가 있다면? 

센서 오류

예를 들어, 실제 10m 앞에 벽이 있는데, 로봇의 센서가 감지를 잘못해서 15m 앞에 벽이 있다고 판단해서 14m를 직진하게 된다면 로봇은 벽에 부딪치고 말 것이다. 

물론 이런 큰 오차는 거의 없지만 cm 단위까지의 오차를 줄이고자 하는 자율주행에서 오차는 정말 큰 문제가 될 수 있다.

 

이런 문제를 극복하기 위해 센서를 100개를 달아서 100개의 값의 평균, 중앙값등을 활용하는 경우도 있었지만, 시간이 많이 소요되고 움직이면서 동시에 진행되지 못하는 문제가 발생했다. 궁극적으로 자율주행에서 쓸 수 없는 것이다.

 

그래서 바로 Localization과 Mapping에 대한 개념이 등장한다

Localization(위치 인식): 로봇이 자신의 위치를 파악하는 과정으로, GPS, IMU 등을 통해서 자신의 위치를 파악하는 과정으로, 사전에 만들어진 고정밀 지도를 대조해 내 위치를 추정한다.

쉽게 말해서 아주 정확한 지도를 가지고 내 위치와 대조해서 아 내가 여기구나! 하는 거다.

 

Mapping(지도 작성): 아주 정확한 위치정보가 있을 때, 지도를 만드는 것으로 생각하면 된다. 고정밀 위치정보로 최적의 지도를 만드는 것. MMS 측량과 같이 3D Point Clouds 등을 활용해서 지도를 만드는 과정이라고 생각하면 된다.

 

이것이 자율주행에서 어떻게 활용이 되는지 살펴보면

Localization: 사전에 만들어진 고정밀 지도(HD-Map, 정밀도로지도)를 비교해서 내 위치를 추정함

Mapping: MMS, LiDAR가 달린 측량 장치를 활용해서 정확한 위치 정보를 기반으로 HD-Map, 정밀도로지도를 제작함

으로 생각할 수 있다.

 

그리고 이 두가지를 동시에 수행하는 기술이 SLAM 이다.

즉, 사람의 인지처럼 처음 보는 환경에서 내 위치를 파악하고, 지도를 만드는 것으로, 지도가 없는 상태에서도 환경을 탐색해서 지도를 만들고 내 위치를 업데이트 하는 관계를 뜻한다.

 

자율주행에서 SLAM 이 활용되는 것을 생각해보면

공간에 대한 인지: 여기 벽이 있어? 여기 장애물이 있어? 

내 위치에 대한 인지: 여기가 어디지?

이 두 작업이 무수히 반복된다고 생각하면 된다.

 

하지만 이렇게 끝나면 뭔가 부족하기 때문에 최근에는 딥러닝 기반의 학습과 접목되어 Semantic Landmark와 같이 새로운 학습 결과를 도출하고 있다.

 

마치 사람처럼, 아 지금 내가 인식한 저 선은 중앙선이야! 넘으면 안돼!

같은 선처럼 보이지만 이건 주차선이야. 이 안에 내가 주차를 해야해.

 

이렇게 SLAM 과 딥러닝이 접목되어 자율주행이 비로서 완성되는 것이다.

'자율주행' 카테고리의 다른 글

[02] SLAM 종류  (1) 2023.12.28