반응형
이 글은 아래의 책을 기반으로 작성되었습니다.
Choset, H., Lynch, K. M., Hutchinson, S., Kantor, G. A., & Burgard, W. (2005).
Principles of robot motion: theory, algorithms, and implementations. MIT press.
Bug Algorithms
- Bug 알고리즘은 가장 기초적인 센서 기반의 planner
- 간단하게 말하면,
목표 지점으로 일직선으로 이동하다가 장애물을 만나면 돌아가고, 이후 다시 목표 지점으로 직선 이동
- 필요한 두 가지 행동 : 일직선으로 이동
: 경계를 따라가기
- 가정 : 평면에서 동작
: 장애물을 피하기 위하여 접촉 센서, zero range sensor(bug 1, 2 algorithm),
nonzero range sensor(tangent bug algorithm) 사용
: 정확한 자신(로봇)의 위치를 알고 있음
: 도착 위치에 대해 알고 있음
* 알고리즘에 대한 설명은 아주 간단히 언급하며,
자세한 알고리즘은 psedo-code로 확인 바랍니다.
Bug 1 알고리즘
- 목표 지점으로 일직선 이동
- 만약 장애물을 만나면 경계를 따라 한 바퀴 이동하고,
장애물 경계 중 목표 지점과 가장 가까운데에서 다시 목표 지점으로 일직선 이동


Matlab으로 구현한 Bug1 알고리즘
Bug 2 알고리즘
- 시작 지점과 목표 지점의 직선(m-line)을 따라 이동
- 만약 장애물을 만나면 경계를 따라 이동하고,
장애물 경계 중 m-line과 겹치는 지점에서 다시 목표 지점으로 일직선 이동


Matlab으로 구현한 Bug2 알고리즘
Tangent Bug 알고리즘
tangent bug algorithm은 이전 알고리즘과 달리 360도의 range sensor를 사용
(zero, infininte range sensor도 가능)
- 목표 지점으로 일직선 이동
- 장애물이 있을 경우 heuristic distance를 최소로 하는 n 지점으로 이동
- local minimum에 걸린 경우(로봇과 목표 지점의 거리가 늘어남),
이전의 방향에 해당하는 n 지점을 따라 장애물 경계로 이동
- d_reach(로봇과 목표 지점의 거리)가 d_followed(장애물의 탐지 지점과 목표 지점의 최소 거리)보다
작으면 다시 목표 지점으로 일직선 이동


Matlab으로 구현한 Tangent Bug 알고리즘
반응형