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