controllerPurePursuit

Создайте контроллер, чтобы следовать набору путевых точек

Описание

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

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

Примечание

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

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

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

пример

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

controller = controllerPurePursuit(Name,Value) создает чистый объект преследования с дополнительными опциями, заданными одним или несколькими 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 свойство.

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Используйте info метод для получения дополнительной информации о controllerPurePursuit объект. The 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