exponenta event banner

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

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

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

  1. Интерактивное построение сценария управления с помощью приложения «Конструктор сценариев управления».

  2. Экспортируйте функцию MATLAB ®, создающую код MATLAB, эквивалентный этому сценарию.

  3. В редакторе MATLAB измените экспортированную функцию для создания вариантов исходного сценария.

  4. Вызовите функцию для создания drivingScenario объект, представляющий сценарий.

  5. Импортируйте объект сценария в приложение для моделирования измененного сценария или создания дополнительных сценариев. Либо для моделирования измененного сценария в Simulink ® импортируйте объект в модель Simulink с помощью блока чтения сценариев.

На схеме показано визуальное представление этого рабочего процесса.

Сценарий построения в приложении

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

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

Откройте файл сценария в приложении.

drivingScenarioDesigner('LeftTurnScenarioNoSensors.mat')

Щелкните Выполнить (Run), чтобы смоделировать сценарий. В этом сценарии эго-автомобиль едет на север и проходит прямо через перекресток. При этом транспортное средство, идущее с левой стороны перекрестка, поворачивает налево и оказывается перед эго-транспортным средством, в соседней полосе.

Для простоты этот сценарий не включает датчики, установленные на эго-транспортном средстве.

Экспорт функции MATLAB сценария

После просмотра и моделирования сценария его можно экспортировать в командную строку MATLAB. На панели инструментов приложения «Конструктор сценариев управления» выберите «Экспорт» > «Функция MATLAB». Экспортированная функция содержит код MATLAB, используемый для создания сценария, созданного в приложении. Откройте экспортированную функцию.

open LeftTurnScenarioNoSensors.m

Вызов этой функции возвращает эти аспекты сценария управления.

  • scenario - Дороги и субъекты сценариев, возвращенные в качестве drivingScenario объект.

  • egoVehicle - Транспортное средство Ego, определенное в сценарии, возвращенное как Vehicle объект. Для получения более подробной информации см. vehicle функция.

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

Изменение функции для создания вариантов сценария

Изменяя код в экспортированной функции MATLAB, можно создать несколько вариантов одного сценария. Одним из распространенных вариантов является тестирование эго-транспортного средства на различных скоростях. В экспортируемой функции MATLAB скорость эго-транспортного средства устанавливается на постоянное значение 10 метров в секунду (speed = 10). Чтобы создать различные скорости эго-транспортного средства, можно преобразовать переменную скорости во входной аргумент функции. Откройте сценарий, содержащий измененную версию экспортированной функции.

open LeftTurnScenarioNoSensorsModified.m

В этой измененной функции:

  • egoSpeed включается в качестве входного аргумента.

  • speed, константная переменная, удаляется.

  • Для вычисления траектории эго-транспортного средства egoSpeed используется вместо speed.

На этом рисунке показаны эти изменения сценария.

Для создания дополнительных вариаций рассмотрим:

  • Изменение параметров дороги и полосы движения для просмотра влияния на обнаружение полос движения

  • Изменение траектории или начальных положений транспортных средств

  • Изменение размеров транспортных средств

Вызов функции для создания программных сценариев

Используя модифицированную функцию, создайте вариант сценария, в котором эго-транспортное средство движется с постоянной скоростью 20 метров в секунду.

scenario = LeftTurnScenarioNoSensorsModified(20) % m/s
scenario = 
  drivingScenario with properties:

        SampleTime: 0.0400
          StopTime: Inf
    SimulationTime: 0
         IsRunning: 1
            Actors: [1x2 driving.scenario.Vehicle]
          Barriers: [0x0 driving.scenario.Barrier]

Импорт измененного сценария в приложение

Чтобы импортировать измененный сценарий с измененным транспортным средством в приложение, используйте drivingScenarioDesigner функция. Укажите drivingScenario объект в качестве входного аргумента.

drivingScenarioDesigner(scenario)

Ранее другое транспортное средство проходило через перекресток первым. Теперь, с увеличением скорости эго-транспортного средства с 10 до 20 метров в секунду, эго-транспортное средство проходит через перекресток первым.

При работе с drivingScenario объекты в приложении, помните об этих моментах.

  • Чтобы опробовать различные скорости эго-транспорта, вызовите экспортированную функцию еще раз, а затем импортируйте новую drivingScenario с использованием drivingScenarioDesigner функция. Приложение не включает пункт меню для импорта этих объектов.

  • Если сценарий включает датчики, можно повторно открыть сценарий и датчики, используя следующий синтаксис: drivingScenarioDesigner(scenario,sensors).

  • Если вы вносите существенные изменения в размеры актера, убедитесь, что ClassID свойство субъекта соответствует значению идентификатора класса, указанному в приложении. Например, в приложении автомобили имеют идентификатор класса 1 и грузовики имеют идентификатор класса 2. Если вы программно изменяете автомобиль, чтобы иметь размеры грузовика, обновите ClassID имущество данного транспортного средства от 1 (автомобиль) в 2 (грузовик).

Импорт измененного сценария в Simulink

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

  1. Установите для параметра Источник сценария управления значение From workspace.

  2. Задайте имя переменной MATLAB или рабочей области модели в качестве имени drivingScenario переменная в рабочей области.

При работе с drivingScenario в Simulink следует помнить об этих точках.

  • Если для параметра Источник эго-транспортного средства установлено значение Scenario, модель использует эго-транспортное средство, определенное в drivingScenario объект. Блок определяет, какой субъект является эго-транспортным средством, на основе указанного ActorID собственность актёра. Этот актер должен быть Vehicle объект (см. vehicle). Для изменения назначенного эго-транспортного средства обновите параметр Ego vehicle «Идентификатор заказчика».

  • При подключении выходных позиций актера к блокам датчиков убедитесь, что в блоках сенсоров параметр для указания источника профилей актера установлен в From Scenario Reader block. При выборе этой опции блоки датчиков получают профили акторов непосредственно от акторов, указанных в drivingScenario объект.

См. также

Приложения

Блоки

Функции

Объекты

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