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

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

Обзор

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

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

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

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

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

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

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

  4. Визуализируйте сценарий и связанные результаты симуляции с помощью Видимого с большого расстояния Осциллографа.

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

Контроллер ответвления Стэнли [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)

Моделируйте сценарий

При симуляции модели можно открыть Видимый с большого расстояния Осциллограф, чтобы анализировать симуляцию. После открытия осциллографа нажмите Find Signals, чтобы настроить сигналы. Затем запустите симуляцию, чтобы отобразить автомобиль, дорожные контуры и маркировки маршрута. Изображение ниже показов Видимый с большого расстояния Осциллограф для этого примера в 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

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

| | | |

Похожие темы