controllerPurePursuit

Создайте контроллер, чтобы следовать за набором waypoints

Описание

controllerPurePursuit Система object™ создает объект контроллера, используемый, чтобы заставить транспортное средство дифференциального диска следовать за набором waypoints. Объект вычисляет линейное и скорости вращения для транспортного средства, учитывая текущее положение. Последовательные вызовы объекта с обновленными положениями обеспечивают обновленные скоростные команды для транспортного средства. Используйте MaxAngularVelocity и DesiredLinearVelocity свойства обновить скорости на основе эффективности транспортного средства.

LookaheadDistance свойство вычисляет предварительную точку на пути, который является локальной целью для транспортного средства. Команда скорости вращения вычисляется на основе этой точки. Изменение LookaheadDistance оказывает значительное влияние на эффективность алгоритма. Более высокое предварительное расстояние приводит к более сглаженной траектории для транспортного средства, но может заставить транспортное средство сокращать углы вдоль пути. Низкое предварительное расстояние может привести к колебаниям в отслеживании пути, вызвав нестабильное поведение. Для получения дополнительной информации о чистом алгоритме преследования смотрите Чистый Контроллер Преследования.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Чтобы вычислить линейный и скорость вращения управляют командами:

  1. Создайте controllerPurePursuit объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

controller = controllerPurePursuit создает чистый объект преследования, который использует чистый алгоритм преследования, чтобы вычислить линейные входные параметры и входные параметры скорости вращения для дифференциального транспортного средства диска.

controller = controllerPurePursuit(Name,Value) создает чистый объект преследования с дополнительными опциями, заданными одним или несколькими Name,Value пары. Имя является именем свойства, и Значение является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' ')). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN. Свойства, не заданные, сохраняют свои значения по умолчанию.

Пример: controller = controllerPurePursuit('DesiredLinearVelocity', 0.5)

Свойства

развернуть все

Желаемая постоянная линейная скорость в виде скаляра в метрах в секунду. Контроллер принимает, что транспортное средство управляет в постоянной линейной скорости и что вычисленная скорость вращения независима от линейной скорости.

Типы данных: double

Предварительное расстояние в виде скаляра в метрах. Предварительное расстояние изменяет ответ контроллера. Транспортное средство с более высоким предварительным расстоянием производит сглаженные пути, но принимает большие обороты в углах. Транспортное средство с меньшим предварительным расстоянием следует за путем тесно и принимает крутые обороты, но потенциально создание колебаний в пути.

Типы данных: double

Максимальная скорость вращения, заданная скаляр в радианах в секунду. Контроллер насыщает абсолютную скорость вращения выход в данном значении.

Типы данных: double

Waypoints в виде n-by-2 массив [x y] пары, где n является количеством waypoints. Можно сгенерировать waypoints от mobileRobotPRM класс или из другого источника.

Типы данных: double

Использование

Описание

пример

[vel,angvel] = controller(pose) обрабатывает положение и ориентацию транспортного средства, pose, и выходные параметры линейная скорость, vel, и скорость вращения, angvel.

[vel,angvel,lookaheadpoint] = controller(pose) возвращает предварительную точку, которая является местоположением на пути, использовался для расчета скоростных команд. Это местоположение на пути вычисляется с помощью LookaheadDistance свойство на controller объект.

Входные параметры

развернуть все

Положение и ориентация транспортного средства в виде вектора 3 на 1 в форме [x y theta]. Положением транспортного средства является x и положение y с угловой ориентацией θ (в радианах) измеренный от x - ось.

Выходные аргументы

развернуть все

Линейная скорость в виде скаляра в метрах в секунду.

Типы данных: double

Скорость вращения в виде скаляра в радианах в секунду.

Типы данных: double

Предварительная точка на пути, возвращенном как [x y] вектор. Это значение вычисляется на основе LookaheadDistance свойство.

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

infoХарактеристическая информация о controllerPurePursuit объект
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Используйте info метод, чтобы получить больше информации о controllerPurePursuit объект. info функция возвращает два поля, RobotPose и LookaheadPoint, которые соответствуют текущему положению и ориентации робота, и точка на пути использовалась для расчета выходных параметров от последней возможности объекта.

Создайте controllerPurePursuit объект.

pp = controllerPurePursuit;

Присвойте waypoints.

pp.Waypoints = [0 0;1 1];

Вычислите команды управления с помощью pp объект с начальным положением [x y theta] данный как вход.

[v,w] = pp([0 0 0]);

Получите дополнительную информацию.

s = info(pp)
s = struct with fields:
         RobotPose: [0 0 0]
    LookaheadPoint: [0.7071 0.7071]

Расширенные возможности

Введенный в R2019b