Боковой пример по управлению

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

Панорама

Управление транспортным средством является последним шагом в системе навигации и обычно выполняется с помощью двух независимых контроллеров:

  • Боковой Контроллер: Настройте держащийся угол, таким образом, что транспортное средство следует за ссылочным путем. Контроллер минимизирует расстояние между текущим положением транспортного средства и ссылочным путем.

  • Продольный Контроллер: При следовании за ссылочным путем обеспечьте желаемую скорость путем управления дросселем и тормозом. Контроллер минимизирует различие между направляющимся углом транспортного средства и ориентацией ссылочного пути.

Этот пример фокусируется на боковом управлении в контексте следования траектории в постоянном продольном скоростном сценарии. В примере вы будете:

  1. Узнайте об алгоритме позади Бокового блока диспетчера Стэнли.

  2. Создайте ведущий сценарий с помощью приложения Driving Scenario Designer и сгенерируйте ссылочный путь для транспортного средства, чтобы следовать.

  3. Протестируйте боковой контроллер в сценарии с помощью модели Simulink® с обратной связью.

  4. Визуализируйте сценарий и связанные результаты симуляции с помощью Bird ' s-Eye Scope.

Боковой контроллер

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

В зависимости от модели транспортного средства, используемой в получении закона о надзоре, Боковой блок диспетчера Стэнли имеет две настройки [1]:

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

  • Динамическая модель велосипеда: динамическая модель включает эффекты инерции: утомите промах и держащееся приведение в действие сервомотора. Это более сложная, но более точная, модель позволяет контроллеру обрабатывать реалистическую динамику. В этой настройке контроллер также требует, чтобы искривление пути, текущий уровень отклонения от курса транспортного средства и текущий руководящий угол вычислили держащуюся команду.

Можно установить настройку через параметр модели Транспортного средства в диалоговом окне блока.

Создание сценария

Сценарий был создан с помощью приложения Driving Scenario Designer. Этот сценарий включает одну, трехполосную дорогу и автомобиль, оборудованный датчиком. Для подробных шагов на добавляющих дорогах маршруты и транспортные средства, видят Сборку Ведущий Сценарий и Генерируют Синтетические Обнаружения. В этом сценарии, транспортном средстве:

  1. Запускается в среднем маршруте.

  2. Переключатели к левому маршруту после ввода кривой части дороги.

  3. Возвращается к среднему маршруту.

В течение симуляции транспортное средство запускается при постоянной скорости 10 метров/секунда. Этот сценарий экспортировался из приложения как функция MATLAB® использование кнопки Export> Export MATLAB Function. Экспортируемую функцию называют helperCreateDrivingScenario. Дороги и агенты из этого сценария были сохранены в файл сценария LateralControl.mat.

Setup модели

Откройте модель примера Simulink.

open_system('LateralControlTutorial')

Модель содержит следующие основные компоненты:

  • Боковой диспетчер Вэриэнт Сабсистем, Вэриэнт Модель, который содержит два Боковых блока диспетчера Стэнли, один сконфигурированный с кинематической моделью велосипеда и другой с динамической моделью велосипеда. Они оба могут управлять держащимся углом транспортного средства. Можно задать активный из командной строки. Например, чтобы выбрать блок Lateral Controller Stanley Kinematic, используйте следующую команду:

variant = 'LateralControlTutorial/Lateral Controller';
set_param(variant, 'LabelModeActivechoice', 'Kinematic');
  • HelperPathAnalyzer блокируйтесь, который предоставляет ссылочный сигнал боковому контроллеру. Учитывая текущее положение транспортного средства, это определяет ссылочное положение путем поиска самой близкой точки к транспортному средству на ссылочном пути.

  • Подсистема Транспортного средства и Среды, которая моделирует движение транспортного средства с помощью блока Vehicle Body 3DOF. Подсистема также моделирует среду при помощи блока Scenario Reader, чтобы считать дороги и агентов из файла сценария LateralControl.mat.

Открытие модели также запускает helperLateralControlTutorialSetup скрипт, который инициализирует данные, используемые моделью. Скрипт загружает определенные константы, необходимые модели Simulink, такие как параметры транспортного средства, параметры контроллера, дорожный сценарий и ссылочные положения. В частности, скрипт вызывает ранее экспортируемый функциональный helperCreateDrivingScenario создавать сценарий. Скрипт также настраивает шины, требуемые для модели путем вызова helperCreateLaneSensorBuses.

Можно построить дорогу и запланированное использование пути:

helperPlotRoadAndPath(scenario, refPoses)

Симулируйте сценарий

При симуляции модели можно открыть Bird ' s-Eye Scope, чтобы анализировать симуляцию. После открытия осциллографа нажмите Find Signals, чтобы настроить сигналы. Затем запустите симуляцию, чтобы отобразить транспортное средство, дорожные контуры и маркировки маршрута. Изображение ниже показов Bird ' s-Eye Scope для этого примера в 25 секунд. В сейчас же, транспортное средство переключилось на левый маршрут.

Можно запустить полную симуляцию и исследовать результаты с помощью следующей команды:

sim('LateralControlTutorial');

Можно также использовать Simulink® Scope в подсистеме Транспортного средства и Среды, чтобы смотреть производительность контроллера, когда транспортное средство следует за запланированным путем. Осциллограф показывает, что максимальное отклонение от пути меньше 0,3 метров, и самая большая руководящая угловая величина меньше 3 градусов.

scope = 'LateralControlTutorial/Vehicle and Environment/Scope';
open_system(scope)

Чтобы уменьшать боковое отклонение и колебание в держащейся команде, используйте блок Lateral Controller Stanley Dynamic и симулируйте модель снова:

set_param(variant, 'LabelModeActivechoice', 'Dynamic');
sim('LateralControlTutorial');

Заключения

Этот пример показал, как симулировать боковое управление транспортного средства в маршруте, изменяющем сценарий с помощью Simulink. По сравнению с блоком Lateral Controller Stanley Kinematic блок Lateral Controller Stanley Dynamic обеспечивает улучшенную производительность в следовании траектории с меньшим боковым отклонением от ссылочного пути.

Ссылки

[1] Хоффман, Габриэль М., Клэр Дж. Томлин, Майкл Монтемерло и Себастиан Трун. "Автономное Автомобильное Отслеживание Траектории для Управления Для бездорожья: Проектирование контроллера, Экспериментальная Валидация и Гонки". Американская Конференция по Управлению. 2007, стр 2296-2301.

Вспомогательные Функции

График helperPlotRoadAndPath дорога и ссылочный путь

function helperPlotRoadAndPath(scenario,refPoses)
%helperPlotRoadAndPath Plot the road and the reference path
h = figure('Color','white');
ax1 = axes(h, 'Box','on');
plot(scenario,'Parent',ax1)
hold on
plot(ax1,refPoses(:,1),refPoses(:,2),'b')
xlim([150, 300])
ylim([0 150])
ax1.Title = text(0.5,0.5,'Road and Reference Path');
end

Смотрите также

Приложения

Блоки

Похожие темы