Chap.5에서는 Navigation에 대해서 다룬다.
Chap.5 - Navigation
Navigation은 로봇이 목표를 향해 이동하는 과정을 안내하는 가이드이다.
Navigation의 목표는 2가지로 추려진다.
- move to goal
- obstacle avoidance
5.1 - Reactive Navigation
map이 없어서 plan없이 바로 바로 반응하는 데로 움직이는 경우이다.
들어온 센서 신호에 따라 행동한다.
개미와 단세포 같은 동물들이 움직이는 방식이다.
이 방식을 이용한 간단한 로봇이다.
바퀴에 광센서를 부착하여 빛을 감지하여 이동할 수 있게 하였다.
어느 방향에 광센서를 부착하냐에 따라 빛을 따라가거나 피하게 할 수 있다.
5.1.1 - Braitenberg Vehicles
상단의 matlab 주소로 이동하면 5.1에 해당하는 광센서 모바일로봇의 시뮬레이션을 진행할 수 있다.
5.1.2 - Simple Automata
스스로 움직이는 간단한 로봇에 대해서 다룬다.
simple automata는 map을 모르기 때문에 센서에 반응하는 대로 움직인다.
이에 해당하는 대표적인 알고리즘으로 Bug Algorithm이 있다.
로봇은 그리드 한셀을 차지하도록 설정되어 있고, 움직임 또한 그리드 단위로 진행된다.
그리고 로봇은 이웃한 그리드 셀 어디든지 이동할 수 있고, 내 위치 또한 알 수 있다고 가정한다.
점선은 시작점과 Goal을 잇는 선으로 장애물이 없다면 로봇은 이 선을 따라 간다. 일단 선을 따라가다가 장애물이 있으면 방향을 틀어서 이동한다.
Bug Algorithm 보충
Bug 알고리즘은 간단히 2가지 파트로 설명할 수 있다.
1) 벽 따라가기
2) 목표점을 잇는 직선을 따라가기
#1 - Bug 0
Bug 0는 앞으로 가다가 장애물을 만나면 그대로 장애물을 따라 간다. 그리고 목표가 보이면 그대로 목표를 향해 이동한다. 아주 간단한 알고리즘이지만 다음과 경우에는 큰 문제를 갖는다.
시작점에서 goal까지 도달하지 못하고 계속 빙빙 돌게 되는 문제가 발생한다.
결국 끝까지 목표에 도착하지 못한다.
이러한 문제 때문에 약간의 계산을 추가하여 Bug 0 알고리즘을 개선한 Bug 1이 제안됐다.
#2 - Bug 1
Bug 1은 다음을 전제로 진행된다.
1) 목표로의 방향을 알고 있다. (메모리 추가)
2) local sensing 기능
Bug 1의 진행 과정은 다음과 같다.
1. 일단 목표 방향으로 전진한다.
2. 앞에 장애물이 있으면 한바퀴를 돈다.
3. 각 위치에서 goal까지 거리를 재고 저장한다. goal 방향으로 최단거리를 선택하여 다시 이동한다. (메모리 필요)
4. 장애물을 만나면 또 한바퀴를 돌고, 거리 계산 후 다시 최단거리를 선택하여 goal을 향해 이동한다.
Bug 1은 Bug 0처럼 목표에 도착하지 못하는 문제는 해결했다.
하지만 장애물을 만나면 무조건 1바퀴를 돌아야 하기 때문에 비효율적이다.
비효율적인 Bug 1의 움직임을 해결하기 위해 Bug 2를 제안했다.
#3 - Bug 2
Bug 2에서는 시작과 목표를 잇는 직선(m-line)이 존재한다.
Bug 2의 진행 순서는 다음과 같다.
1. m-line을 따라 로봇이 움직인다.
2. 장애물을 만나면 다시 m-line을 만날때까지 그대로 우회한다.
3. m-line을 따라 다시 이동한다.
4. 장애물을 만나면 다시 m-line을 만날때까지 우회한다.
5. 다시 m-line을 따라 goal을 향해 움직인다.
Bug 1의 비효율적인 문제를 Bug 2는 해결했지만 여기서 또 다른 문제가 발생했다.
Bug 0처럼 Goal에 도착하지 못하는 문제가 생겼다.
Start와 Goal의 위치를 바꿔서 진행한 결과이다. m-line을 따라 가다보니 계속해서 Loop를 돌게되는 현상이 발생했다.
이를 해결하기 위해서 메모리를 이용하여 m-line의 point를 기억하고 goal이랑 더 먼 지점은 무시하여 다른 경로를 찾는 방법이 있다.
#4 - Tangent Bug
Tangent Bug는 거리센서를 이용하여 장애물을 굳이 한바퀴 안 돌아가고 최단거리로만 이동할 수 있도록 고안된 알고리즘이다.
5.2 - Map-Based Planning
작성 중..