Добавьте агента в ведущий сценарий
добавляет ac
= actor(scenario
)Actor
объект, ac
, к ведущему сценарию, scenario
. Агент имеет значения свойств по умолчанию.
Actors является кубоидами (формы поля), которые представляют объекты в движении, такие как автомобили, пешеходы и велосипеды. Агенты могут также представлять стационарные препятствия, которые могут влиять на движение других агентов, таких как барьеры. Для получения дополнительной информации о том, как агенты заданы, смотрите Положения Агента и Транспортного средства и Размерности.
свойства агента наборов с помощью одного или нескольких аргументов пары "имя-значение". Например, можно установить положение, скорость, размерности и ориентацию агента. Можно также назначить время для агента, чтобы метать икру или despawn в сценарии.ac
= actor(scenario
,Name,Value
)
Примечание
Можно сконфигурировать агентов в ведущем сценарии, чтобы метать икру и despawn, и затем импортировать связанный drivingScenario
объект в приложение Driving Scenario Designer. Приложение считает первого агента созданным в ведущем сценарии, чтобы быть агентом эго и не позволяет агенту эго или метать икру или despawn в сценарии.
Создайте ведущий сценарий, содержащий кривую дорогу, две дороги подряд и двух агентов: автомобиль и велосипед. Оба агента проходят дорога в течение 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');
Отобразите положения агента и профили.
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);
Добавьте дорогу 2D маршрута к сценарию.
roadCenters = [0 1 0; 53 1 0];
laneSpecification = lanespec([1 1]);
road(scenario,roadCenters,'Lanes',laneSpecification);
Добавьте другую дорогу, которая пересекает первую дорогу под прямым углом, чтобы сформировать T-форму.
roadCenters = [20.3 33.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]
Добавьте автомобиль, оборудованный датчиком в сценарий и задайте его waypoints. Установите скорость автомобиля, оборудованного датчиком на 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 = 15; trajectory(egoVehicle,waypoints,speed)
Добавьте агента неэго в сценарий. Настройте актера неэго икре и despawn во время симуляции путем определения времени записи и выходного времени.
nonEgoactor1 = actor(scenario,'ClassID',1, ... 'Position',[22 30 0],'EntryTime',0.8,'ExitTime',2);
Задайте waypoints для агента неэго. Установите скорость агента неэго на 35 м/с и сгенерируйте ее траектории.
waypoints = [22 30 0; 22 23 0; 22 13 0; 22 7 0; 18 -0.3 0; 12 -0.8 0; 3 -0.8 0]; speed = 35; trajectory(nonEgoactor1,waypoints,speed)
Добавьте другого агента неэго в сценарий. Настройте второго актера неэго, чтобы метать икру во время симуляции путем определения времени записи. Поскольку вы не задаете выходное время, этот агент останется в сценарии, пока сценарий не закончится.
nonEgoactor2 = actor(scenario,'ClassID',1, ... 'Position',[48 -1 0],'EntryTime',2);
Задайте waypoints для второго агента неэго. Установите скорость агента на 60 м/с и сгенерируйте ее траектории.
waypoints = [48 -1 0; 42 -1 0; 28 -1 0; 16 -1 0; 6 -1 0]; speed = 60; 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);
Постройте сценарий и запустите симуляцию. Наблюдайте, как икра агентов неэго и despawn в сценарии, в то время как симуляция запускается.
plot(scenario,'Waypoints','on','Parent',hPlt) while advance(scenario) pause(0.1) end
scenario
— Ведущий сценарийdrivingScenario
объектВедущий сценарий в виде drivingScenario
объект.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Height',1.7
устанавливает высоту агента к 1,7 метрам после создания.'ClassID'
— Идентификатор классификации
(значение по умолчанию) | неотрицательное целое числоИдентификатор классификации агента в виде разделенной запятой пары, состоящей из 'ClassID'
и неотрицательное целое число.
Задайте ClassID
значения, чтобы группироваться агенты, которые имеют подобные размерности, шаблоны радарного поперечного сечения (RCS) или другие свойства. Как лучшая практика, перед добавляющими агентами к drivingScenario
возразите, определите систему классификации агента, которую вы хотите использовать. Затем при создании агентов задайте ClassID
пара "имя-значение", чтобы установить идентификаторы классификации согласно системе классификации агента.
Предположим, что вы хотите создать сценарий, содержащий этих агентов:
Два автомобиля, один из которых является автомобилем, оборудованным датчиком
Грузовик
Велосипед
Код показывает демонстрационную систему классификации для этого сценария, где 1
относится к автомобилям, 2
относится к грузовикам и 3
относится к велосипедам. Автомобили имеют свойства транспортного средства по умолчанию. Грузовик и велосипед имеют размерности типичного грузовика и велосипеда, соответственно.
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);
ClassID
по умолчанию из
0
резервируется для объекта неизвестного или неприсвоенного класса. Если вы планируете импортировать drivingScenario
объекты в приложение Driving Scenario Designer, не оставляйте ClassID
свойство набора агентов к 0
. Приложение не распознает ClassID
из 0
для агентов и возвращает ошибку. Вместо этого установите ClassID
значения агентов согласно системе классификации агента используются в приложении.
ClassID | ClassName |
---|---|
1
| Автомобиль |
2
| Грузовик |
3
| Велосипед |
4
| Пешеход |
5
| Барьер |
'Name'
— Имя агента""
(значение по умолчанию) | вектор символов | строковый скалярИмя агента в виде разделенной запятой пары, состоящей из 'Name'
и вектор символов или строковый скаляр.
Пример: 'Name','Actor1'
Пример: "Name","Actor1"
Типы данных: char |
string
'EntryTime'
— Время записи для агента, чтобы метать икру
(значение по умолчанию) | положительная скалярная величинаВремя записи для агента, чтобы метать икру в ведущем сценарии в виде разделенной запятой пары, состоящей из 'EntryTime'
и положительная скалярная величина. Модули находятся в секундах, измеренных со времени начала сценария.
Задайте этот аргумент пары "имя-значение", чтобы добавить или заставить агента появиться в ведущем сценарии в требуемое время, в то время как симуляция запускается.
Если агент имеет связанное выходное время, то время записи должно быть меньше заданного выходного времени.
Если агент не имеет связанного выходного времени, то время записи должно быть меньше чем или равно времени остановки сценария. Можно установить время остановки для сценария путем определения значения для 'StopTime'
свойство drivingScenario
объект.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'ExitTime'
— Выйдите из времени для агента к despawnInf
(значение по умолчанию) | положительная скалярная величинаВыйдите из времени для агента к despawn из ведущего сценария в виде разделенной запятой пары, состоящей из 'ExitTime'
и положительная скалярная величина. Модули находятся в секундах, измеренных со времени начала сценария.
Задайте этот аргумент пары "имя-значение", чтобы демонтировать или заставить агента исчезнуть из сценария в требуемое время, в то время как симуляция запускается.
Если агент имеет связанное время записи, то выходное время должно быть больше заданного времени записи.
Если агент не имеет связанного времени записи, то выходное время должно быть меньше чем или равно времени остановки сценария. Можно установить время остановки для сценария путем определения значения для 'StopTime'
свойство drivingScenario
объект.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'PlotColor'
— Цвет отображения агентаЦвет отображения агента в виде разделенной запятой пары, состоящей из 'PlotColor'
и триплет RGB, шестнадцатеричный цветовой код, название цвета или короткое название цвета.
Агент появляется в заданном, раскрашивают всю программируемую визуализацию сценария, включая plot
функция, chasePlot
функция и функции построения графика birdsEyePlot
объекты. Если вы импортируете сценарий в приложение Driving Scenario Designer, то агент появляется в этом, раскрашивают всю визуализацию приложения. Если вы импортируете сценарий в Simulink®, то агент появляется в этом, раскрашивают Bird's-Eye Scope.
Если вы не задаете цвет для агента, функция присваивает один на основе порядка цвета по умолчанию 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] вектор с действительным знакомПоложение агента сосредотачивается в виде разделенной запятой пары, состоящей из 'Position'
и [x
y
z] вектор с действительным знаком.
Центром агента является [L/2 W/2 b], где:
L/2 является средней точкой длины агента L.
W/2 является средней точкой ширины агента W.
b является нижней частью кубоида.
Модули исчисляются в метрах.
Пример: [10;50;0]
'Velocity'
— Скорость центра агента
(значение по умолчанию) | [v x
v y
v z] вектор с действительным знакомСкорость (v) агента сосредотачивается в x - y - и z - направления в виде разделенной запятой пары, состоящей из 'Velocity'
и [v x
v y
v z] вектор с действительным знаком. 'Position'
пара "имя-значение" задает центр агента. Модули исчисляются в метрах в секунду.
Пример: [-4;7;10]
'Yaw'
— Угол отклонения от курса агента
(значение по умолчанию) | действительный скалярУгол отклонения от курса агента в виде разделенной запятой пары, состоящей из 'Yaw'
и действительный скаляр. Yaw является углом вращения агента вокруг z - ось. Отклонение от курса по часовой стрелке положительно при взгляде в прямом направлении оси, которая подчеркивает от земли. Поэтому при просмотре агентов от верхней части вниз, такой как на видимом с большого расстояния графике, отклонение от курса против часовой стрелки положительно. Угловые значения перенесены к области значений [–180, 180]. Модули в градусах.
Пример: -0.4
'Pitch'
— Передайте угол агента
(значение по умолчанию) | действительный скалярПередайте угол агента в виде разделенной запятой пары, состоящей из 'Pitch'
и действительный скаляр. Pitch является углом вращения агента вокруг y - ось и по часовой стрелке положителен при взгляде в прямом направлении оси. Угловые значения перенесены к области значений [–180, 180]. Модули в градусах.
Пример: 5.8
'Roll'
— Угол вращения агента
(значение по умолчанию) | действительный скалярУгол вращения агента в виде разделенной запятой пары, состоящей из 'Roll'
и действительный скаляр. Roll является углом вращения агента вокруг x - ось и по часовой стрелке положителен при взгляде в прямом направлении оси. Угловые значения перенесены к области значений [–180, 180]. Модули в градусах.
Пример: -10
'AngularVelocity'
— Скорость вращения агента
(значение по умолчанию) | [ω x
ω y
ω z] вектор с действительным знакомСкорость вращения (ω) агента, в мировых координатах в виде разделенной запятой пары, состоящей из 'AngularVelocity'
и [ω x
ω y
ω z] вектор с действительным знаком. Модули в градусах в секунду.
Пример: [20 40 20]
'Length'
— Длина агента
(значение по умолчанию) | положительный действительный скалярДлина агента в виде разделенной запятой пары, состоящей из 'Length'
и положительный действительный скаляр. Модули исчисляются в метрах.
Пример: 5.5
'Width'
— Ширина агента
(значение по умолчанию) | положительный действительный скалярШирина агента в виде разделенной запятой пары, состоящей из 'Width'
и положительный действительный скаляр. Модули исчисляются в метрах.
Пример: 3.0
'Height'
— Высота агента
(значение по умолчанию) | положительный действительный скалярВысота агента в виде разделенной запятой пары, состоящей из 'Height'
и положительный действительный скаляр. Модули являются метрами.
Пример: 2.1
'Mesh'
— Расширенная объектная meshextendedObjectMesh
объектРасширенная объектная mesh в виде extendedObjectMesh
объект.
'RCSPattern'
— Радарный шаблон поперечного сечения агента
(значение по умолчанию) | Q-by-P матрица с действительным знакомШаблон радарного поперечного сечения (RCS) агента в виде разделенной запятой пары, состоящей из 'RCSPattern'
и Q-by-P матрица с действительным знаком. RCS является функцией азимута и углов возвышения, где:
Q является количеством углов возвышения, заданных 'RCSElevationAngles'
пара "имя-значение".
P является количеством углов азимута, заданных 'RCSAzimuthAngles'
пара "имя-значение".
Модули находятся в децибелах на квадратный метр (dBsm).
Пример: 5.8
'RCSAzimuthAngles'
— Углы азимута шаблона агента RCS
(значение по умолчанию) | P - элемент вектор с действительным знакомУглы азимута шаблона агента RCS в виде разделенной запятой пары, состоящей из 'RCSAzimuthAngles'
и P - элемент вектор с действительным знаком. P является количеством углов азимута. Значения находятся в области значений [-180 °, 180 °].
Каждый элемент RCSAzimuthAngles
задает угол азимута соответствующего столбца 'RCSPattern'
пара "имя-значение". Модули в градусах.
Пример: [-90:90]
'RCSElevationAngles'
— Углы возвышения шаблона агента RCS
(значение по умолчанию) | Q - элемент вектор с действительным знакомУглы возвышения шаблона агента RCS в виде разделенной запятой пары, состоящей из 'RCSElevationAngles'
и Q - элемент вектор с действительным знаком. Q является количеством углов возвышения. Значения находятся в области значений [-90 °, 90 °].
Каждый элемент RCSElevationAngles
задает угол возвышения соответствующей строки RCSPattern
свойство. Модули в градусах.
Пример: [0:90]
ac
— Ведущий агент сценарияActor
объектВедущий агент сценария, возвращенный как Actor
объект, принадлежащий ведущему сценарию, задан scenario
.
Можно изменить Actor
объект путем изменения его значений свойств. Имена свойства соответствуют аргументам пары "имя-значение", используемым, чтобы создать объект. Единственным свойством, которое вы не можете изменить, является ActorID
, который является положительным целым числом, указывающим на уникальный, заданный сценарием ID агента.
Чтобы задать или визуализировать движение агента, используйте эти функции:
trajectory | Создайте агента или траекторию транспортного средства в ведущем сценарии |
chasePlot | Эгоцентрический проективный перспективный график |
Чтобы получить информацию о характеристиках агента, используйте эти функции:
actorPoses | Положения, скорости и ориентации агентов в ведущем сценарии |
actorProfiles | Физический и радарные характеристики агентов в ведущем сценарии |
targetOutlines | Основы целей просматриваются агентом |
targetPoses | Целевые положения и ориентации относительно автомобиля, оборудованного датчиком |
driving.scenario.targetsToEgo | Преобразуйте положения агента в координаты автомобиля, оборудованного датчиком |
driving.scenario.targetsToScenario | Преобразуйте целевые положения агента от координат автомобиля, оборудованного датчиком до мировых координат сценария |
Чтобы получить информацию о дорогах и маршрутах, что агент работает, используйте эти функции:
roadBoundaries | Получите дорожные контуры |
driving.scenario.roadBoundariesToEgo | Преобразуйте дорожные контуры в координаты автомобиля, оборудованного датчиком |
currentLane | Получите текущий маршрут агента |
laneBoundaries | Получите контуры маршрута маршрута агента |
laneMarkingVertices | Вершины маркировки маршрута и поверхности в ведущем сценарии |
roadMesh | Поймайте в сети представление самых близких дорог агента в ведущем сценарии. |
В ведущих сценариях actor является кубоидом объект, (имеющий форму поля) с определенной длиной, шириной и высотой. Агенты также имеют шаблон радарного поперечного сечения (RCS), заданный в dBsm, который можно совершенствовать путем установки углового азимута и координат вертикального изменения. Положение агента задано как центр его нижней поверхности. Эта центральная точка используется в качестве вращательного центра агента, его точки контакта с землей и его источника в его системе локальной координаты. В этой системе координат:
X - ось указывает вперед от агента.
Y - точки оси, оставленные от агента.
Z - ось подчеркивает от земли.
Прокрутитесь, сделайте подачу, и отклонение от курса по часовой стрелке положительно при взгляде в прямом направлении X - Y - и Z - оси, соответственно.
vehicle является агентом, который перемещается в колеса. Транспортные средства имеют три дополнительных свойства, которые управляют размещением их передней и задней оси.
Wheelbase — Расстояние между передними и задними осями
Front overhang — Расстояние между передней стороной транспортного средства и передней осью
Rear overhang — Расстояние между задней осью и задней частью транспортного средства
В отличие от других типов агентов, положение транспортного средства задано точкой на том основании, что ниже центра ее задней оси. Эта точка соответствует естественному центру вращения транспортного средства. Как с агентами нетранспортного средства, эта точка является источником в системе локальной координаты транспортного средства, где:
X - ось указывает вперед от транспортного средства.
Y - точки оси, оставленные от транспортного средства.
Z - ось подчеркивает от земли.
Прокрутитесь, сделайте подачу, и отклонение от курса по часовой стрелке положительно при взгляде в прямом направлении X - Y - и Z - оси, соответственно.
Эта таблица показывает список общих агентов и их размерностей. Задавать эти значения в Actor
и Vehicle
объекты, набор соответствующие показанные свойства.
Классификация агентов | Объект агента | Свойства агента | ||||||
---|---|---|---|---|---|---|---|---|
Length | Width | Height | FrontOverhang | RearOverhang | Wheelbase | RCSPattern | ||
Пешеход | Actor | 0,24 м | 0,45 м | 1,7 м | Нет данных | Нет данных | Нет данных | – 8 dBsm |
Автомобиль | Vehicle | 4,7 м | 1,8 м | 1,4 м | 0,9 м | 1,0 м | 2,8 м | 10 dBsm |
Мотоцикл | Vehicle | 2,2 м | 0,6 м | 1,5 м | 0,37 м | 0,32 м | 1,51 м | 0 dBsm |
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.