lateralControllerStanley

Вычислите команду угла поворота для следования пути с помощью метода Стэнли

Описание

пример

steerCmd = lateralControllerStanley(refPose,currPose,currVelocity) вычисляет команду угла поворота, в степени, которая регулирует текущее положение транспортного средства так, чтобы оно совпадало с ссылкой положением, учитывая текущую скорость транспортного средства. По умолчанию функция принимает, что транспортное средство находится в движении вперед.

Контроллер вычисляет команду угла рулевого управления с помощью метода Стэнли [1], закон управления которого основан на кинематической модели велосипеда. Используйте этот контроллер для следования пути в низкоскоростных окружениях, где инерционные эффекты минимальны.

пример

steerCmd = lateralControllerStanley(refPose,currPose,currVelocity,Name,Value) задает опции с использованием одной или нескольких пар "имя-значение". Для примера, lateralControllerStanley(refPose,currPose,currVelocity,'Direction',-1) вычисляет команду угла поворота для транспортного средства в обратном движении.

Примеры

свернуть все

Вычислите команду угла поворота, которая настраивает текущее положение транспортного средства в положение ссылки вдоль траектории движения. Это транспортное средство находится в прямом движении.

В этом примере вычисляется одна команда угла поворота руля. В алгоритмах следования пути вычислите угол поворота руля постоянно, когда изменяются положение и скорость транспортного средства.

Установите ссылку положение на путь. Положение положения (4,8 м, 6,5 м) и угол ориентации 2 степени.

refPose = [4.8, 6.5, 2]; % [meters, meters, degrees]

Установите текущее положение транспортного средства. Положение положения (2 м, 6,5 м) и угол ориентации 0 степеней. Установите текущую скорость транспортного средства в 2 метра в секунду.

currPose = [2, 6.5, 0]; % [meters, meters, degrees]
currVelocity = 2; % meters per second

Вычислите команду угла поворота руля. Чтобы транспортное средство совпадало с положением ссылки, рулевое колесо должно повернуть на 2 степени против часовой стрелки.

steerCmd = lateralControllerStanley(refPose,currPose,currVelocity)
steerCmd = 2.0000

Вычислите команду угла поворота, которая настраивает текущее положение транспортного средства в положение ссылки вдоль траектории движения. Это транспортное средство находится в обратном движении.

В этом примере вычисляется одна команда угла поворота руля. В алгоритмах следования пути вычислите угол поворота руля постоянно, когда изменяются положение и скорость транспортного средства.

Установите ссылку положение на путь. Положение положения (5 м, 9 м) и угол ориентации 90 степеней.

refPose = [5, 9, 90]; % [meters, meters, degrees]

Установите текущее положение транспортного средства. Положение положения (5 м, 10 м) и угол ориентации 75 степеней.

currPose = [5, 10, 75]; % [meters, meters, degrees]

Установите текущую скорость транспортного средства в -2 метра в секунду. Поскольку транспортное средство находится в обратном движении, скорость должна быть отрицательной.

currVelocity = -2; % meters per second

Вычислите команду угла поворота руля. Чтобы транспортное средство совпадало с положением ссылки, руль должен повернуть на 15 степени по часовой стрелке.

steerCmd = lateralControllerStanley(refPose,currPose,currVelocity,'Direction',-1)
steerCmd = -15.0000

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

свернуть все

Ссылочное положение, заданное как вектор [x, y, Θ]. x и y в метрах, а Θ в степенях.

x и y задайте точку ссылки, к которой нужно направить транспортному средству. Θ задает угол ориентации пути в этой контрольной точке и положительный в направлении против часовой стрелки.

  • Для транспортного средства движения вперед ссылки точка является точкой на пути, которая находится ближе всего к центру транспортного средства передней оси.

  • Для транспортного средства обратного движения точка ссылки является точкой на пути, которая находится ближе всего к центру транспортного средства задней оси.

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

Положение тока транспортного средства, заданное как вектор [x, y, Θ]. x и y в метрах, а Θ в степенях.

x и y определяют местоположение транспортного средства, которое определяется как центр задней оси транспортного средства.

Θ задает угол ориентации транспортного средства в местоположении (x, y) и положительный в направлении против часовой стрелки.

Для получения дополнительной информации о положении транспортного средства смотрите Системы координат в Automated Driving Toolbox.

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

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

  • Если транспортное средство находится в движении вперед, это значение должно быть больше 0.

  • Если транспортное средство находится в обратном движении, это значение должно быть меньше 0.

  • Значение 0 представляет транспортное средство, которое не находится в движении.

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'MaxSteeringAngle',25

Направление движения транспортного средства, заданное как разделенная запятыми пара, состоящая из 'Direction' и любой из них 1 для движения вперед или -1 для обратного движения. Направление движения определяет ошибку положения и ошибку угла, используемые для вычисления команды угла поворота руля. Для получения дополнительной информации см. «Алгоритмы».

Позиционное усиление транспортного средства, заданное как разделенная разделенными запятой парами, состоящая из 'PositionGain' и положительный действительный скаляр. Это значение определяет, насколько ошибка положения влияет на угол поворота руля. Типичные значения находятся в области значений [1, 5]. Увеличьте это значение, чтобы увеличить величину угла поворота руля.

Расстояние между передней и задней осями транспортного средства в метрах, заданное как разделенная разделенными запятой парами, состоящая из 'Wheelbase' и настоящий скаляр. Это значение применяется только, когда транспортное средство находится в движении вперед.

Максимально допустимый угол поворота транспортного средства, в степенях, указанный как разделенная разделенными запятой парами, состоящая из 'MaxSteeringAngle' и действительный скаляр в области значений (0, 180).

The steerCmd значение насыщается до области значений [-MaxSteeringAngle, MaxSteeringAngle].

  • Значения ниже -MaxSteeringAngle заданы как -MaxSteeringAngle.

  • Значения выше MaxSteeringAngle заданы как MaxSteeringAngle.

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

свернуть все

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

Для получения дополнительной информации смотрите Системы координат в Automated Driving Toolbox.

Алгоритмы

Чтобы вычислить команду угла поворота, контроллер минимизирует ошибку положения и ошибку угла текущего положения относительно положения ссылки. Направление движения транспортного средства определяет эти значения ошибки.

Когда транспортное средство находится в движении вперед ('Direction' Пара "имя-значение" 1):

  • Значение position error является боковым расстоянием от центра передней оси до контрольной точки на пути.

  • Это angle error угол переднего колеса относительно ссылку пути.

Когда транспортное средство находится в обратном движении ('Direction' Пара "имя-значение" -1):

  • Значение position error является боковым расстоянием от центра задней оси до контрольной точки на пути.

  • Это angle error угол заднего колеса относительно ссылку пути.

Для получения дополнительной информации о том, как контроллер минимизирует эти ошибки, смотрите [1].

Ссылки

[1] Гофман, Габриэль М., Клэр Дж. Томлин, Майкл Монтемерло и Себастьян Трун. Autonomobile Automobile Trajectory Tracking for Off-Road Driving: Проектирование контроллера, Experimental Validation and Racing (неопр.) (недоступная ссылка). Американская контрольная конференция. 2007, стр 2296–2301. doi:10.1109/ACC.2007.4282788

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b