Чистое преследование - это алгоритм отслеживания пути. Он вычисляет команду угловой скорости, которая перемещает робота из его текущего положения, чтобы достичь некоторой точки обзора перед роботом. Линейная скорость считается постоянной, поэтому можно изменить линейную скорость робота в любой точке. Затем алгоритм перемещает точку заглядывания на траектории на основе текущего положения робота до последней точки траектории. Об этом можно думать как о роботе, постоянно преследующем точку перед ней. Свойство LookTalkedDistance определяет, насколько далеко расположена точка обзора.
controllerPurePursuit объект не является традиционным контроллером, но действует как алгоритм отслеживания для целей следования по пути. Ваш контроллер уникален для указанного списка ППМ. Желательные линейные и максимальные угловые скорости могут быть определены. Эти свойства определяются на основе спецификаций транспортного средства. Учитывая позу (положение и ориентацию) транспортного средства в качестве входных данных, объект может быть использован для вычисления команд линейных и угловых скоростей для робота. То, как робот использует эти команды, зависит от используемой системы, поэтому рассмотрим, как роботы могут выполнять движение, учитывая эти команды. Последним важным свойством является LookAheadDistance, которая сообщает роботу, как далеко на пути, чтобы отследить. Это свойство более подробно описано в разделе ниже.
Важно понимать опорную координатную рамку, используемую алгоритмом чистого поиска для его входов и выходов. На рисунке ниже показана система координат привязки. Входные ППМ: [x y] координаты, которые используются для вычисления команд скорости робота. Поза робота вводится как поза и ориентация (тета) список точек как [x y theta]. Положительные направления x и y находятся соответственно в правом и верхнем направлениях (синим на рисунке). Значение тета - это угловая ориентация робота, измеренная против часовой стрелки в радианах от оси x (робот в настоящее время при 0 радианы).

LookAheadDistance свойство является основным свойством настройки для контроллера. Расстояние вперед - это расстояние вдоль траектории, на которое робот должен смотреть от текущего местоположения для вычисления команд угловой скорости. На рисунке ниже показан робот и точка заглядывания вперед. Как показано на этом рисунке, обратите внимание, что фактический путь не соответствует прямой линии между ППМ.

Эффект изменения этого параметра может изменить то, как робот отслеживает путь, и есть две основные цели: восстановление пути и поддержание пути. Для того, чтобы быстро вернуть себе путь между ППМ, небольшой LookAheadDistance заставит робота быстро двигаться к пути. Однако, как видно на рисунке ниже, робот перекрывает траекторию и совершает колебания вдоль желаемой траектории. Чтобы уменьшить колебания вдоль траектории, можно выбрать большее расстояние заглядывания вперед, однако это может привести к большей кривизне вблизи углов.

LookAheadDistance свойство должно быть настроено для вашего приложения и робота системы. Различные линейные и угловые скорости также влияют на эту реакцию и должны учитываться для тракта, следующего за контроллером.
Есть несколько ограничений, чтобы отметить этот алгоритм чистого преследования:
Как показано выше, контроллер не может точно следовать прямым путям между ППМ. Параметры должны быть настроены на оптимизацию производительности и сближение с траекторией во времени.
Этот алгоритм чистого преследования не стабилизирует робота в какой-то точке. В вашем приложении для остановки робота вблизи нужной цели должен быть применен порог расстояния для местоположения цели.
[1] Култер, R. Реализация алгоритма отслеживания пути чистого преследования. Университет Карнеги-Меллона, Питтсбург, Пенсильвания, январь 1990 года.
stateEstimatorPF | controllerVFH (Панель инструментов навигации)