본문으로 건너뛰기

Optimal Parking, Part 2 - 초기 경로 플래너로서의 RRT*

궤적 최적화는 초기 추정에 민감합니다. 임의의 보간에서 시작하면 차량이 장애물 안에 놓이거나 자동차 모델이 따라가기 어려운 경로가 만들어질 수 있습니다. 따라서 Optimal Parking은 RRT*로 기하학적 초기 경로를 구성합니다.

1. 탐색 공간 샘플링

RRT*는 경계가 있는 맵에서 점을 샘플링하며 초기 위치에서 트리를 확장합니다. 국소 연결이 유효하면 각 샘플을 가까운 트리 노드와 연결합니다. 완전한 격자 표현을 만들지 않고도 트리가 점차 자유 공간을 탐색합니다.

샘플 xrandx_{rand}에는 가장 가까운 노드 xnearx_{near}가 연결됩니다. 조향 단계는 샘플 방향으로 후보 점을 만듭니다.

xnew=Steer(xnear,xrand).x_{new} = \operatorname{Steer}(x_{near}, x_{rand}).

step distance는 한 번의 확장에서 이동할 수 있는 거리를 제한합니다. goal bias는 때때로 목표를 직접 샘플링하도록 합니다.

2. 충돌 검사

차량에서는 점 하나만 검사하는 충돌 판정으로 충분하지 않습니다. 플래너는 차량 외곽을 표현하고 제안된 경로와 직사각형 장애물의 충돌을 검사합니다. 중간 상태가 필요한 여유 거리를 유지할 때만 경로를 받아들입니다.

이 단계는 동역학적으로 정확한 계산이라기보다 기하학적 계산입니다. 대신 최적화기가 의미 있는 경로의 위상 구조를 갖도록 합니다. 예를 들어 장애물의 왼쪽 또는 오른쪽으로 지나갈지, 필요한 후진 동작을 수행할지 결정할 수 있습니다.

3. RRT*의 차이점

새 연결이 더 낮은 누적 비용을 제공하면 RRT*는 주변 노드의 부모를 다시 연결합니다. 현재 cost-to-come을 c(x)c(x)라고 할 때, 다음 조건을 만족하면 후보 부모가 더 유리합니다.

c(xparent)+c(xparent,xnew)<c(xnew).c(x_{parent}) + c(x_{parent}, x_{new}) < c(x_{new}).

샘플이 추가될수록 재연결을 통해 경로 품질이 좋아집니다. 여기서 RRT*의 핵심 역할은 최종 제어 시퀀스를 만드는 것이 아닙니다. 연속 최적화기가 사용할 충돌을 고려한 초기 경로를 제공하는 것입니다.

4. 경로를 최적화기 초기값으로 변환하기

RRT* 결과를 궤적 최적화기가 요구하는 시간 인덱스 상태 시퀀스로 다시 샘플링합니다. 위치와 방향각은 기하학적 경로에서 얻고, 속도와 조향 관련 값은 일관된 방식으로 초기화하거나 적절한 기본값을 부여합니다.

이 결과는 아직 초기 추정치일 뿐입니다. 급격한 회전, 불균일한 시간 배치, 만족되지 않은 동역학을 포함할 수 있습니다. 다음 챕터에서는 sequential quadratic programming을 통해 이 추정치를 부드러운 궤적으로 변환합니다.