✱ LABORATORY · 실험
Dynamic Window Approach
움직이는 장애물을 피하면서 목표로 가는 로봇 — 실시간 길찾기를 직접 만져보자.
🔍 이게 뭐야?
로봇 앞에 움직이는 장애물이 있을 때, 부딪히지 않으면서도 목표 지점으로 가장 잘 가는 길을 0.1초마다 다시 계산하는 방법이야. 멀리 내다보는 게 아니라 “지금 이 순간 핸들을 어디로 꺾을까”를 푸는, 아주 실용적인 길찾기.
⚙️ 원리
- 가능한 속도 후보를 쫙 펼친다 — 좌/우 바퀴 속도 조합을 여러 개 만들어 본다.
- 1초 뒤 어디 있을지 예측한다 — 각 후보대로 갔을 때의 미래 위치를 그려본다.
- 점수를 매긴다 — 목표에 가까워지면 +, 장애물에 가까우면 큰 −.
- 제일 높은 점수를 고른다 — 그리고 0.1초 뒤, 처음부터 다시.
▶️ 직접 해보기
슬라이더를 만져봐. 장애물 회피를 0에 가깝게 내리면 로봇이 겁 없이 들이받고, 목표 가중치만 키우면 최단거리에 집착한다.
● LIVE DEMO직접 만져보세요
🛠 내 재현
원본은 Python + pygame이라 웹에선 안 돌아간다. 그래서 JS + HTML Canvas로 다시 짰다. 핵심은 9개 속도 후보를 매 프레임 평가하는 루프 하나.
for (const v of candidates) {
const path = predict(robot, v, 1.0);
const score = goalGain(path) * 12
- obstacleCost(path) * 6666;
if (score > best) best = v;
}
📝 느낀 점
장애물 회피 가중치(6666)가 목표 가중치(12)보다 압도적으로 크다. 즉 “일단 안 부딪히고 보자”가 본심. 이 숫자만 만져도 로봇 성격이 확 바뀐다.