Pure Pursuit 제어기
Pure Pursuit는 경로 추적 알고리즘입니다. 이 알고리즘은 로봇을 현재 위치에서 전방의 전방 주시 지점(look-ahead point)에 도달하도록 이동시키는 각속도 명령을 계산합니다. 선속도는 일정하다고 간주되므로, 어느 지점에서든 로봇의 선속도를 변경할 수 있습니다. 그러면 알고리즘은 로봇의 현재 위치를 기반으로 경로의 마지막 지점까지 경로상에서 전방 주시 지점을 이동시킵니다. 로봇이 전방의 한 지점을 끊임없이 쫓아간다고 생각하면 됩니다. 속성 LookAheadDistance
는 어느 정도 거리에 전방 주시 지점을 놓을지 결정합니다.
controllerPurePursuit
객체는 전통적인 제어기는 아니지만 경로 추종을 목적으로 하는 추적 알고리즘 역할을 합니다. 이 제어기는 지정된 웨이포인트 목록에 대해 고유합니다. 원하는 선속도와 최대 각속도를 지정할 수 있습니다. 이러한 속성은 이동체 사양에 따라 결정됩니다. 이동체의 자세(위치 및 방향)가 입력값으로 주어지면 객체를 사용하여 로봇의 선속도 명령과 각속도 명령을 계산할 수 있습니다. 로봇이 이러한 명령을 사용하는 방법은 사용 중인 시스템에 따라 다르므로 로봇이 주어진 명령에 따라 모션을 어떻게 실행하는지 고려해야 합니다. 마지막으로 중요한 속성은 LookAheadDistance
입니다. 이 속성은 로봇에게 추적해야 할 경로의 거리를 알려줍니다. 이 속성은 아래 섹션에서 자세히 설명합니다.
기준 좌표계
Pure Pursuit 알고리즘에서 입력과 출력에 대해 사용하는 기준 좌표 프레임을 이해하는 것이 중요합니다. 아래의 그림은 기준 좌표계를 보여줍니다. 입력 웨이포인트는 로봇 속도 명령을 계산하는 데 사용되는 [x y]
좌표입니다. 로봇의 자세는 [x y theta]
형식으로 된 xy 위치와 각도로 구성됩니다. 양의 x 방향과 y 방향은 각각 오른쪽 방향과 위쪽 방향입니다(그림에서 파란색). theta 값은 x축(로봇은 현재 0
라디안)으로부터 시계 반대 방향으로 측정한 로봇의 각도 방향입니다(단위: 라디안).
전방 주시 거리
LookAheadDistance
속성은 제어기의 기본 조정 속성입니다. 전방 주시 거리(look ahead distance)는 로봇이 각속도 명령을 계산하기 위해 현재 위치에서 경로를 따라 얼마나 멀리 봐야 하는지를 나타냅니다. 아래 그림은 로봇과 전방 주시 지점을 보여줍니다. 이 이미지에 표시된 것처럼 실제 경로는 웨이포인트 사이의 직선과 일치하지 않습니다.
이 파라미터를 변경하면 로봇이 경로를 추적하는 방법이 변경될 수 있습니다. 여기에는 경로 되찾기와 경로 유지라는 두 가지 주요 목표가 있습니다. 웨이포인트 사이 경로를 빠르게 되찾기 위해 작은 값의 LookAheadDistance
를 사용하면 로봇이 경로를 향해 빠르게 이동합니다. 그러나 다음 그림에서 볼 수 있듯이 로봇은 경로를 벗어나면서 목표 경로를 따라 진동합니다. 경로를 따라 진동하는 것을 줄이기 위해 더 큰 값의 전방 주시 거리를 사용할 있지만, 그럴 경우 코너 근처에서 더 큰 곡률이 발생할 수 있습니다.
LookAheadDistance
속성은 응용 사례와 로봇 시스템에 맞춰 조정되어야 합니다. 선속도와 각속도가 달라지면 이러한 응답에도 영향을 미치므로 경로 추종 제어기를 고려해야 합니다.
제한 사항
Pure Pursuit 알고리즘에 대해 주의해야 할 몇 가지 제한 사항이 있습니다.
위에 나와 있는 것처럼 제어기는 웨이포인트 사이의 직선을 정확히 따를 수 없습니다. 성능을 최적화하고 시간이 갈수록 경로에 수렴하려면 파라미터를 조정해야 합니다.
Pure Pursuit 알고리즘은 한 지점에서 로봇을 안정화하지 못합니다. 응용 사례에서 목표 위치에 거리 임계값을 적용하여 원하는 목표 근처에서 로봇을 정지시켜야 합니다.
참고 문헌
[1] Coulter, R. Implementation of the Pure Pursuit Path Tracking Algorithm. Carnegie Mellon University, Pittsburgh, Pennsylvania, Jan 1990.
참고 항목
stateEstimatorPF
| controllerVFH
(Navigation Toolbox)