이동로봇 SLAM
📌 개요
- 지도 작성에는 내 위치가 필요하고, 위치인식에는 지도가 필요함 — 그런데 처음 가 보는 건물에는 둘 다 없음
- SLAM(Simultaneous Localization and Mapping, 동시적 위치추정 및 지도작성) = 이 닭-달걀 문제를 두 가지를 동시에 추정하는 방식으로 푸는 기술 → 로봇 청소기부터 자율주행차까지 자율이동의 핵심
- 시험 출제 포인트: SLAM의 정의, 루프 폐쇄의 역할, EKF-SLAM·FastSLAM·그래프 SLAM의 특징 비교
📖 핵심 개념
SLAM이 풀려는 문제 — 닭과 달걀
-
지도 작성: 위치를 알아야 관측을 지도에 올바르게 쌓을 수 있다
-
위치인식: 지도가 있어야 관측과 대조해 위치를 알 수 있다
-
미지의 환경에서는 둘 다 없으므로, 로봇의 궤적(포즈 열)과 지도를 하나의 추정 문제로 묶어 동시에 푼다 → 이것이 SLAM
-
오도메트리의 누적 오차 때문에 "위치도 지도도 모두 조금씩 불확실한" 상태를 확률적으로 관리하는 것이 본질
SLAM 시스템의 구조 — 프론트엔드와 백엔드
현대 SLAM은 역할을 두 층으로 나눈다.
- 프론트엔드(Front-end): 센서 데이터 처리 담당 — 특징 추출, 스캔 매칭(연속 스캔 정합으로 상대 이동 추정), 데이터 연관(Data Association)(지금 본 것이 지도의 어느 것과 같은 것인지 대응 짓기), 루프 폐쇄 후보 감지
- 백엔드(Back-end): 프론트엔드가 만든 제약(구속조건)들을 모아 로봇 궤적과 지도를 전체적으로 최적화(오차 최소화)
루프 폐쇄 (Loop Closure) — SLAM의 핵심 이벤트
로봇이 한 바퀴 돌아 이전에 왔던 장소를 다시 방문했음을 인식하는 것을 루프 폐쇄라 한다.
- 루프를 도는 동안 오도메트리 오차가 누적되어, 지도상 "같은 장소"가 두 곳으로 어긋나 있다
- 루프 폐쇄가 감지되면 "여기와 거기는 같은 곳"이라는 강력한 제약이 추가되고, 백엔드가 누적 오차를 궤적 전체에 퍼뜨려 보정 — 휘어져 있던 지도가 한 번에 펴진다
- 잘못된 루프 폐쇄(다르게 생긴 곳을 같다고 판단)는 지도를 심하게 망가뜨리므로, 데이터 연관의 신뢰성이 중요하다
대표 기법 ① — EKF-SLAM
-
가장 고전적인 방법
-
상태 벡터에 로봇 포즈와 모든 랜드마크 좌표를 함께 넣고 확장 칼만 필터로 추정
-
특징지도(랜드마크) 기반
-
한계: 랜드마크가 n개면 공분산 행렬이 n^2 규모로 커져 계산량이 O(n^2) — 랜드마크가 많은 큰 환경에서는 감당이 어렵다. 데이터 연관 오류에도 취약
대표 기법 ② — FastSLAM (파티클 필터 기반)
"로봇 궤적을 알면 랜드마크들은 서로 독립"이라는 성질을 이용한 방법(라오-블랙웰라이즈드 파티클 필터).
- 로봇 궤적은 파티클 필터로, 각 파티클 안의 랜드마크들은 각각 작은 EKF로 추정
- 파티클마다 자기만의 지도를 가진 구조. 격자지도 버전이 ROS의 Gmapping으로 널리 쓰였다
대표 기법 ③ — 그래프 기반 SLAM (Graph-based SLAM)
-
현대 SLAM의 표준 접근
-
문제를 그래프로 표현
-
노드(Node) = 시각별 로봇 포즈 (필요시 랜드마크도)
-
간선(Edge) = 노드 사이의 제약 — 오도메트리(연속 포즈 간), 스캔 매칭, 루프 폐쇄(멀리 떨어진 포즈 간)
-
백엔드가 "모든 간선의 오차 제곱합이 최소가 되는 노드 배치"를 찾는 그래프 최적화(비선형 최소제곱)를 수행
-
루프 폐쇄 반영이 자연스럽고 대규모 환경에 강해, 구글 Cartographer 등 현대 시스템 대부분이 이 구조다
| 구분 | EKF-SLAM | FastSLAM | 그래프 SLAM |
|---|---|---|---|
| 핵심 도구 | 확장 칼만 필터 | 파티클 필터+EKF | 그래프 최적화 |
| 지도 형태 | 랜드마크 | 파티클별 지도(격자 가능) | 포즈 그래프 + 지도 |
| 확장성 | 낮음 (O(n^2)) | 중간 | 높음 (현대 표준) |
센서에 따른 SLAM의 갈래
- LiDAR SLAM: 거리 정확, 조명 무관. Gmapping(2D), Cartographer(2D/3D) 등
- 비주얼 SLAM(Visual SLAM): 카메라 사용 — 저렴하고 정보가 풍부하지만 조명·질감에 민감. ORB-SLAM 계열이 대표
- VIO(Visual-Inertial Odometry): 카메라 + IMU 융합으로 강인성을 높인 방식 — 드론·AR에서 표준
SLAM의 출력과 활용
- SLAM의 결과물 = 환경 지도 + 로봇 궤적
- 실무에서는 보통 SLAM으로 지도를 한 번 만들어 저장한 뒤, 평상시 운행에서는 그 지도로 위치인식(AMCL 등)만 수행하는 "지도 작성 모드 / 주행 모드" 분리 운영이 일반적
📊 다이어그램 · 수식
SLAM 시스템 구조
flowchart LR
S["센서
LiDAR·카메라·IMU·엔코더"] --> F["프론트엔드
특징 추출·스캔 매칭
데이터 연관·루프 폐쇄 감지"]
F -- "제약(구속조건)들" --> B["백엔드
그래프 최적화
(오차 제곱합 최소화)"]
B --> M["지도 + 로봇 궤적"]
M -. "다음 데이터 연관에 재사용" .-> F그래프 SLAM의 최적화 목표
포즈들 x = (x_1, \dots, x_n)에 대해, 각 간선(제약) (i,j)의 관측 z_{ij}와 예측 오차 e_{ij}(x_i, x_j)의 가중 제곱합을 최소화:
(\Omega_{ij}: 정보 행렬 = 그 제약의 신뢰도). "모든 제약을 최대한 만족하는 궤적 배치 찾기"라는 구조만 이해하면 된다.
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. SLAM(Simultaneous Localization and Mapping)에 대한 설명으로 옳은 것은?
① 완성된 지도가 있을 때 위치만 추정하는 기술이다 ② 위치를 정확히 아는 상태에서 지도만 작성하는 기술이다 ③ 미지의 환경에서 위치추정과 지도작성을 동시에 수행하는 기술이다 ④ 경로계획과 충돌회피를 동시에 수행하는 기술이다
정답 및 해설
정답: ③ SLAM은 지도도 위치도 없는 상태에서 둘을 하나의 추정 문제로 묶어 동시에 푸는 기술이다. ①은 위치인식(localization), ②는 known-pose mapping에 해당한다.
2. SLAM에서 루프 폐쇄(loop closure)의 역할로 가장 적절한 것은?
① 로봇의 배터리 소모를 줄인다 ② 재방문을 인식해 누적된 오차를 궤적 전체에 걸쳐 보정한다 ③ 지도의 해상도를 높인다 ④ 센서의 측정 주기를 단축한다
정답 및 해설
정답: ② 루프를 도는 동안 쌓인 오도메트리 오차로 어긋난 지도를, "여기와 거기는 같은 장소"라는 제약을 추가해 한 번에 펴 주는 것이 루프 폐쇄다. 잘못된 루프 폐쇄는 반대로 지도를 크게 망가뜨린다.
3. EKF-SLAM의 한계로 옳은 것은?
① 랜드마크 수가 늘어나면 계산량이 O(n^2)으로 증가한다 ② 격자지도만 사용할 수 있다 ③ 확률적 표현을 사용하지 않는다 ④ 오도메트리 정보를 이용할 수 없다
정답 및 해설
정답: ① 상태 벡터에 모든 랜드마크가 들어가므로 공분산 행렬이 랜드마크 수의 제곱 규모로 커진다. 이 확장성 문제 때문에 대규모 환경에서는 FastSLAM·그래프 SLAM이 쓰인다.
4. 그래프 기반 SLAM에서 노드(node)와 간선(edge)이 나타내는 것은?
① 노드: 장애물, 간선: 빈 공간 ② 노드: 시각별 로봇 포즈, 간선: 포즈 간의 제약(오도메트리·루프 폐쇄 등) ③ 노드: 센서, 간선: 통신선 ④ 노드: 격자 셀, 간선: 셀 사이 거리
정답 및 해설
정답: ② 포즈 그래프의 노드는 궤적 위의 포즈, 간선은 두 포즈 사이의 상대 관계 제약이다. 백엔드가 모든 제약의 오차 제곱합을 최소화하는 포즈 배치를 찾는다(그래프 최적화).
5. SLAM 시스템에서 프론트엔드(front-end)가 담당하는 작업이 아닌 것은?
① 센서 데이터에서 특징 추출 ② 스캔 매칭으로 상대 이동 추정 ③ 루프 폐쇄 후보 감지 ④ 전체 궤적의 그래프 최적화
정답 및 해설
정답: ④ 그래프 최적화(오차 최소화)는 백엔드의 역할이다. 프론트엔드는 센서 처리·데이터 연관·제약 생성을 담당하고, 백엔드가 그 제약들로 전체를 최적화한다.
🔗 관련 노트
- 이동로봇 지도 작성 — SLAM의 출력물인 지도의 표현
- 이동로봇 위치인식 — EKF·파티클 필터 등 추정 도구의 기초
- 이동로봇 전역 경로계획 — 완성된 지도의 활용처
- 로봇센서 작동 원리 — LiDAR·카메라·IMU의 원리
- _MOC 모션소프트웨어