티스토리 뷰

반응형

새벽 4시, 공항 3층 출국장. 청소가 끝난 로비에 사람은 없고 조명은 절반만 켜져 있다. 순찰 로봇 한 대가 방금 전원을 켰다. 이 로봇은 자기가 공항 어디쯤 서 있는지 모른다. 공항이 어떻게 생겼는지도 모른다. 가진 것이라고는 앞을 보는 카메라와, 바퀴가 몇 바퀴 돌았는지 세는 센서뿐이다.

그런데 30분 뒤 이 로봇은 출발한 자리로 정확히 돌아와야 한다. 게이트 42번 앞에서 의심스러운 가방을 발견했다면 그 위치를 관제실에 좌표로 보고해야 한다. "저쪽 어디쯤"이 아니라 "여기서 북동쪽 38.5m"라고 말할 수 있어야 한다.

이 로봇이 풀어야 하는 문제에 이름이 붙어 있다. SLAM(Simultaneous Localization and Mapping), 우리말로는 동시적 위치추정 및 지도작성이다. 이름이 길지만 뜯어보면 단어 두 개다. 내 위치를 알아내는 일지도를 그리는 일, 그리고 그 둘을 동시에 한다는 것.

이 시리즈는 수식을 논문에 나오는 형태 그대로 쓴다. 대신 기호를 하나씩 뜯고, 실제 숫자를 넣어 계산하고, 그 식이 왜 하필 그 모양인지까지 설명한다. 필요한 수학은 필요해지는 자리에서 만든다. 이번 글에 필요한 건 중학교 비율 계산 하나뿐이다.


1. 불 꺼진 방에서 벌어지는 일

한밤중에 낯선 집에서 잠이 깼다고 해보자. 조명 스위치가 어디 있는지 모르고 방 구조도 모른다. 우리는 이럴 때 무의식적으로 두 가지를 번갈아 한다. 먼저 손을 뻗어 벽을 만진다. "오른쪽에 벽이 있다." 방의 구조를 조금 알아낸 것이다. 그다음 벽을 따라 세 걸음 걷는다. "나는 아까보다 세 걸음 앞에 있다." 내 위치를 갱신한 것이다. 다시 손을 뻗으면 이번엔 모서리가 잡힌다. "세 걸음 앞에 모서리가 있다."

여기서 중요한 건 두 번째 발견이 첫 번째에 기대고 있다는 점이다. 모서리의 위치를 "세 걸음 앞"이라고 적으려면 내가 세 걸음 걸었다는 사실이 맞아야 한다. 반대로 내가 지금 어디 있는지 확인하려면 아까 만졌던 벽이 어디 있었는지를 알아야 한다. 지도가 있어야 위치를 알고, 위치를 알아야 지도를 그린다. 둘 다 없는 상태에서 둘 다 만들어야 한다.

내 위치를 안다 LOCALIZATION 지도를 그린다 MAPPING 위치를 알아야 랜드마크 좌표를 적는다 지도가 있어야 내 위치를 확인한다 SLAM
그림 1. 닭이 먼저냐 달걀이 먼저냐. SLAM은 이 순환을 한 번에 푸는 문제다.

다만 이 비유는 한 지점에서 깨진다. 사람은 "세 걸음 걸었다"를 대충 믿고 넘어간다. 틀렸다는 걸 느끼지 못하기 때문이다. 로봇은 다르다. 로봇은 자기가 얼마나 틀렸을 수 있는지를 숫자로 들고 다녀야 한다. 그리고 바로 그 차이 때문에 SLAM은 확률로 쓰인다.


2. 수식으로 정리하기

"위치와 지도를 동시에 알아낸다"는 문장을 수학으로 옮기면 이렇게 된다. SLAM을 다루는 거의 모든 논문의 도입부에 이 식이 있다.

EQ-01 · SLAM 문제의 정의
$$ P\left(x_{1:t},\, m \;\middle|\; z_{1:t},\, u_{1:t}\right) $$

낯설어 보이지만 읽는 법만 알면 문장 하나다. 세로줄을 기준으로 오른쪽은 우리가 가진 것, 왼쪽은 우리가 알고 싶은 것이다. "센서로 본 것과 바퀴에 내린 명령이 이러이러할 때, 로봇이 지나온 자리와 방의 구조가 이럴 확률"이라고 읽는다.

기호읽는 법정체크기
$x_t$엑스 티 시각 $t$ 에서 로봇의 자세. 위치(앞뒤·좌우·높이)와 방향(어디를 보고 있는지)을 함께 묶은 값 6
$x_{1:t}$엑스 원 투 티 1번 시각부터 $t$ 번 시각까지의 자세 전부. 마지막 위치만이 아니라 지나온 궤적 전체 6t
$m$ 지도(map). 방 안 특징들의 3차원 좌표 모음. 특징이 $N$ 개면 좌표가 $N$ 쌍 3N
$z_{1:t}$제트 원 투 티 관측(measurement). 사진 속에서 "그 모서리가 화면 어디에 찍혔는지" 같은 값들 가변
$u_{1:t}$유 원 투 티 제어 입력(control). 바퀴를 얼마나 돌렸는지, 어느 쪽으로 얼마나 가라고 명령했는지 가변
$P(A \mid B)$피 에이 기븐 비 $B$ 가 사실일 때 $A$ 일 확률. 조건부 확률 스칼라

기호를 다 채워 넣고 다시 읽으면 이렇게 된다. "지금까지 찍은 사진들과 지금까지 바퀴에 내린 명령을 전부 알 때, 내가 지나온 길과 이 방의 생김새가 이러할 확률." SLAM 알고리즘이 하는 일은 이 확률을 가장 크게 만드는 $x_{1:t}$ 와 $m$ 의 조합을 찾는 것이다.

왜 마지막 위치만 구하지 않고 궤적 전체를 구할까

지금 위치만 알면 될 것 같지만 지도가 걸려 있어서 그럴 수 없다. 지도의 모든 점은 "어느 시점의 로봇이 어디서 봤는가"를 기준으로 찍혔다. 10분 전 자세가 틀렸다면 그때 찍은 지도 점들도 전부 틀린 자리에 있다.

그래서 나중에 "아, 여기 아까 왔던 데다"라는 사실을 알아차리면 지금 위치뿐 아니라 과거 궤적 전체를 뒤로 돌아가 고쳐야 한다. 고칠 대상이 남아 있어야 고칠 수 있으니 궤적 전체를 미지수로 들고 있는 것이다. 이 되돌아가 고치는 작업이 나중에 다룰 루프 클로저다.


3. 손으로 돌려보기

"그냥 바퀴 회전수를 세면 되는 거 아닌가?" 실제로 그것만 쓰는 방식이 있다. 바퀴 회전으로 이동량을 추정하는 걸 오도메트리(odometry)라고 한다. 문제는 이게 얼마나 빨리 망가지느냐다. 두 가지 오차를 각각 계산해 보자.

바퀴 크기가 미세하게 다를 때

타이어 공기압이 조금 빠지거나 마모되면 실제 반지름이 설계값과 달라진다. 2% 작아졌다고 하자. 로봇은 바퀴가 100m어치 돌았다고 계산하지만 실제로는 98m만 간다.

EQ-02 · 스케일 오차
$$ e_{\text{scale}} = L \times 0.02 = 100\,\text{m} \times 0.02 = 2\,\text{m} $$

100m 직진에 2m가 틀린다. 게이트 하나를 통째로 건너뛰는 거리다. 더 나쁜 건 이 오차가 거리에 비례해 계속 커진다는 점이다. 200m 가면 4m, 1km 가면 20m다.

방향이 1도 틀어졌을 때

이쪽이 훨씬 무섭다. 좌우 바퀴 반지름이 아주 조금만 달라도 로봇은 자기가 직진한다고 믿으면서 실제로는 완만한 호를 그린다. 헤딩이 딱 $1^\circ$ 만 틀어진 채로 100m를 갔다고 하면 옆으로 벌어지는 거리는 이렇게 나온다.

EQ-03 · 방향 오차가 만드는 횡방향 이탈
$$ e_{\text{lat}} = L\sin\theta = 100\,\text{m} \times \sin(1^\circ) = 100 \times 0.01745 = 1.75\,\text{m} $$
출발 로봇이 믿는 경로 실제 경로 1.75 m 100 m 각도는 보기 쉽게 과장했습니다
그림 2. 1도는 눈으로 알아채기 어렵지만 100m 끝에서는 복도 폭의 절반이 된다.

각도 1도는 눈으로 보면 거의 알아챌 수 없는 크기다. 그런데 100m 끝에서는 1.75m가 된다. 복도 폭의 절반이고 벽에 부딪히기 충분한 거리다. 게다가 방향 오차는 한 번 생기면 되돌아오지 않는다. 계속 걸으면 계속 벌어진다. 이렇게 시간이 갈수록 조용히 커지는 오차를 드리프트(drift)라고 부른다.

주행 거리바퀴 2% 오차헤딩 1° 오차
10 m0.2 m0.17 m
100 m2 m1.75 m
500 m10 m8.7 m
1 km20 m17.5 m

그래서 바퀴만으로는 안 된다. 가끔 바깥을 봐야 한다. 기둥이나 안내판처럼 움직이지 않는 특징을 눈으로 확인하고 "아, 내가 생각보다 왼쪽에 있었구나" 하고 고쳐야 한다. 이렇게 위치 보정의 기준이 되어주는 고정된 특징을 랜드마크(landmark)라고 하고, 랜드마크들의 좌표를 모아둔 것이 바로 EQ-01의 $m$ 이다.


4. 왜 이 모양인가

진짜 중요한 건 쉼표 하나다

EQ-01을 다시 보면 세로줄 왼쪽에 $x_{1:t}$ 와 $m$ 이 쉼표로 묶여 있다. $P(x)$ 와 $P(m)$ 을 따로 쓴 게 아니다. 이 쉼표가 SLAM이라는 분야가 존재하는 이유 전부다.

만약 지도를 이미 정확히 알고 있다면 위치만 구하면 된다. 이건 위치추정이고 훨씬 쉬운 문제다. 반대로 로봇의 위치를 매 순간 정확히 알 수 있다면, 예를 들어 천장에 모션캡처 카메라가 깔려 있다면 지도만 그리면 된다. 이것도 별도로 풀린 문제다. SLAM이 어려운 건 둘 중 무엇도 미리 주어지지 않기 때문이다. 내 위치 추정이 틀리면 지도가 그만큼 틀어지고, 틀어진 지도로 위치를 보정하면 더 틀어진다. 오차가 서로를 오염시킨다. 쉼표는 "이 둘은 한 덩어리로 풀어야 한다"는 선언이다.

조건 쪽에 있는 것이 전부다

세로줄 오른쪽도 눈여겨볼 만하다. 거기엔 $z$ 와 $u$ 밖에 없다. 로봇이 세상에 대해 가진 정보가 그게 전부이기 때문이다. 눈으로 본 것, 그리고 자기가 몸에 내린 명령. GPS도, 도면도, 사전 지식도 없다. 이 식은 "이것만 가지고 저것을 알아내라"는 문제 선언문이다.

왜 등호가 아니라 확률인가

로봇의 모든 측정에는 오차가 있다. 답을 하나로 못 박아버리면 나중에 새 정보가 들어와도 고칠 근거가 없어진다. "여기일 확률이 높지만 30cm 정도는 틀릴 수 있다"고 들고 다녀야, 나중에 랜드마크를 다시 만났을 때 얼마나 믿고 얼마나 고칠지를 계산할 수 있다. 이 "얼마나 틀릴 수 있는지"를 다루는 도구가 가우시안 분포이고, 시리즈 중반에 제대로 꺼내 쓴다.


5. 실무에서 걸리는 것들

넓은 실내가 가장 어렵다

공항이나 호텔 로비처럼 넓고 천장이 높은 실내는 SLAM에게 가장 가혹한 환경 중 하나다. 벽이 멀어서 깊이 센서의 유효 거리를 벗어나고, 바닥과 천장은 무늬가 없어 랜드마크로 쓸 특징이 잘 잡히지 않는다. 좁은 사무실에서 잘 돌던 알고리즘이 공항에서 처음 무너지는 이유가 대개 이것이다.

비슷하게 생긴 곳이 반복되면 착각한다

게이트가 늘어선 복도는 어느 구간이든 비슷하게 생겼다. 로봇이 "여기 아까 왔던 데다"라고 잘못 판단하면 지도 전체가 접혀버린다. 드리프트보다 이쪽이 훨씬 치명적이다. 드리프트는 서서히 나빠지지만 잘못된 루프 클로저는 한 번에 지도를 망친다.

랜드마크가 움직이면 곤란해진다

EQ-01의 $m$ 은 움직이지 않는다는 전제 위에 서 있다. 그런데 실제 공항에는 사람과 카트가 돌아다닌다. 지나가는 사람을 랜드마크로 잡으면 그 사람이 움직인 만큼 로봇이 자기 위치를 잘못 고친다. 움직이는 것을 골라내는 일이 실전 SLAM의 큰 부분을 차지한다.


6. 한 장 요약

주어진 것구하는 것난이도
위치추정지도 $m$궤적 $x_{1:t}$보통
지도작성궤적 $x_{1:t}$지도 $m$보통
SLAM$z_{1:t}, u_{1:t}$ 뿐둘 다어려움

핵심은 세 가지다. 첫째, SLAM은 지도와 내 위치를 동시에 알아내는 문제이고, 둘 중 하나만 주어져도 훨씬 쉬운 다른 문제가 된다. 둘째, 바퀴 회전만 세면 오차가 드리프트로 쌓인다. 방향이 1도만 틀어져도 100m 끝에서 1.75m가 벌어진다. 셋째, 그래서 로봇은 눈으로 바깥의 랜드마크를 봐야 하고, 답을 하나로 못 박는 대신 확률로 들고 다닌다.

그런데 "눈으로 본다"는 게 정확히 무슨 뜻일까. 카메라는 3차원 세상을 납작한 사진 한 장으로 눌러 담고, 그 과정에서 거리 정보가 사라진다. 다음 글에서는 그 눌러 담기가 어떤 계산으로 일어나는지를 본다. 3차원 점 하나를 손으로 직접 픽셀 좌표까지 옮겨볼 것이다.


7. 확인 문제

  1. 바퀴 반지름 오차가 1%일 때 500m를 주행하면 위치 오차는 얼마인가?
  2. 헤딩이 $0.5^\circ$ 틀어진 채로 200m를 가면 횡방향 이탈은 얼마인가?
  3. 왜 $x_t$ 하나가 아니라 $x_{1:t}$ 전체를 미지수로 두는지 한 문장으로 써보라.
  4. 천장에 모션캡처가 깔린 실험실에서 로봇을 돌리면, SLAM은 어떤 문제로 바뀌는가?
  5. 지나가는 사람을 랜드마크로 잡았을 때 로봇의 위치 추정에 정확히 무슨 일이 벌어지는가?

참고 자료

  • Durrant-Whyte & Bailey (2006), Simultaneous Localization and Mapping: Part I / Part II — SLAM 문제 정식화의 고전 튜토리얼
  • Cadena et al. (2016), Past, Present, and Future of SLAM: Towards the Robust-Perception Age — 분야 전체 조망
  • Thrun, Burgard & Fox, Probabilistic Robotics — 1~3장, 확률적 정식화의 교과서
  • changh95, visual-slam-roadmap — 이 시리즈가 따라가는 학습 로드맵
← 이전 · 없음 (시리즈 첫 글) 다음 · 1. 카메라는 3D를 어떻게 2D로 만드나 →
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/09   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함