이동로봇 지역 경로계획
📌 개요
- 전역 경로가 있어도 지도에 없던 사람·박스가 나타나면 그 자리에서 피해야 함
- 지역 경로계획(Local Path Planning) = 센서가 실시간으로 본 주변 정보로 당장의 이동 방향과 속도를 결정하는 층 → 실질적으로 로봇 바퀴에 내려가는 속도 명령 생성
- 시험 핵심 출제: 포텐셜 필드(인력+척력, 지역 최솟값 문제), DWA(동적 창, 평가함수)
📖 핵심 개념
지역 경로계획의 역할 — 계획과 반사신경
-
전역 계획 = 지도를 보고 세운 큰 그림 ↔ 지역 계획 = 눈앞 상황에 반응하는 반사신경
-
두 층은 계층 구조로 함께 동작
-
전역 계획: 출발 시(그리고 경로가 막혔을 때) 지도 기반으로 전체 경로 생성
-
지역 계획: 수십 ms 주기로 (1) 전역 경로를 따라가면서 (2) 센서에 잡힌 장애물을 회피하는 속도 명령 (v, \omega) — 선속도와 각속도 — 을 출력
ROS 내비게이션 스택의 global planner / local planner 구조가 이 계층 구조의 대표적 구현이다.
포텐셜 필드 방법 (Potential Field Method)
공간에 가상의 힘의 장을 깔아 로봇을 밀고 당기는 직관적인 방법이다.
- 인력(Attractive Force): 목표점이 로봇을 끌어당긴다 — 목표에서 멀수록 큰 힘
- 척력(Repulsive Force): 장애물이 로봇을 밀어낸다 — 장애물에 가까울수록 급격히 커지고, 일정 영향 거리 \rho_0 밖에서는 0
- 로봇은 두 힘의 합력 방향으로 이동 (수학적으로는 포텐셜 함수의 음의 기울기 F = -\nabla U 방향)
장점: 개념이 단순하고 계산이 가벼워 실시간 반응에 적합하다.
단점 (단골 출제):
- 지역 최솟값(Local Minimum): 인력과 척력이 상쇄되어 합력이 0이 되는 지점(예: U자형 장애물 안)에 목표 도달 전에 갇혀 버린다
- 좁은 통로에서 양쪽 척력에 의해 진동(oscillation)이 발생할 수 있다
- 해결책: 무작위 이동으로 탈출, 전역 재계획 요청, 포텐셜 함수 개선 등
동적 창 접근법 (DWA, Dynamic Window Approach)
현재 로봇 관점에서 "지금 낼 수 있는 속도들 중 최선"을 고르는 방법으로, 실무에서 가장 널리 쓰이는 지역 계획기 중 하나다.
- 동적 창(Dynamic Window) 구성: 로봇이 다음 제어 주기 동안 도달할 수 있는 속도쌍 (v, \omega)의 범위를 구한다. 이 범위는 로봇의 가속·감속 한계(동역학 제약) 와 최대 속도로 제한된다 — "지금 20 km/h인데 0.1초 뒤에 100 km/h가 될 수는 없다"
- 궤적 예측: 창 안의 각 후보 속도로 짧은 시간 동안 움직였을 때의 원호 궤적을 시뮬레이션한다
- 평가와 선택: 각 궤적을 평가함수로 점수화하고 최고점 속도를 채택한다
평가함수는 통상 세 항의 가중합이다:
- heading(방향): 목표(또는 전역 경로) 방향을 얼마나 잘 향하는가
- dist(여유): 궤적이 장애물에서 얼마나 멀리 떨어져 있는가 (충돌 궤적은 제외)
- velocity(속도): 얼마나 빠르게 전진하는가
동역학 제약을 처음부터 반영하므로 실제로 실행 가능한 명령만 나온다는 것이 DWA의 큰 장점이다.
벡터 필드 히스토그램 (VFH, Vector Field Histogram)
- 로봇 주변을 부채꼴 섹터로 나눔 → 섹터별 장애물 밀도를 극좌표 히스토그램으로 생성
- 밀도가 낮으면서 목표 방향에 가까운 섹터를 진행 방향으로 선택
- 포텐셜 필드보다 지역 최솟값·진동에 강인한 개량으로 소개됨
지역 계획의 한계와 재계획
-
지역 계획은 눈앞만 보므로 근본적으로 근시안적
-
막다른 길에 들어가면 스스로 빠져나오지 못할 수 있어, 아래 복구 전략과 함께 사용
-
일정 시간 진전이 없으면 전역 경로 재계획(Replanning) 요청
-
제자리 회전, 후진 등 복구 행동(Recovery Behavior) 수행
-
코스트맵을 지웠다가 다시 채우기 (오래된 장애물 정보 제거)
📊 다이어그램 · 수식
전역-지역 계층 구조
flowchart TD
M["지도 (사전 정보)"] --> G["전역 경로계획
A*, Dijkstra 등"]
S["센서 (실시간 정보)
LiDAR, 뎁스카메라"] --> L["지역 경로계획
DWA, 포텐셜 필드, VFH"]
G -- "전역 경로 (따라갈 기준)" --> L
L -- "속도 명령 (v, ω)" --> R["구동부 (모터)"]
L -- "경로 막힘 → 재계획 요청" --> G포텐셜 필드의 수식
전체 포텐셜 = 인력 포텐셜 + 척력 포텐셜, 로봇은 그 기울기를 따라 내려간다:
인력 포텐셜 (목표 q_{goal}까지 거리 \rho_{g}의 제곱에 비례 — 멀수록 강하게 당김):
척력 포텐셜 (장애물까지 거리 \rho가 영향 거리 \rho_0 이내일 때만, 가까울수록 급증):
지역 최솟값: F_{att} + F_{rep} = 0이 되는 목표 이외의 지점 — 여기 갇히면 스스로 못 나온다.
DWA 평가함수
동적 창 안의 후보 (v, \omega) 중 G가 최대인 속도쌍을 선택한다.
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. 전역 경로계획과 비교한 지역 경로계획의 특징으로 옳은 것은?
① 사전에 주어진 지도 전체를 이용한다 ② 출발 시 한 번만 실행된다 ③ 센서 정보를 기반으로 실시간으로 동적 장애물에 대응한다 ④ 정적 장애물만 고려한다
정답 및 해설
정답: ③ 지역 계획은 센서가 본 주변 정보로 수십 ms마다 속도 명령을 갱신하며, 지도에 없던 동적 장애물에 대응한다. ①②④는 모두 전역 계획의 특징이다.
2. 포텐셜 필드 방법에서 로봇에 작용하는 힘의 구성으로 옳은 것은?
① 목표의 척력 + 장애물의 인력 ② 목표의 인력 + 장애물의 척력 ③ 목표와 장애물 모두 인력 ④ 목표와 장애물 모두 척력
정답 및 해설
정답: ② 목표는 끌어당기고(인력) 장애물은 밀어낸다(척력). 로봇은 두 힘의 합력 방향, 즉 포텐셜의 음의 기울기(-\nabla U) 방향으로 움직인다.
3. 포텐셜 필드 방법의 대표적인 문제점은?
① 계산량이 너무 많아 실시간 적용이 불가능하다 ② 지역 최솟값에 갇혀 목표에 도달하지 못할 수 있다 ③ 지도가 반드시 필요하다 ④ 로봇의 크기를 고려할 수 없다
정답 및 해설
정답: ② U자형 장애물 안처럼 인력과 척력이 상쇄되는 지점(지역 최솟값)에 갇히는 것이 최대 약점이다. 계산은 오히려 가벼워 실시간에 적합하므로 ①은 반대다.
4. DWA(Dynamic Window Approach)에서 속도 탐색 공간을 '동적 창'으로 제한하는 기준은?
① 로봇의 가속·감속 한계 등 동역학 제약 ② 지도의 격자 해상도 ③ 배터리 잔량 ④ 전역 경로의 길이
정답 및 해설
정답: ① 동적 창은 현재 속도에서 한 제어 주기 동안 가속·감속 한계로 도달할 수 있는 (v, \omega) 범위다. 이 제약 덕분에 DWA는 물리적으로 실행 가능한 명령만 내놓는다.
5. DWA의 궤적 평가함수에 일반적으로 포함되지 않는 항목은?
① 목표 방향을 향하는 정도 (heading) ② 장애물과의 여유 거리 (dist) ③ 전진 속도 (velocity) ④ 로봇의 누적 주행 거리
정답 및 해설
정답: ④ 평가함수는 G = \alpha \cdot \text{heading} + \beta \cdot \text{dist} + \gamma \cdot \text{velocity}의 가중합이다. 누적 주행 거리는 후보 속도의 좋고 나쁨과 무관하다.
🔗 관련 노트
- 이동로봇 전역 경로계획 — 지역 계획이 따라가는 기준 경로
- 이동로봇 충돌회피 — 지역 계획이 수행하는 회피의 안전 관점
- 이동로봇 위치인식 — 전역 경로 추종에 필요한 자기 위치
- _MOC 모션소프트웨어