Pure pursuit 이론
Pure pursuit은 차량이 현재 위치에서 목표점까지 이동하기 위한 곡률을 계산해 작동하는 경로 추종 알고리즘이다. 이 알고리즘의 포인트는 차량에서 일정거리 앞에 위치한 경로상의 목표점을 선택하는 것이다.
차량의 현재 위치를 결정한다.
Global 좌표에서 현재 차량의 위치(x, y, theta)를 받아서 저장한다.
차량에서 가장 가까운 경로상의 점을 찾는다.
Path의 모든 점들을 순환하면서 현재 위치에서 가장 가까운 점을 찾는다. 이때, 차량이 뒤로 가는 것을 방지하기 위해서 만약 이전에 찾는 path상에 점이 있다면 가장 가까운 점을 찾기 위한 시작 인덱스를 그 점으로부터 시작한다.
목표점을 찾는다.
차량의 위치에서 LD(Look-ahead Distance반경 안에 path와의 교차점이 있다면 그것을 목표점으로 삼는다.
곡률을 계산하고 해당 곡률로 차량의 heading을 업데이트 해준다.
차량의 곡률은 위에서 설명했던 것과 같이 현재 차량의 위치, 목표점을 이용해 구한다. 이때, 차량 heading의 방향을 정확하게 알기 위해서 차량의 벡터와 LD의 벡터를 cross productdust을 통해 양의 값이면 오른쪽 방향, 음의 값이면 왼쪽 방향으로 heading을 결정하고, 구해진 곡률로 차량의 heading을 업데이트 한다.
차량의 위치를 업데이트 한다.
Global좌표에서의 현재 차량 위치(x, y, theta)를 받아서 저장한다.
Pure pursuit 이해에 필요한 법칙
Trigo metric Function(삼각함수)


Ackerman-Jeantaud type(에커만장토식)
차량조향의 기구학적 매커니즘을 정의하기 위해 사용되며, 차량의 움직임에 슬립이 없다고 가정한다. 또한 차량의 모든 바퀴는 하나의 회전 중심을 중심으로 하는 것으로 가정된다. 여기에 차량을 Rear wheel 하나, Front wheel 하나를 가지고 있는 Bicycle model로 간주하면 아래와 같은 기구학적 구조를 얻을 수 있다.

위의 구조로 차량의 회전반경(=곡률반경)인 R 또는 전륜 조향각(델타)가 구해질 수 있다. Pure Pursuit에서는 이 전륜 조향각인 ‘delta’를 구하는게 필요하다. 따라서 아래와 같은 수식이 전개된다.
