Движение по маршруту, следующему за управлением с помощью слияния датчиков и обнаружения маршрута

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

В этом примере вы:

  1. Проверьте алгоритм управления, который объединяет слияние датчиков, обнаружение маршрута и канал, следующий за контроллером из программного обеспечения Model Predictive Control Toolbox™.

  2. Протестируйте систему управления в замкнутой модели Simulink ® с помощью синтетических данных, сгенерированных программным обеспечением Automated Driving Toolbox™.

  3. Сконфигурируйте настройки генерации кода для симуляции цикл и автоматически сгенерируйте код для алгоритма управления.

Введение

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

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

  • Боковое управление - Сохраните автомобиль , оборудованный датчиком, перемещающийся по осевой линии своей полосы путем регулировки рулевого управления автомобиля , оборудованного датчиком

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

Для примера продольного контроля с использованием адаптивного круиз-контроля (ACC) с слиянием датчиков, см. Adaptive Cruise Control with Sensor Fusion (Model Predictive Control Toolbox). Для примера бокового управления с использованием системы помощи при хранении маршрута (LKA) с обнаружением маршрута, см. «Помощь при хранении маршрута с обнаружением маршрута» (Model Predictive Control Toolbox). Пример ACC принимает идеальное обнаружение маршрута, и пример LKA не рассматривает окружающие транспортные средства.

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

Откройте тестовую модель

Откройте тестовую модель Simulink.

open_system('LaneFollowingTestBenchExample')

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

  1. Lane Following Controller - Управляет и продольным ускорением, и передним углом поворота автомобиля , оборудованного датчиком

  2. Vehicle and Environment - Моделирует движение автомобиль , оборудованный датчиком и моделирует окружение

  3. Обнаружение столкновения - останавливает симуляцию, когда обнаруживается столкновение автомобиля , оборудованного датчиком и свинцового транспортного средства

  4. MIO Track - Включает MIO track для отображения в Bird ' s-Eye Scope.

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

Постройте график дороги и пути, который автомобиль , оборудованный датчиком.

plot(scenario)

Чтобы построить график результатов симуляции и изобразить автомобиль , оборудованный датчиком окрестности и отслеживаемые объекты, используйте Bird ' s-Eye Scope. Bird 's-Eye Scope является инструментом визуализации на уровне модели, который можно открыть с панели инструментов Simulink. На вкладке Simulation, в разделе Результаты, нажмите Bird ' s-Eye Scope. После открытия возможностей настройте сигналы по нажатию Find Signals.

Чтобы получить вид средней симуляции, симулируйте модель для 10 секунд.

sim('LaneFollowingTestBenchExample','StopTime','10')

После симуляции модели в течение 10 секунд откройте Bird 's-Eye Scope. На панели инструментов возможностей, чтобы отобразить Вид мировых координат (World Coordinates View) сценария, нажмите Мировые координаты (World Coordinates). На этом виде автомобиля , оборудованного датчиком закруглена. Чтобы отобразить легенду для вида «Координаты транспортного средства», нажмите кнопку «Легенда».

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

Моделируйте модель до конца сценария.

sim('LaneFollowingTestBenchExample')
   Assuming no disturbance added to measured output channel #3.
-->Assuming output disturbance added to measured output channel #2 is integrated white noise.
   Assuming no disturbance added to measured output channel #1.
-->Assuming output disturbance added to measured output channel #4 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Постройте график эффективности контроллера.

plotLFResults(logsout,time_gap,default_spacing)

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

  • График Velocity показывает, что автомобиль , оборудованный датчиком поддерживает управление скоростью от 0 до 11 секунд, переключается на управление интервалом от 11 до 16 секунд, затем переключается назад к управлению скоростью.

  • График Расстояние между двумя автомобилями показывает, что фактическое расстояние между ведущим транспортным средством и автомобилем , оборудованным датчиком всегда больше безопасного расстояния.

  • График Acceleration показывает, что ускорение для автомобиля , оборудованного датчиком плавно.

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

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

  • График бокового отклонения показывает, что расстояние до осевой линии маршрута находится в пределах 0,2 м.

  • График Относительный угол рыскания показывает, что ошибка угла рыскания относительно осевой линии маршрута находится в пределах 0,03 рад (менее 2 степени).

  • График Угол поворота показывает, что угол поворота для автомобиля , оборудованного датчиком плавен.

Исследуйте канал после контроллера

Подсистема Lane Following Controller содержит три основные части: 1) Estimate Lane Center 2) Tracking and Sensor Fusion 3) MPC Controller

open_system('LaneFollowingTestBenchExample/Lane Following Controller')

Подсистема Estimate Lane Center выводит данные датчика маршрута на контроллер MPC. Предварительно просматриваемая кривизна обеспечивает осевую линию кривизны маршрута перед автомобилем , оборудованным датчиком. В этом примере автомобиль , оборудованный датчиком может смотреть вперед в течение 3 секунд, что является продуктом горизонта предсказания и шага расчета контроллером. Контроллер использует предварительно просматриваемую информацию для вычисления автомобиля , оборудованного датчиком угла поворота руля, что улучшает эффективность контроллера MPC. Боковое отклонение измеряет расстояние между автомобиль , оборудованный датчиком и осевой линией маршрута. Относительный угол рыскания измеряет угол рыскания, различия между автомобилем , оборудованным датчиком и дорогой. Блок J670E ISO 8855 в SAE внутри подсистемы преобразует координаты из обнаружений маршрута, которые используют ISO 8855, в контроллер MPC, который использует J670E SAE.

Подсистема Tracking and Sensor Fusion обрабатывает визуальные и радиолокационные обнаружения, поступающие от подсистемы Транспортного средства и Окружения, и генерирует комплексную картину ситуации окружения вокруг автомобиля , оборудованного датчиком. Кроме того, он предоставляет контроллеру, следующему за полосой, оценку ближайшего транспортного средства в полосе перед автомобилем , оборудованным датчиком.

Целями блока MPC Controller являются:

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

  • Держите автомобиль , оборудованный датчиком посередине маршрута; это уменьшение бокового отклонения$E_{lateral}$ и относительного угла рыскания $E_{yaw}$путем управления углом рулевого управления.

  • Замедлите автомобиль , оборудованный датчиком, когда дорога пышная. Для достижения этой цели контроллер MPC имеет большие веса штрафов при боковом отклонении, чем при продольной скорости.

Контроллер MPC разработан в блоке Path Following Control (PFC) System на основе введенных параметров маски, а разработанный MPC Controller является адаптивным MPC, который обновляет модель транспортного средства во время исполнения. Следующий контроллер маршрута вычисляет продольное ускорение и угол поворота автомобиля , оборудованного датчиком на основе следующих входов:

  • Заданная драйвером скорость

  • Автомобиль , оборудованный датчиком продольная скорость

  • Предварительный просмотр кривизны (получен из обнаружений маршрута)

  • Боковое отклонение (получено из обнаружений маршрута)

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

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

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

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

Исследуйте транспортное средство и окружение

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

open_system('LaneFollowingTestBenchExample/Vehicle and Environment')

Блоки System Latency моделируют задержку в системе между входами и выходами модели. Задержка может быть вызвана задержкой датчика или задержкой связи. В этом примере задержка аппроксимируется одним шагом расчета$T_s = 0.1$ секунд.

Подсистема Динамики аппарата моделирует динамику аппарата с помощью блока Bicycle Модели - Force Входа из Vehicle Dynamics Blockset™. Динамика нижнего уровня моделируется линейной системой первого порядка с константой времени в$\tau = 0.5$ секундах.

Подсистема J670E SAE в ISO 8855 преобразует координаты из динамики аппарата, которая использует J670E SAE, в считыватель сценариев, который использует ISO 8855.

Блок Scenario Reader считывает, что актёр помещает данные из файла сценария. Блок преобразует положения актёра из мировых координат сценария в автомобиль , оборудованный датчиком координаты. Положения актёра транслируются по шине, сгенерированной блоком. Блок Scenario Reader также генерирует идеальные контуры левого и правого маршрута на основе положения транспортного средства относительно сценария, используемого в helperLFSetUp.

Блок Vision Detection Generator берёт идеальные контуры маршрута из блока Scenario Reader. Генератор обнаружения моделирует поле зрения монокулярной камеры и определяет угол рыскания, кривизну, производную кривизны и допустимую длину каждого контура дороги, учитывая любые другие препятствия. Блок Radar Detection генерирует обнаружения точек из достоверных данных, присутствующих в поле зрения радара, на основе сечения радара, заданного в сценарии.

Запуск контроллера для нескольких Сценариев тестирования

Этот пример использует несколько сценарии тестирования, основанных на стандартах ISO и реальных сценариях. Чтобы проверить эффективность контроллера, можно протестировать контроллер для нескольких сценариев и настроить параметры контроллера, если эффективность не удовлетворительна. Для этого:

  1. Выберите сценарий путем изменения scenarioId в helperLFSetUp.

  2. Сконфигурируйте параметры симуляции, запустив helperLFSetUp.

  3. Симулируйте модель с выбранным сценарием.

  4. Оцените эффективность контроллера, используя plotLFResults

  5. Настройте параметры контроллера, если эффективность не удовлетворительная.

Можно автоматизировать верификацию и валидацию контроллера с помощью Simulink Test™.

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

The LFRefMdl модель поддерживает генерацию кода С с помощью программного обеспечения Embedded Coder ®. Чтобы проверить, есть ли у вас доступ к Embedded Coder, запустите:

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

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

if hasEmbeddedCoderLicense
  slbuild('LFRefMdl')
end

Можно проверить, что скомпилированный код С ведет себя должным образом, используя симуляцию цикле (SIL). Чтобы симулировать LFRefMdl ссылка модели в режиме SIL, используйте:

if hasEmbeddedCoderLicense
  set_param('LaneFollowingTestBenchExample/Lane Following Controller',...
            'SimulationMode','Software-in-the-loop (SIL)')
end

Когда вы запускаете LaneFollowingTestBenchExample модель, код генерируется, компилируется и выполняется для LFRefMdl модель, которая позволяет вам протестировать поведение скомпилированного кода посредством симуляции.

Заключения

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

close all
bdclose all

См. также

Приложения

Блоки

Похожие темы