아래 글에서 경로를 만들기 위한 기본 과정으로 격자 지도로부터 세선화 알고리즘을 수행하여 경로의 골격을 추출하였습니다.
- 경로 추출을 위한 Vornoi 세선화 알고리즘 -
- 경로 추출을 위한 세선화(thinning) 알고리즘 -
이제 이 경로의 골격과 위상이 일치하는 Topology Map을 만들도록 하겠습니다. 만드는 과정은 다음과 같습니다.
1) 격자 지도에서 로봇이 주행 가능한 영역을 세선화 하여 경로의 골격을 추출한다.
2) 경로의 골격 선이 끝나거나 여러 선들로 갈라져 나가는 부분을 노드로 찾는다. 즉, 현재 픽셀 주변에서 주변 픽셀을 카운트 했을 때
1개, 3개, 4개의 선이 연결되어 있으면 이 점은 분기 노드(branch node)로 고려한다.
2-1) 분기 노드로부터 선을 이루는 픽셀을 따라가면서 하나의 경로를 찾는다.
2-2) 찾은 경로로에서 곡률이 큰 픽셀은 다시 노드로 분리한다.
3) 경로의 골격 선이 원과 같이 시작과 끝점이 연결되어있는 선들을 찾아 노드를 따낸다.
3-1) 3)에서 따낸 노드부터 픽셀을 따라가면서 경로를 찾는다.
3-2) 찾은 경로로에서 곡률이 큰 픽셀은 다시 노드로 분리한다.
상세한 수행 과정은 다음 소스코드를 참조하시기 바랍니다.
아래는 위상지도를 만든 결과입니다.