exponenta event banner

Адаптивный круиз-контроль с синтезом сенсоров

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

В этом примере выполняется следующее:

  1. Просмотрите систему управления, которая сочетает в себе слияние датчиков и адаптивный круиз-контроллер (ACC). Предусмотрены два варианта ACC: классический контроллер и блок Adaptive Cruise Control System от Model Predictive Control Toolbox.

  2. Протестируйте систему управления в модели Simulink с замкнутым контуром, используя синтетические данные, полученные с помощью автоматизированной панели инструментов вождения.

  3. Настройте параметры генерации кода для моделирования ПО в цикле и автоматически создайте код для алгоритма управления.

Введение

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

Чтобы ACC работал правильно, эго-транспортное средство должно определить, как кривая полосы перед ним, и какой автомобиль является «ведущим автомобилем», то есть перед эго-транспортным средством в полосе. Типичный сценарий с точки зрения эго-транспортного средства показан на следующем рисунке. Эго-автомобиль (синий) движется по криволинейной дороге. В начале головная машина - розовая. Затем фиолетовый автомобиль врезается в полосу эго-транспорта и становится ведущим автомобилем. Через некоторое время фиолетовый автомобиль меняется на другую полосу, и розовый снова становится ведущим автомобилем. Розовый автомобиль после этого остается ведущим. Конструкция ACC должна реагировать на изменение ведущего автомобиля на дороге.

Современные конструкции ACC в основном основаны на измерениях дальности и скорости, полученных с помощью радаров, и предназначены для лучшей работы вдоль прямых дорог. Пример такой системы приведен в Adaptive Cruise Control System Using Model Predictive Control (инструментарий модельного предсказания) и в Automotive Adaptive Cruise Control Using FMCW Technology (радарный инструментарий). Переходя от усовершенствованной системы помощи водителю (ADAS) к более автономным системам, АКК должен решать следующие задачи:

  1. Оценка относительных положений и скоростей автомобилей, находящихся вблизи эго-транспортного средства и имеющих значительное боковое движение относительно эго-транспортного средства.

  2. Оценка полосы перед эго-транспортным средством, чтобы найти, какой автомобиль перед эго-транспортным средством является ближайшим в той же полосе.

  3. Реагирование на агрессивные маневры других транспортных средств в окружающей среде, в частности, когда другое транспортное средство врезается в полосу движения эго-транспортного средства.

Этот пример демонстрирует два основных дополнения к существующим конструкциям ACC, которые отвечают этим задачам: добавление системы слияния датчиков и обновление конструкции контроллера на основе модельного прогнозирующего управления (MPC). Система слияния и слежения датчиков, использующая как датчики зрения, так и радиолокационные датчики, обеспечивает следующие преимущества:

  1. Он сочетает в себе лучшее боковое измерение положения и скорости, получаемое от датчиков зрения, с измерением дальности и скорости дальности от радиолокационных датчиков.

  2. Датчик зрения может обнаруживать полосы движения, обеспечивать оценку бокового положения полосы движения относительно эго-транспортного средства и позиционировать другие автомобили в сцене относительно полосы движения эго-транспортного средства. В этом примере предполагается идеальное обнаружение полосы движения.

Усовершенствованный контроллер MPC добавляет способность реагировать на более агрессивные маневры других транспортных средств в окружающей среде. В отличие от классического контроллера, который использует конструкцию PID с постоянным коэффициентом усиления, контроллер MPC регулирует скорость эго-транспортного средства, сохраняя при этом строгое ограничение безопасного расстояния. Поэтому контроллер может применять более агрессивные маневры, когда среда быстро меняется аналогично тому, что сделал бы водитель-человек.

Обзор модели испытательного стенда и результатов моделирования

Чтобы открыть главную модель Simulink, используйте следующую команду:

open_system('ACCTestBenchExample')

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

  1. ACC с Sensor Fusion, который моделирует слияние датчиков и управляет продольным ускорением транспортного средства. Этот компонент позволяет выбрать классическую или модельную прогнозирующую управляющую версию конструкции.

  2. подсистема «Транспортное средство и окружающая среда», моделирующая движение эго-транспортного средства и моделирующая окружающую среду. Имитация радиолокационных датчиков и датчиков зрения обеспечивает получение синтетических данных в подсистему управления.

Чтобы запустить связанный сценарий инициализации перед запуском модели, в модели Simulink нажмите кнопку «Выполнить сценарий установки» или введите в командной строке следующее:

helperACCSetUp

Сценарий загружает определенные константы, необходимые для модели Simulink, такие как параметры конструкции транспортного средства и ACC. По умолчанию ACC является классическим контроллером. Сценарий также создает шины, необходимые для определения входов и выходов для ссылочной модели системы управления. Эти шины должны быть определены в рабочем пространстве перед компиляцией модели. При компиляции модели соответствующие блоки автоматически генерируют дополнительные шины Simulink.

Для построения графика результатов моделирования и отображения окружения эго-транспортного средства, включая отслеживаемые объекты, используйте область действия «Птичий глаз». Область «Птичий глаз» - это инструмент визуализации на уровне модели, который можно открыть с помощью панели инструментов Simulink. На вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Область действия птичьего глаза (Bird 's-Eye Scope). После открытия области щелкните Найти сигналы (Find Signals), чтобы настроить сигналы. Следующие команды запускают моделирование в 15 секунды, чтобы получить изображение среднего моделирования и запустить снова до конца моделирования, чтобы получить результаты.

sim('ACCTestBenchExample','StopTime','15') %Simulate 15 seconds
sim('ACCTestBenchExample') %Simulate to end of scenario
ans = 

  Simulink.SimulationOutput:
                logsout: [1x1 Simulink.SimulationData.Dataset] 
                   tout: [151x1 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

Bird 's-Eye Scope показывает результаты слияния датчиков. Он показывает, как радиолокационные датчики и датчики обзора обнаруживают транспортные средства в пределах зон действия их датчиков. На ней также показаны дорожки, поддерживаемые блоком Multi Object Tracker. На жёлтой дорожке показан важнейший объект (MIO): ближайшая трасса перед эго-транспортным средством в его полосе. Мы видим, что в начале сценария самым важным объектом является быстроходный автомобиль впереди эго-транспортного средства. Когда проезжающий автомобиль приближается к тихоходному автомобилю, он переходит на левую полосу, и система слияния датчиков распознает его как MIO. Этот автомобиль гораздо ближе к эго-транспортному средству и гораздо медленнее, чем он. Таким образом, ACC должен замедлять эго-транспортное средство.

В следующих результатах для классической системы ACC:

  • На верхнем графике показана скорость эго-транспортного средства.

  • Средний график показывает относительное расстояние между эго-транспортным средством и ведущим автомобилем.

  • На нижнем графике показано ускорение эго-транспортного средства.

В этом примере необработанные данные из системы Tracking and Sensor Fusion используются для проектирования ACC без последующей обработки. Вы можете ожидать увидеть некоторые «всплески» (средний график) из-за неопределенностей в модели датчика, особенно когда другой автомобиль въезжает или выезжает из полосы движения эго-транспортного средства.

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

helperPlotACCResults(logsout,default_spacing,time_gap)

  • В первые 11 секунд ведущий болид значительно опережает эго-болид (средний сюжет). Эго-транспортное средство ускоряется и достигает установленной водителем скорости V_set (верхний график).

  • Другой автомобиль становится ведущим автомобилем с 11 до 20 секунд, когда автомобиль врезается в полосу движения эго-транспорта (средний участок). Когда расстояние между ведущим автомобилем и эго-транспортным средством велико (11-15 секунд), эго-транспортное средство все еще движется со скоростью, установленной водителем. Когда расстояние становится небольшим (15-20 секунд), эго-транспортное средство замедляется, чтобы сохранить безопасное расстояние от ведущего автомобиля (верхний график).

  • С 20 до 34 секунд автомобиль впереди перемещается на другую полосу, и появляется новый головной автомобиль (средний сюжет). Поскольку расстояние между ведущим автомобилем и эго-транспортным средством велико, эго-транспортное средство ускоряется до тех пор, пока не достигнет установленной водителем скорости в 27 секунд. Затем эго-транспортное средство продолжает движение со скоростью, установленной водителем (верхний график).

  • Нижний график показывает, что ускорение находится в диапазоне [-3,2] м/с ^ 2. Плавное переходное поведение указывает на удовлетворительный комфорт водителя.

В конструкции ACC на основе MPC основная проблема оптимизации формулируется путем отслеживания скорости, установленной водителем, при условии обеспечения безопасного расстояния от ведущего автомобиля. Конструкция контроллера MPC описана в разделе Адаптивный круиз-контроллер. Чтобы запустить модель с конструкцией MPC, сначала активируйте вариант MPC, а затем выполните следующие команды. Для выполнения этого шага требуется программное обеспечение Model Predictive Control Toolbox. Проверить наличие этой лицензии можно с помощью следующего кода. Если кода не существует, отображается образец аналогичных результатов.

hasMPCLicense = license('checkout','MPC_Toolbox');
if hasMPCLicense
    controller_type = 2;
    sim('ACCTestBenchExample','StopTime','15') %Simulate 15 seconds
    sim('ACCTestBenchExample') %Simulate to end of scenario
else
    load data_mpc
end
-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #2 is integrated white noise.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

ans = 

  Simulink.SimulationOutput:
                logsout: [1x1 Simulink.SimulationData.Dataset] 
                   tout: [151x1 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

-->Converting model to discrete time.
-->Assuming output disturbance added to measured output channel #2 is integrated white noise.
   Assuming no disturbance added to measured output channel #1.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

В результатах моделирования для ACC на основе MPC, аналогично классической конструкции ACC, достигаются цели управления скоростью и интервалом. По сравнению с классической конструкцией ACC, ACC на основе MPC является более агрессивным, поскольку использует полный дроссель или торможение для ускорения или замедления. Такое поведение обусловлено явным ограничением относительного расстояния. Агрессивное поведение может быть предпочтительным, когда происходят внезапные изменения на дороге, например, когда ведущий автомобиль меняется на медленный автомобиль. Чтобы сделать контроллер менее агрессивным, откройте маску блока Adaptive Cruise Control System и уменьшите значение параметра Controller Behavior. Как отмечалось ранее, всплески среднего сюжета обусловлены неопределенностями в сенсорной модели.

Для просмотра результатов моделирования с помощью ACC на основе MPC используется следующая команда.

helperPlotACCResults(logsout,default_spacing,time_gap)

Ниже более подробно описаны функции каждой подсистемы в модели испытательного стенда. Адаптивный круизный контроллер с подсистемой Sensor Fusion содержит два основных компонента:

  1. Подсистема отслеживания и слияния датчиков

  2. Подсистема адаптивного круизного контроллера

open_system('ACCTestBenchExample/ACC with Sensor Fusion')

Отслеживание и слияние датчиков

Подсистема слежения и слияния датчиков обрабатывает сигналы наблюдения и радиолокационного обнаружения, поступающие из подсистемы «Транспортное средство и окружающая среда», и создает всеобъемлющую картину ситуации вокруг эго-транспортного средства. Также он предоставляет ACC оценку ближайшего автомобиля в полосе перед эго-транспортным средством.

open_system('ACCWithSensorFusionMdlRef/Tracking and Sensor Fusion')

Основным блоком подсистемы отслеживания и слияния датчиков является блок многообъектного трекера, входные данные которого являются объединенным списком всех обнаруженных датчиков и времени прогнозирования. Выходные данные блока Multi Object Tracker представляют собой список подтвержденных дорожек.

Блок конкатенации обнаружения выполняет конкатенацию визуальных и радиолокационных детекторов. Время прогнозирования определяется часами в подсистеме «Транспортное средство и окружающая среда».

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

findLeadCar Функциональный блок MATLAB находит, какой автомобиль находится ближе всего к эго-транспортному средству и впереди его по той же полосе, используя список подтвержденных путей и кривизну дороги. Этот автомобиль называется ведущим автомобилем и может меняться, когда автомобили въезжают в полосу движения и выезжают из нее перед эго-транспортным средством. Функция обеспечивает положение и скорость ведущего автомобиля относительно эго-транспортного средства и индекс на наиболее важную трассу объекта (MIO).

Адаптивный круизный контроллер

Адаптивный круиз-контроллер имеет два варианта: классический дизайн (по умолчанию) и дизайн на основе MPC. Для обеих конструкций применяются следующие принципы проектирования. Оснащенное ACC транспортное средство (эго-транспортное средство) использует слияние датчиков для оценки относительного расстояния и относительной скорости до ведущего автомобиля. ACC обеспечивает движение эго-транспортного средства с заданной водителем скоростью при сохранении безопасного расстояния от ведущего автомобиля. Безопасное расстояние между ведущим автомобилем и эго-транспортным средством определяется как

$D_{safe} = D_{default} + T_{gap} \cdot V_x$

где интервал по умолчанию $D_{default}$и временной промежуток$T_{gap}$ являются расчетными параметрами и является$V_x$ продольной скоростью эго-транспортного средства. ACC генерирует продольное ускорение для эго-транспортного средства на основе следующих входных данных:

  • Продольная скорость эго-транспортного средства

  • Относительное расстояние между головным автомобилем и эго-транспортным средством (от системы отслеживания и слияния датчиков)

  • Относительная скорость между головным автомобилем и эго-транспортным средством (из системы отслеживания и слияния датчиков)

Учитывая физические ограничения эго-транспортного средства, продольное ускорение ограничено диапазоном [-3,2].$m/s^2$

В классической конструкции ACC, если относительное расстояние меньше безопасного расстояния, то основной целью является замедление и поддержание безопасного расстояния. Если относительное расстояние больше безопасного расстояния, то основной целью является достижение заданной водителем скорости при сохранении безопасного расстояния. Эти принципы проектирования достигаются с помощью блоков Min и Switch.

open_system('ACCWithSensorFusionMdlRef/Adaptive Cruise Controller/ACC Classical')

В конструкции ACC на основе MPC основная задача оптимизации формулируется путем отслеживания скорости, установленной драйвером, с учетом ограничения. Ограничение определяет, что относительное расстояние всегда больше безопасного расстояния.

Для настройки блока Adaptive Cruise Control System используйте параметры, определенные в helperACCSetUp файл. Например, линейная модель для конструкции ACC $G$и$G$ получена из динамики транспортного средства. Два блока коммутатора реализуют простую логику для обработки больших чисел от датчика (например, датчик может вернуться Inf если он не обнаруживает MIO).

open_system('ACCWithSensorFusionMdlRef/Adaptive Cruise Controller/ACC Model Predictive Control')

Дополнительные сведения о конструкции MPC для ACC см. в разделе Адаптивная система круиз-контроля с использованием модельного предиктивного управления (Model Predictive Control Toolbox).

Транспортное средство и окружающая среда

Подсистема транспортного средства и окружающей среды состоит из двух частей:

  1. Динамика транспортных средств и глобальные координаты

  2. Моделирование актера и датчика

open_system('ACCTestBenchExample/Vehicle and Environment')

Подсистема Vehicle Dynamics моделирует динамику транспортного средства с помощью блока Bicycle Model - Force Input из автоматизированной панели инструментов вождения. Динамика транспортного средства с входным$u$ (продольным ускорением) и углом переднего рулевого управления $\delta$аппроксимируется следующим образом:

В векторе состояния$V_y$ обозначает боковую скорость,$V_x$ обозначает продольную скорость и$\psi$ обозначает угол рыскания. Параметры транспортного средства приведены в helperACCSetUp файл.

Выходные данные динамики транспортного средства (например, продольная скорость$V_x$ и поперечная скорость) $V_y$основаны на фиксированных координатах кузова. Для получения траектории, пройденной транспортным средством, фиксированные координаты кузова преобразуются в глобальные координаты посредством следующих соотношений:

$$\dot{X} = V_x\cos(\psi)-V_y\sin(\psi),\quad \dot{Y} = V_x\sin(\psi)+V_y\cos(\psi)$$

Угол рыскания$\psi$ и скорость угла рыскания$\dot{\psi}$ также преобразуются в единицы измерения градусов.

Цель модели рулевого управления водителя заключается в удержании транспортного средства в полосе движения и следовании по криволинейной дороге путем регулирования угла поворота переднего руля. $\delta$Эта цель достигается путем приведения погрешности угла рыскания$e_2$ и погрешности бокового смещения к$e_1$ нулю (см. следующий рисунок), где

$$\dot{e_1} = V_xe_2+V_y,\quad e_2 = \psi - \psi_{des}$$

Желаемая скорость угла рыскания задается как$Vx/R$ ($R$обозначает радиус кривизны дороги).

Подсистема моделирования акторов и сенсоров генерирует синтетические данные сенсора, необходимые для отслеживания и слияния сенсоров. Перед запуском этого примера приложение «Конструктор сценариев вождения» использовалось для создания сценария с изогнутой дорогой и несколькими движущимися по дороге актерами. Затем дороги и субъекты из этого сценария были сохранены в файле сценария. ACCTestBenchScenario.mat. Для получения информации об определении сценария см. раздел Создание сценария.

open_system('ACCTestBenchExample/Vehicle and Environment/Actors and Sensor Simulation')

Движение эго-транспортного средства контролируется системой управления и не считывается из файла сценария. Вместо этого положение эго-транспортного средства, скорость, угол рыскания и скорость рыскания принимаются как входные данные из блока Vehicle Dynamics и упаковываются в единую структуру позы актера с использованием packEgo Функциональный блок MATLAB.

Блок чтения сценариев считывает данные о позе актера из файла сценария ACCTestBenchScenario.mat. Блок преобразует позы актера из мировых координат сценария в координаты эго-транспортного средства. Позы актера передаются в потоковом режиме по шине, генерируемой блоком. В этом примере используются блок генератора обнаружения видения и блок генератора радиолокационного обнаружения. Оба датчика имеют дальний и дальний вид и обеспечивают хорошее покрытие передней части эго-транспортного средства, как это необходимо для ACC. Датчики используют позы актера в координатах эго-транспортного средства для формирования списков обнаружений транспортного средства перед эго-транспортным средством. Наконец, в качестве примера того, как транспортное средство будет иметь централизованный источник времени, используется тактовый блок. Время используется блоком Multi Object Tracker.

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

Приложение «Конструктор сценариев вождения» позволяет определять дороги и транспортные средства, движущиеся по дорогам. В этом примере задаются две параллельные дороги с постоянной кривизной. Для определения дороги определяются центры дорог, ширина дороги и угол поворота (при необходимости). Центры дорог выбирались точками отбора проб по дуге окружности, охватывающей поворот на 60 градусов постоянного радиуса кривизны.

В сценарии определяются все транспортные средства. Для определения движения транспортных средств их траектория определяется набором ППМ и скоростей. Быстрый способ определения ППМ заключается в выборе подмножества дорожных центров, определенных ранее, со смещением влево или вправо от дорожных центров для управления полосой движения транспортных средств.

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

Сценарий можно изменить с помощью приложения Driving Script Designer и сохранить в том же файле сценария. ACCTestBenchScenario.mat. Блок чтения сценариев автоматически получает изменения при повторном запуске моделирования. Чтобы создать сценарий программно, можно использовать helperScenarioAuthoring функция.

plotACCScenario

Создание кода для алгоритма управления

Хотя вся модель не поддерживает генерацию кода, ACCWithSensorFusionMdlRef модель сконфигурирована для поддержки генерации кода C с использованием программного обеспечения Embedded Coder. Чтобы проверить наличие доступа к встроенному кодеру, запустите:

hasEmbeddedCoderLicense = license('checkout','RTW_Embedded_Coder')

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

if hasEmbeddedCoderLicense
    slbuild('ACCWithSensorFusionMdlRef')
end

Можно проверить, что скомпилированный код C ведет себя так, как ожидалось, с помощью моделирования ПО в цикле (SIL). Для моделирования ACCWithSensorFusionMdlRef ссылочная модель в режиме SIL, используйте:

if hasEmbeddedCoderLicense
    set_param('ACCTestBenchExample/ACC with Sensor Fusion',...
        'SimulationMode','Software-in-the-loop (SIL)')
end

При запуске ACCTestBenchExample модель, код генерируется, компилируется и выполняется для ACCWithSensorFusionMdlRef модель. Это позволяет проверить поведение скомпилированного кода с помощью моделирования.

Заключения

В этом примере показано, как реализовать интегрированный адаптивный круиз-контроллер (ACC) на криволинейной дороге с синтезом датчиков, протестировать его в Simulink, используя синтетические данные, сгенерированные с помощью автоматической панели инструментов вождения, компоновать его и автоматически генерировать для него код.

bdclose all

См. также

Функции

Блоки

Объекты

Связанные темы