exponenta event banner

controllerPurePursuit

Создание контроллера для отслеживания набора ППМ

Описание

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

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

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, 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

ППМ, указанный как массив n-by-2 [x y] пар, где n - количество ППМ. Можно создать ППМ из 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 собственность.

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

pp = controllerPurePursuit;

Назначение ППМ.

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