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

В этом примере показано, как программно создать изменения ведущего сценария, который был создан с помощью приложения Driving Scenario Designer. Программно создание изменений сценария позволяет вам быстро протестировать свои ведущие алгоритмы при нескольких условиях.

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

  1. В интерактивном режиме создайте ведущий сценарий при помощи приложения Driving Scenario Designer.

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

  3. В редакторе MATLAB измените экспортируемую функцию, чтобы создать изменения исходного сценария.

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

  5. Импортируйте объект сценария в приложение, чтобы симулировать модифицированный сценарий или сгенерировать дополнительные сценарии. В качестве альтернативы, чтобы симулировать модифицированный сценарий в Simulink®, импортируйте объект в модель Simulink при помощи блока Scenario Reader.

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

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

addpath(genpath(fullfile(matlabroot,'examples','driving')))

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

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

Этот пример использует ведущий сценарий, который основан на одном из предварительно созданных сценариев, которые можно загрузить из приложения Driving Scenario Designer.

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

drivingScenarioDesigner('LeftTurnScenarioNoSensors.mat')

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

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

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

После того, как вы просмотрите и симулируете сценарий, можно экспортировать сценарий в командную строку MATLAB. От панели инструментов приложения Driving Scenario Designer выберите Export> Export MATLAB Function. Экспортируемая функция содержит код MATLAB, используемый, чтобы произвести сценарий, созданный в приложении. Откройте экспортируемую функцию.

open LeftTurnScenarioNoSensors.m

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

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

  • egoVehicle — Автомобиль, оборудованный датчиком задан в сценарии, возвращенном как 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]

Импортируйте модифицированный сценарий в приложение

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

drivingScenarioDesigner(scenario)

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

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

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

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

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

Импортируйте модифицированный сценарий в Simulink

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

  1. Установите Источник ведущего сценария к From workspace.

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

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

  • Когда Источник автомобиля, оборудованного датчиком установлен в Scenario, модель использует автомобиль, оборудованный датчиком, заданный в вашем drivingScenario объект. Блок определяет, какой агент является автомобилем, оборудованным датчиком на основе заданного ActorID свойство агента. Этим агентом должен быть Vehicle объект (см. vehicle). Чтобы изменить обозначенный автомобиль, оборудованный датчиком, обновите Автомобиль, оборудованный датчиком параметр ActorID.

  • При соединении выходных положений агента с Радарными блоками Генератора Обнаружения Генератора или Видения Обнаружения обновите эти блоки датчика, чтобы получить профили агента непосредственно из drivingScenario объект. По умолчанию эти блоки используют тот же набор профилей агента для всех агентов, где профили заданы на вкладке Actor Profiles блоков. Чтобы получить профили из объекта, на вкладке Actor Profiles каждого блока датчика, устанавливают Избранный метод указывать, что агент профилирует параметр к MATLAB expression. Затем установите выражение MATLAB для параметра профилей агента вызывать actorProfiles функция на объекте. Например: actorProfiles(scenario).

По окончании с этим примером, удаляете папку в качестве примера из пути поиска файлов MATLAB.

rmpath(genpath(fullfile(matlabroot,'examples','driving')))

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

Приложения

Блоки

Функции

Объекты

Похожие темы