робототехника. PurePursuit

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

Описание

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

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

Примечание

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

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

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

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

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

Создание

Синтаксис

controller = robotics.PurePursuit
controller = robotics.PurePursuit(Name,Value)

Описание

пример

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

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

Пример: controller = robotics.PurePursuit('DesiredLinearVelocity', 0.5)

Свойства

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

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

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

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

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

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

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

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

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

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

Синтаксис

[vel,angvel] = controller(pose)
[vel,angvel,lookaheadpoint] = controller(pose)

Описание

пример

[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Характеристическая информация об объекте PurePursuit
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

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

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

pp = robotics.PurePursuit;

Присвойте 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]

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

Представленный в R2015a