exponenta event banner

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, Start]. x и y имеют значения в метрах, а Start- в градусах.

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

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

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

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

Текущая поза транспортного средства, указанная как вектор [x, y, Start]. x и y имеют значения в метрах, а Start- в градусах.

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

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

Дополнительные сведения о позе транспортного средства см. в разделе Системы координат в автоматизированной панели инструментов вождения.

Типы данных: 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).

steerCmd значение насыщено до диапазона [-MaxSteeringAngle, MaxSteeringAngle].

  • Значения ниже -MaxSteeringAngle имеют значение -MaxSteeringAngle.

  • Значения выше MaxSteeringAngle имеют значение MaxSteeringAngle.

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

свернуть все

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

Дополнительные сведения см. в разделе Системы координат в автоматизированной панели инструментов вождения.

Алгоритмы

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

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

  • Погрешность положения - боковое расстояние от центра передней оси до опорной точки на траектории.

  • Погрешность угла - это угол переднего колеса относительно опорной траектории.

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

  • Погрешность положения - боковое расстояние от центра задней оси до опорной точки на пути.

  • Погрешность угла представляет собой угол заднего колеса относительно исходной траектории.

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

Ссылки

[1] Гофман, Габриэль М., Клэр Дж. Томлин, Майкл Монтемерло и Себастьян Трюн. «Отслеживание автономных автомобильных траекторий для внедорожного вождения: дизайн контроллера, экспериментальная валидация и гонки». Американская конференция по контролю. 2007, стр 2296–2301. doi:10.1109/ACC.2007.4282788

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018b