부스트로 페돈 세포 분해는 단순히 환경을 부스트로 페돈 경로에 의해 효과적으로 덮을 수있는 영역으로 세분화하는 것이다. 사다리꼴 분해는 라인 스윕 알고리즘을 사용하여 수행 할 수 있습니다. [Choset 2000], 이 웹 사이트
또는 Mark de Berg 등의 훌륭한 저서 "Computational Geometry"를 참조하십시오. al, 필요한 데이터 구조 및 알고리즘에 대한 완전한 설명.
Choset, Howie. "알려진 공간의 범위 : Boustrophedon Cellular Decomposition" 자율 로봇 , 2000.
예를 들어 장애물 세트를 모서리와 정점으로 간주하십시오. 환경이 특수 다각형에 의해 경계가 있다고 가정 해 봅시다. 우리는 다음과 같은 것을 가지고 있습니다. 이 공간을 분해하기 위해 모든 정점과 가장 가까운 선 또는 정점 사이에 수직 모서리를 추가하기 만하면됩니다.
코드에서이 작업을 수행하려면 선 세그먼트 교차 테스트, 정렬 된 모서리 목록 및 정렬 된 정점 목록 만 있으면됩니다.
- V나는
- 엘나는V나는
- 각 교차점에서 새로운 정점을 만듭니다.
이 작업이 완료되면 새로운 모서리와 정점 세트가 사다리꼴 만 포함합니다. 그러나 나는 당신이 (장애물에 대한 사전 지식없이) 온라인으로 이것을 할 수 없다고 강조합니다 . 사전 지식없이 강력한 적용 범위를 원한다면 "버그 알고리즘"을 볼 수 있습니다. 특히 환경이 제한되어 있다고 가정하면 간단한 알고리즘이 있습니다.
시작 위치에서 환경의 왼쪽 상단 모서리에 도달 할 때까지 위와 왼쪽으로 이동하십시오. 먼저 장애물을 만나면 주변을 여행해야합니다. 우회 할 수있는 경우 (범프 및 이동) 장애물이 있다는 것을 알고 있습니다.
왼쪽 상단에서 경계가 나올 때까지 오른쪽으로 이동하십시오. 그런 다음 아래로 이동하고 왼쪽으로 이동하십시오 (우리는 전체 공간에서 부스 트로피를하고 있습니다).
왼쪽 라인에 있고 장애물을 만나면 두 가지 옵션이 있습니다. (i) 우리가 다루려고하는 오른쪽 오른쪽 선에 도달 할 때까지 우회하여 계속할 수 있습니다. (ii) 우리는 장애물을지나 길을 찾거나이 상황에서 다시 끝날 때까지 돌아 서서 새로운 왼쪽-오른쪽 선을 덮을 수 있습니다. 설명하겠습니다.
왼쪽에서 우리는 우리가 따라 가려는 "라인"으로 돌아갈 때까지 장애물 주위를 움직입니다. 오른쪽에서 장애물 한쪽의 (더 작은) 영역을 계속 덮습니다.
첫 번째 방법의 장점은 장애물을 해결하는 방법을 결정하기 전에 항상 장애물을 완전히 매핑하여 더 짧은 경로를 이용할 수 있다는 것입니다. 두 번째 방법의 장점은 장애물을 전혀 피해 갈 필요가 없다는 것입니다. 당신이있는 지역을 다룰 수 있습니다.
이것은 온라인 방식으로 부스 트로피 돈 분해를 정의합니다 . 장애물 사이 또는 장애물과 경계 사이의 영역을 커버합니다.
그러나 내가 아는 한 첫 번째 방법은 분석하기가 더 쉽습니다. 더 복잡한 알고리즘 (예 : BFS 등)은 환경이 제한되어 있지 않기 때문에 (종속으로 경계를 찾기 위해 계속 사용하고 싶지 않기 때문에) 또는 기본적으로 환경을 분할하는 방식에 실제로 방해가되는 장애물이 있습니다. 왜 이것이 나쁜가요? 이 예를보십시오 :
좌우 이동, 각 장애물을 선회하는 생산 방식으로 각 장애물 사이의 작은 부품의 너무 많은 커버. 실제로 전역 경로 계획이 없으면 전체 열의 높이와 너비가 1 픽셀 인이 열을 1 픽셀 너비로 배치하여 그리드 해상도만큼 나쁘게 만들 수 있습니다. 그런 다음 때릴 때마다 장애물을 돌아다녀야합니다.
그렇기 때문에 내가 어디에서 환경에 있었는지 또는 글로벌 경로 계획을 수행 할 수 있는지에 대한 아이디어가 있는지 물었습니다. 그러나 온라인 대 오프라인 토론과 이에 대한 최적의 알고리즘은 실제로 원하는 것이 아닙니다.
업데이트 : 이미지가 아닌 https를 제거해야했으며 실제 실제 응용 프로그램에서 종종 사용되는 이미지를 게시 할 것입니다. http://www.cs.cmu.edu/~motionplanning/papers/sbp_papers/integrated1/yamauchi_frontiers.pdf