exponenta event banner

актер

Добавить актера в сценарий вождения

Описание

ac = actor(scenario) добавляет Actor объект, ac, к сценарию вождения, scenario. Актер имеет значения свойств по умолчанию.

Актёрами являются кубоиды (формы коробок), представляющие находящиеся в движении объекты, такие как автомобили, пешеходы и велосипеды. Действующие лица могут также представлять собой стационарные препятствия, которые могут влиять на движение других действующих лиц, таких как барьеры. Дополнительные сведения об определении субъектов см. в разделе Позиции и размеры актера и транспортного средства.

пример

ac = actor(scenario,Name,Value) задает свойства актера, используя один или несколько аргументов пары имя-значение. Например, можно задать положение, скорость, размеры и ориентацию актера. Вы также можете установить время, чтобы актер нерестился или отчаялся в сценарии.

Примечание

Можно настроить актёров в сценарии вождения на созревание и упадок, а затем импортировать связанные drivingScenario объект в приложении «Конструктор сценариев вождения». Приложение считает, что первым действующим лицом, созданным в сценарии вождения, является ego-исполнитель, и не позволяет ego-исполнителю ни породиться, ни упасть в сценарии.

Примеры

свернуть все

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

Создайте управляющий объект сценария.

scenario = drivingScenario('SampleTime',0.1','StopTime',60);

Создайте криволинейную дорогу, используя точки центра дороги, следующие за дугой окружности с 800-метровым радиусом. Дуга начинается с 0 °, заканчивается с 90 ° и отбирается с шагом 5 °.

angs = [0:5:90]';
R = 800;
roadcenters = R*[cosd(angs) sind(angs) zeros(size(angs))];
roadwidth = 10;
road(scenario,roadcenters,roadwidth);

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

roadcenters = [700 0 0; 100 0 0];
road(scenario,roadcenters)
ans = 
  Road with properties:

           Name: ""
         RoadID: 2
    RoadCenters: [2x3 double]
      RoadWidth: 6
      BankAngle: [2x1 double]

roadcenters = [400 400 0; 0 0 0];
road(scenario,roadcenters)
ans = 
  Road with properties:

           Name: ""
         RoadID: 3
    RoadCenters: [2x3 double]
      RoadWidth: 6
      BankAngle: [2x1 double]

Достань границы дороги.

rbdry = roadBoundaries(scenario);

Добавьте в сценарий автомобиль и велосипед. Расположите автомобиль в начале первой прямой дороги.

car = vehicle(scenario,'ClassID',1,'Position',[700 0 0], ...
    'Length',3,'Width',2,'Height',1.6);

Расположите велосипед дальше по дороге.

bicycle = actor(scenario,'ClassID',3,'Position',[706 376 0]', ...
    'Length',2,'Width',0.45,'Height',1.5);

Постройте график сценария.

plot(scenario,'Centerline','on','RoadCenters','on');
title('Scenario');

Figure contains an axes. The axes with title Scenario contains 1219 objects of type patch, line.

Отображение поз и профилей актера.

poses = actorPoses(scenario)
poses=2×1 struct array with fields:
    ActorID
    Position
    Velocity
    Roll
    Pitch
    Yaw
    AngularVelocity

profiles = actorProfiles(scenario)
profiles=2×1 struct array with fields:
    ActorID
    ClassID
    Length
    Width
    Height
    OriginOffset
    MeshVertices
    MeshFaces
    RCSPattern
    RCSAzimuthAngles
    RCSElevationAngles

Создайте сценарий управления. Установите время остановки для сценария равным 3 секундам.

scenario = drivingScenario('StopTime',3);

Добавьте двухполосную дорогу к сценарию.

roadCenters = [0 1 0; 53 1 0];
laneSpecification = lanespec([1 1]);
road(scenario,roadCenters,'Lanes',laneSpecification);

Добавьте другую дорогу, которая пересекает первую дорогу под прямым углом, чтобы сформировать Т-образную форму.

roadCenters = [20.3 38.4 0; 20 3 0];
laneSpecification = lanespec(2);
road(scenario,roadCenters,'Lanes',laneSpecification)
ans = 
  Road with properties:

           Name: ""
         RoadID: 2
    RoadCenters: [2x3 double]
      RoadWidth: 7.3500
      BankAngle: [2x1 double]

Добавьте ego-транспортное средство в сценарий и определите его ППМ. Задайте скорость эго-транспортного средства 20 м/с и создайте траектории для эго-транспортного средства.

egoVehicle = vehicle(scenario,'ClassID',1, ...
                    'Position',[1.5 2.5 0]);
waypoints = [2 3 0; 13 3 0;
            21 3 0; 31 3 0;
            43 3 0; 47 3 0];
speed = 20;
trajectory(egoVehicle,waypoints,speed)

Добавьте в сценарий актера, не являющегося ego. Задайте для элемента, не являющегося эго, значение «породить» и «упасть» два раза во время моделирования, указав векторы для времени входа и времени выхода. Обратите внимание, что каждое значение времени входа меньше соответствующего значения времени выхода.

nonEgoactor1 = actor(scenario,'ClassID',1, ...
                'Position',[22 30 0],'EntryTime',[0.2 1.4],'ExitTime',[1.0 2.0]);

Определите ППМ для субъекта, не являющегося эго. Установите скорость не эго-актера 30 м/с и создайте его траектории.

waypoints = [22 35 0; 22 23 0;
            22 13 0; 22 7 0;
            18 -0.3 0; 12 -0.8 0; 3 -0.8 0];
speed = 30;
trajectory(nonEgoactor1,waypoints,speed)

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

nonEgoactor2 = actor(scenario,'ClassID',1, ...
                'Position',[48 -1 0],'EntryTime',2);

Определите ППМ для второго объекта, не являющегося эго. Установите скорость актера 50 м/с и создайте его траектории.

waypoints = [48 -1 0; 42 -1 0; 28 -1 0;
            16 -1 0; 12 -1 0];
speed = 50;
trajectory(nonEgoactor2,waypoints,speed)

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

fig = figure;
set(fig,'Position',[0 0 600 600])
movegui(fig,'center')
hViewPnl = uipanel(fig,'Position',[0 0 1 1],'Title','Actor Spawn and Despawn');
hPlt = axes(hViewPnl);

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

plot(scenario,'Waypoints','on','Parent',hPlt)
while advance(scenario)
    pause(0.1)
end

Figure contains an axes and an object of type uipanel. The axes contains 9 objects of type patch, line.

Входные аргументы

свернуть все

Сценарий управления, указанный как drivingScenario объект.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Height',1.7 устанавливает высоту актёра на 1,7 метра при создании.

Классификационный идентификатор субъекта, указанный как разделенная запятыми пара, состоящая из 'ClassID' и неотрицательное целое число.

Определить ClassID значения для группирования субъектов, имеющих схожие размеры, модели сечения радара (RCS) или другие свойства. В качестве наилучшей практики, прежде чем добавлять актеров в drivingScenario определите схему классификации субъектов, которую требуется использовать. Затем при создании актеров укажите ClassID пара имя-значение для установки идентификаторов классификации в соответствии со схемой классификации субъектов.

Предположим, что требуется создать сценарий, содержащий следующие субъекты:

  • Два автомобиля, один из которых - эго-автомобиль

  • Грузовик

  • Велосипед

  • Майковый барьер вдоль дороги

Код показывает пример схемы классификации для этого сценария, где 1 относится к автомобилям, 2 относится к грузовым автомобилям, 3 относится к велосипедам и 5 относится к шлагбаумам для майки. Автомобили имеют свойства транспортного средства по умолчанию. Грузовик и велосипед имеют размеры типичного грузовика и велосипеда соответственно.

scenario = drivingScenario;
ego = vehicle(scenario,'ClassID',1);
car = vehicle(scenario,'ClassID',1);
truck = vehicle(scenario,'ClassID',2,'Length',8.2,'Width',2.5,'Height',3.5);
bicycle = actor(scenario,'ClassID',3,'Length',1.7,'Width',0.45,'Height',1.7);
mainRoad = road(scenario,[0 0 0;10 0 0]);
barrier(scenario,mainRoad,'ClassID',5);

Дефолт ClassID из 0 зарезервирован для объекта неизвестного или неназначенного класса. Если вы планируете импортировать drivingScenario объекты в приложении «Конструктор сценариев управления», не покидайте ClassID свойство актёров, для которого установлено значение 0. Приложение не распознает ClassID из 0 для актёров и возвращает ошибку. Вместо этого установить ClassID значения субъектов в соответствии со схемой классификации субъектов, используемой в приложении.

ClassIDИмя класса
1Автомобиль
2Грузовик
3Велосипед
4Пешеход
5Барьер Джерси
6Поручень

Имя актера, указанное как разделенная запятыми пара, состоящая из 'Name' и вектор символов или строковый скаляр.

Пример: 'Name','Actor1'

Пример: "Name","Actor1"

Типы данных: char | string

Время входа актера в сценарий вождения, определяемое как разделенная запятыми пара, состоящая из 'EntryTime' и положительный скаляр или вектор положительных значений. Единицы измерения измеряются в секундах с момента начала сценария.

Укажите этот аргумент пары «имя-значение» для добавления или включения актера в сценарий управления во время выполнения моделирования.

  • Чтобы создать актера только один раз, укажите время входа как скаляр.

  • Чтобы создать актера несколько раз, укажите время входа в качестве вектора.

    • Расположите элементы вектора в порядке возрастания.

    • Длина вектора должна соответствовать длине вектора времени выхода.

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

  • Каждое значение времени входа должно быть меньше времени остановки сценария. Можно задать время остановки для сценария, указав значение для 'StopTime' имущества drivingScenario объект.

Пример: 'EntryTime',2

Пример: 'EntryTime',[2 4]

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Время выхода актера из сценария вождения, определяемое как разделенная запятыми пара, состоящая из 'ExitTime' и положительный скаляр или вектор положительных значений. Единицы измерения измеряются в секундах с момента начала сценария.

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

  • Чтобы сбросить актера только один раз, укажите время выхода как скаляр.

  • Чтобы сбросить актера несколько раз, укажите время выхода в качестве вектора.

    • Расположите элементы вектора в порядке возрастания.

    • Длина вектора должна соответствовать длине вектора времени входа.

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

  • Каждое значение времени выхода должно быть меньше времени остановки сценария. Можно задать время остановки для сценария, указав значение для 'StopTime' имущества drivingScenario объект.

Пример: 'ExitTime',3

Пример: 'ExitTime',[3 6]

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Цвет отображения актера, указанный как разделенная запятыми пара, состоящая из 'PlotColor' и триплет RGB, шестнадцатеричный код цвета, имя цвета или короткое имя цвета.

Актер появляется в указанном цвете во всех программных визуализациях сценария, включая plot функция, chasePlot функции и функции печати birdsEyePlot объекты. При импорте сценария в приложение «Конструктор сценариев управления» актер отображается в этом цвете во всех визуализациях приложения. Если импортировать сценарий в Simulink ®, то актер появится в этом цвете в области «Птичий глаз».

Если цвет для актера не указан, функция назначает его на основе порядка цветов по умолчанию Axes объекты. Дополнительные сведения см. в разделе ColorOrder свойство для Axes объекты.

Для пользовательского цвета укажите триплет RGB или шестнадцатеричный цветовой код.

  • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

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

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB ®, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Положение центра актера, определяемое как разделенная запятыми пара, состоящая из 'Position' и [x y z] действительный вектор.

Центр актёра - [L/2 W/2 b], где:

  • L/2 - середина длины актёра L.

  • W/2 - середина ширины W.

  • b - дно кубоида.

Единицы в метрах.

Пример: [10;50;0]

Скорость (v) центра актера в направлениях x, y и z, указанная как разделенная запятыми пара, состоящая из 'Velocity' и [vx vy vz] действительный вектор. 'Position' пара имя-значение указывает центр актера. Единицы измерения в метрах в секунду.

Пример: [-4;7;10]

Угол рыскания актера, определяемый как разделенная запятыми пара, состоящая из 'Yaw' и реальный скаляр. Yaw - угол поворота актера вокруг оси Z. Рыскание по часовой стрелке - положительное при взгляде в прямом направлении оси, которая указывает вверх от земли. Поэтому при просмотре актёров сверху вниз, как, например, на сюжете птичьего глаза, рыскание против часовой стрелки-положительное. Значения углов переносятся в диапазон [-180, 180]. Единицы измерения в градусах.

Пример: -0.4

Угол тангажа актера, определяемый как разделенная запятыми пара, состоящая из 'Pitch' и реальный скаляр. Шаг представляет собой угол поворота актера вокруг оси y и является по часовой стрелке-положительным при взгляде в прямом направлении оси. Значения углов переносятся в диапазон [-180, 180]. Единицы измерения в градусах.

Пример: 5.8

Угол крена актера, определяемый как разделенная запятыми пара, состоящая из 'Roll' и реальный скаляр. Крен - угол поворота актера вокруг оси X и является положительным по часовой стрелке при взгляде в прямом направлении оси. Значения углов переносятся в диапазон [-180, 180]. Единицы измерения в градусах.

Пример: -10

Угловая скорость (λ) действующего лица в мировых координатах, определяемая как разделенная запятыми пара, состоящая из 'AngularVelocity' и вектор, который имеет действительное значение . Единицы измерения в градусах в секунду.

Пример: [20 40 20]

Длина актера, определяемая как разделенная запятыми пара, состоящая из 'Length' и положительный действительный скаляр. Единицы в метрах.

Пример: 5.5

Ширина актера, определяемая как разделенная запятыми пара, состоящая из 'Width' и положительный действительный скаляр. Единицы в метрах.

Пример: 3.0

Высота актера, определяемая как разделенная запятыми пара, состоящая из 'Height' и положительный действительный скаляр. Единицы измерения - метры.

Пример: 2.1

Расширенная сетка объекта, заданная как extendedObjectMesh объект.

Схема сечения РЛС (RCS) действующего лица, определяемая как разделенная запятыми пара, состоящая из 'RCSPattern' и матрицу вещественных значений Q-by-P. РСК - функция углов азимута и места, где:

  • Q - количество углов места, определяемых 'RCSElevationAngles' пара имя-значение.

  • P - количество азимутальных углов, указанных 'RCSAzimuthAngles' пара имя-значение.

Единицы измерения в децибелах на квадратный метр (дБсм).

Пример: 5.8

Азимутальные углы шаблона RCS актера, определяемые как разделенная запятыми пара, состоящая из 'RCSAzimuthAngles' и P-элемент вещественно-значного вектора. P - количество азимутальных углов. Значения находятся в диапазоне [-180 °, 180 °].

Каждый элемент RCSAzimuthAngles определяет азимутальный угол соответствующего столбца 'RCSPattern' пара имя-значение. Единицы измерения в градусах.

Пример: [-90:90]

Углы возвышения шаблона RCS актера, определяемые как разделенная запятыми пара, состоящая из 'RCSElevationAngles' и Q-элементный действительный вектор. Q - количество углов возвышения. Значения находятся в диапазоне [-90 °, 90 °].

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

Пример: [0:90]

Выходные аргументы

свернуть все

Актер сценария вождения, возвращенный как Actor объект, принадлежащий управляющему сценарию, указанному scenario.

Вы можете изменить Actor путем изменения значений свойств объекта. Имена свойств соответствуют аргументам пары имя-значение, используемым для создания объекта. Единственное свойство, которое нельзя изменить - ActorID, которое является положительным целым числом, указывающим уникальный, определяемый сценарием идентификатор субъекта.

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

trajectory

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

smoothTrajectory

Создание плавной, ограниченной толчком траектории движения или транспортного средства в сценарии вождения

chasePlot

Эго-ориентированный проективный перспективный график

Для получения информации о характеристиках актера используйте следующие функции:

actorPoses

Позиции, скорости и ориентации субъектов в сценарии вождения

actorProfiles

Физические и радиолокационные характеристики субъектов в сценарии вождения

targetOutlines

Контуры целей, просматриваемых действующим лицом

targetPoses

Целевые положения и ориентации относительно эго-транспортного средства

driving.scenario.targetsToEgo

Преобразовать позы актера в координаты эго-транспортного средства

driving.scenario.targetsToScenario

Преобразовать позы целевого актера из координат эго-транспортного средства в мировые координаты сценария

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

roadBoundaries

Получить границы дорог

driving.scenario.roadBoundariesToEgo

Преобразование границ дорог в координаты эго-транспортных средств

currentLane

Получить текущую полосу актера

laneBoundaries

Получить границы полосы актера

laneMarkingVertices

Разметка вершин и граней полосы движения в сценарии вождения

roadMesh

Сетчатое представление ближайших дорог актера в сценарии вождения.

Подробнее

свернуть все

Положение и размеры субъектов и транспортных средств

В сценариях вождения актёром является кубовидный (коробчатый) объект с определёнными длиной, шириной и высотой. Актеры также имеют схему радиолокационного сечения (RCS), заданную в дБсм, которую можно уточнить, задав угловые координаты азимута и отметки. Положение актера определяется как центр его нижней грани. Эта центральная точка используется в качестве центра вращения актера, точки контакта с землей и начала координат в локальной системе координат. В этой системе координат:

  • Ось X указывает вперед от актера.

  • Точки оси Y, оставшиеся от актера.

  • Ось Z указывает вверх от земли.

Крен, шаг и рыскание являются положительными по часовой стрелке при взгляде в прямом направлении осей X, Y и Z соответственно.

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

  • Колесная база - расстояние между передней и задней осями

  • Передний свес - расстояние между передней частью транспортного средства и передней осью

  • Задний свес - расстояние между задней осью и задней частью транспортного средства

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

  • Ось X указывает вперед от транспортного средства.

  • Точки оси Y, оставшиеся от транспортного средства.

  • Ось Z указывает вверх от земли.

Крен, шаг и рыскание являются положительными по часовой стрелке при взгляде в прямом направлении осей X, Y и Z соответственно.

В этой таблице представлен список общих субъектов и их измерений. Чтобы указать эти значения в Actor и Vehicle задайте соответствующие отображаемые свойства.

Классификация актёровОбъект-исполнительСвойства актера
LengthWidthHeightFrontOverhangRearOverhangWheelbaseRCSPattern
ПешеходActor0,24 м0,45 м1,7 мН/ДН/ДН/Д-8 дБсм
АвтомобильVehicle4,7 м1,8 м1,4 м0,9 м1,0 м2,8 м10 дБсм
МотоциклVehicle2,2 м0,6 м1,5 м0,37 м0,32 м1,51 м0 дБсм

Представлен в R2017a