이동로봇 지도 작성
📌 개요
- 지도 = 전역 경로계획의 입력이자 위치인식의 기준
- 이동로봇의 지도 작성(Mapping) = 센서로 관측한 주변 환경을 컴퓨터가 다룰 수 있는 데이터 구조로 표현하는 일 → 어떤 표현을 고르느냐가 메모리·계산량·활용 방법을 결정
- 시험 출제 포인트: 격자지도(점유 확률, 미지 영역 0.5)·특징지도·위상지도의 비교, 격자 해상도와 메모리의 관계
📖 핵심 개념
지도는 왜 필요한가
- 전역 경로계획: 지도가 있어야 출발→목표의 길을 미리 찾을 수 있다 (→ 이동로봇 전역 경로계획)
- 위치인식: "센서로 본 모습"과 "지도"를 대조해 내가 어디 있는지 알아낸다 (→ 이동로봇 위치인식)
- 지도가 없다면? 위치인식과 지도 작성을 동시에 해야 한다 — 그것이 SLAM이다
지도 표현 방법 ① — 격자지도 (Occupancy Grid Map)
-
공간을 일정 크기의 격자 셀(cell) 로 잘게 나누고, 셀마다 점유 확률(Occupancy Probability) — 그 자리에 장애물이 있을 확률 — 을 저장하는 방식
-
이동로봇 실무에서 가장 널리 쓰임
-
1에 가까움 = 점유(장애물), 0에 가까움 = 비점유(빈 공간)
-
아직 관측하지 못한 미지(Unknown) 영역은 0.5 — "있는지 없는지 모른다"의 확률적 표현 (단골 출제)
-
장점: 경로계획(A* 등)·충돌 검사에 바로 사용 가능, 임의 형상 표현 가능, 센서 융합이 자연스러움
-
단점: 메모리 사용량이 크다 — 해상도(셀 크기)를 높일수록 급증
2차원 격자에서 셀 한 변의 길이를 절반으로 줄이면(해상도 2배) 셀 개수는 4배(2^2), 3차원이라면 8배(2^3)가 된다. 같은 100 m × 100 m 공간도 셀 10 cm면 백만 셀, 5 cm면 4백만 셀이다.
- 셀 값은 관측이 쌓일 때마다 베이즈 규칙으로 갱신 — 확률 곱셈을 덧셈으로 바꿔 주는 로그 오드(log-odds) 표현을 써서 셀마다 값을 더하고 빼는 것만으로 갱신
- 3차원 환경은 같은 아이디어를 팔진트리(octree)로 구현한 OctoMap이 대표적
지도 표현 방법 ② — 특징지도 (Feature Map)
-
환경 전체가 아니라 구별되는 특징(랜드마크, Landmark)의 위치만 저장하는 방식
-
기둥, 코너, 반사판, 시각 특징점 등이 랜드마크가 됨
-
장점: 데이터가 매우 간결하다 (랜드마크 좌표 목록이 전부), EKF 기반 위치인식·SLAM과 궁합이 좋다
-
단점: 랜드마크가 없는 곳은 표현하지 못하므로 빈 공간 정보가 없어 경로계획에 바로 쓰기 어렵다
지도 표현 방법 ③ — 위상지도 (Topological Map)
-
기하학적 좌표 대신 장소(노드)와 연결 관계(간선) 만 담는 그래프 지도
-
"방 A — 복도 — 방 B"처럼 지하철 노선도와 같은 발상
-
장점: 메모리가 극히 적고, 넓은 환경에서 빠른 경로 탐색(그래프 탐색)이 가능하며, "어느 방으로 가라" 같은 상위 작업 계획과 잘 맞는다
-
단점: 정밀한 기하 정보(장애물의 정확한 위치·거리)가 없어 정밀 주행·회피에는 부적합
실무에서는 격자지도(정밀 주행) + 위상지도(층·구역 간 계획) 를 섞은 하이브리드 지도도 흔하다.
세 표현의 비교
| 구분 | 격자지도 | 특징지도 | 위상지도 |
|---|---|---|---|
| 저장 내용 | 셀별 점유 확률 | 랜드마크 좌표 | 장소 노드 + 연결 간선 |
| 메모리 | 크다 | 작다 | 매우 작다 |
| 기하 정밀도 | 높다 (해상도만큼) | 랜드마크 위치만 | 낮다 |
| 주 용도 | 경로계획·충돌 검사 | EKF 위치인식/SLAM | 대규모·상위 수준 계획 |
지도 작성 과정 (포즈를 알고 있을 때)
위치를 아는 상태에서의 지도 작성(Mapping with Known Poses)은 다음 반복이다.
- 현재 로봇 포즈에서 센서(주로 LiDAR) 관측 획득
- 관측을 월드 좌표계로 변환 — 변환행렬이 그대로 쓰인다
- 센서 빔이 통과한 셀은 "비점유" 쪽으로, 부딪힌 셀은 "점유" 쪽으로 확률 갱신 (역센서 모델, Inverse Sensor Model)
- 로봇이 이동하며 1~3을 반복 → 지도가 점점 채워진다
현실에서는 포즈 자체에 오차가 있으므로(오도메트리 드리프트), 정확한 지도를 만들려면 SLAM이 필요하다.
지도 파일의 형태 (ROS 예)
- ROS의
map_server는 격자지도를 이미지 파일(PGM) + 메타데이터(YAML) 로 저장 - YAML에는 해상도(m/셀), 원점 좌표, 점유/비점유 판정 임계값이 들어 있음 — "지도 = 이미지 + 좌표 정보"라는 감각을 잡아 두자
📊 다이어그램 · 수식
지도 표현의 분류
graph TD
A["이동로봇 지도 표현"] --> B["격자지도
셀별 점유 확률
(경로계획 표준)"]
A --> C["특징지도
랜드마크 좌표 목록
(EKF 계열과 궁합)"]
A --> D["위상지도
노드·간선 그래프
(대규모·상위 계획)"]
B --> E["3D 확장: OctoMap
(팔진트리)"]점유 확률의 로그 오드 갱신
확률 p의 로그 오드는
이며 (p=0.5 \leftrightarrow l=0, 즉 미지 상태), 셀마다 관측이 들어올 때 로그 오드를 덧셈으로 누적한다:
곱셈(베이즈 갱신)을 덧셈으로 바꿔 계산을 가볍게 만든 것이 핵심이다.
격자 수 계산
한 변 L인 정사각형 영역을 셀 크기 r로 나누면:
예: 100\,\text{m} \times 100\,\text{m}, 셀 0.05\,\text{m} → (100/0.05)^2 = 2000^2 = 4 \times 10^6 셀.
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. 점유 격자지도(Occupancy Grid Map)에서 아직 한 번도 관측되지 않은 영역의 셀 값으로 가장 적절한 것은?
① 0 ② 0.5 ③ 1 ④ −1
정답 및 해설
정답: ② 점유 확률 0은 "확실히 빈 공간", 1은 "확실히 장애물"이므로, 아무 정보가 없는 미지 영역은 중간값 0.5로 둔다. 로그 오드로는 0에 해당한다.
2. 2차원 격자지도의 셀 한 변 길이를 10 cm에서 5 cm로 줄이면 전체 셀 개수는 몇 배가 되는가?
① 2배 ② 4배 ③ 8배 ④ 16배
정답 및 해설
정답: ② 한 변당 셀 수가 2배가 되고 2차원이므로 2^2 = 4배. 3차원 지도라면 2^3 = 8배가 된다. 해상도를 올릴수록 메모리가 급증하는 이유다.
3. 장소를 노드로, 장소 간 연결 관계를 간선으로 표현하는 지도는?
① 격자지도 ② 특징지도 ③ 위상지도 ④ 포인트클라우드 지도
정답 및 해설
정답: ③ 위상지도(topological map)는 지하철 노선도처럼 연결 관계만 담는 그래프 지도다. 메모리가 적고 대규모 환경의 경로 탐색이 빠르지만, 정밀한 기하 정보가 없다.
4. 격자지도 작성 시 역센서 모델(inverse sensor model)의 갱신 규칙으로 옳은 것은?
① 센서 빔이 통과한 셀은 점유 쪽으로 갱신한다 ② 센서 빔이 부딪힌 셀은 비점유 쪽으로 갱신한다 ③ 빔이 통과한 셀은 비점유, 부딪힌 셀은 점유 쪽으로 갱신한다 ④ 모든 셀을 동일하게 0.5로 유지한다
정답 및 해설
정답: ③ 레이저가 지나갔다면 그 경로는 비어 있다는 뜻이고, 반사되어 돌아왔다면 그 끝점에 장애물이 있다는 뜻이다. 이 관측을 로그 오드 덧셈으로 셀에 누적한다.
5. EKF 기반 위치인식·SLAM과 궁합이 좋고, 랜드마크의 좌표 목록만으로 환경을 표현하는 지도는?
① 격자지도 ② 특징지도 ③ 위상지도 ④ 코스트맵
정답 및 해설
정답: ② 특징지도는 상태 벡터에 랜드마크 좌표를 넣어 추정하는 EKF 계열 기법과 자연스럽게 맞는다. 다만 빈 공간 정보가 없어 경로계획에는 격자지도가 따로 필요하다.
🔗 관련 노트
- 이동로봇 위치인식 — 지도를 기준으로 내 위치 찾기
- 이동로봇 SLAM — 지도 작성과 위치인식을 동시에
- 이동로봇 전역 경로계획 — 격자지도 위에서의 경로 탐색
- 이동로봇 충돌회피 — 코스트맵(격자지도 + 비용)
- _MOC 모션소프트웨어