Положения, скорости и ориентации агентов в ведущем сценарии
возвращает текущие положения (положения, скорости и ориентации) для всех агентов в ведущем сценарии, poses
= actorPoses(scenario
)scenario
. Агенты включают Actor
и Vehicle
объекты, которые можно создать использование actor
и vehicle
функции, соответственно. Положения агента находятся в координатах сценария.
Создайте ведущий сценарий, содержащий кривую дорогу, две дороги подряд и двух агентов: автомобиль и велосипед. Оба агента проходят дорога в течение 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) roadcenters = [400 400 0; 0 0 0]; road(scenario,roadcenters)
Получите дорожные контуры.
rbdry = roadBoundaries(scenario);
Добавьте автомобиль и велосипед к сценарию. Расположите автомобиль в начале первой дороги подряд.
car = vehicle(scenario,'Position',[700 0 0],'Length',3,'Width',2,'Height',1.6);
Расположите велосипед дальше в будущем.
bicycle = actor(scenario,'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×7 struct
ActorID
Position
Velocity
Roll
Pitch
Yaw
AngularVelocity
profiles = actorProfiles(scenario)
profiles=2×9 struct
ActorID
ClassID
Length
Width
Height
OriginOffset
RCSPattern
RCSAzimuthAngles
RCSElevationAngles
Создайте ведущий сценарий, содержащий три транспортных средства. Найдите целевые положения двух из транспортных средств, как просматривается третьим транспортным средством. Целевые положения возвращены в эгоцентрической системе координат третьего транспортного средства.
Создайте ведущий сценарий.
scenario = drivingScenario;
Создайте целевых агентов.
actor(scenario,'Position',[10 20 30], ... 'Velocity',[12 113 14], ... 'Yaw',54, ... 'Pitch',25, ... 'Roll',22, ... 'AngularVelocity',[24 42 27]); actor(scenario,'Position',[17 22 12], ... 'Velocity',[19 13 15], ... 'Yaw',45, ... 'Pitch',52, ... 'Roll',2, ... 'AngularVelocity',[42 24 29]);
Добавьте агента автомобиля, оборудованного датчиком.
ego = actor(scenario,'Position',[1 2 3], ... 'Velocity',[1.2 1.3 1.4], ... 'Yaw',4, ... 'Pitch',5, ... 'Roll',2, ... 'AngularVelocity',[4 2 7]);
Используйте actorPoses
возвратить положения всех агентов. Изложите свойства (положение, скорость и ориентация) находятся в координатах сценария.
allposes = actorPoses(scenario);
Используйте driving.scenario.targetsToEgo
преобразовывать только целевые положения в эгоцентрические координаты агента эго. Исследуйте положение первого агента.
targetposes1 = driving.scenario.targetsToEgo(allposes(1:2),ego); disp(targetposes1(1))
ActorID: 1 Position: [7.8415 18.2876 27.1675] Velocity: [18.6826 112.0403 9.2960] Roll: 16.4327 Pitch: 23.2186 Yaw: 47.8114 AngularVelocity: [-3.3744 47.3021 18.2569]
В качестве альтернативы используйте targetPoses
получить все положения агента неэго в координатах автомобиля, оборудованного датчиком. Сравните эти положения с ранее расчетными положениями.
targetposes2 = targetPoses(ego); disp(targetposes2(1))
ActorID: 1 ClassID: 0 Position: [7.8415 18.2876 27.1675] Velocity: [18.6826 112.0403 9.2960] Roll: 16.4327 Pitch: 23.2186 Yaw: 47.8114 AngularVelocity: [-3.3744 47.3021 18.2569]
scenario
— Ведущий сценарийdrivingScenario
объектВедущий сценарий, заданный как drivingScenario
объект.
poses
— Положения агентаПоложения агента, в координатах сценария, возвратились как структура или массив структур. Poses является положениями, скоростями и ориентациями агентов.
Каждая структура в poses
имеет эти поля.
Поле | Описание |
---|---|
ActorID | Заданный сценарием идентификатор агента, заданный как положительное целое число. |
Position | Положение агента, заданного как [x y z] вектор с действительным знаком. Модули исчисляются в метрах. |
Velocity | Скорость (v) агента в x - y - и z - направления, заданные как [v x v y v z] вектор с действительным знаком. Модули исчисляются в метрах в секунду. |
Roll | Угол вращения агента, заданного как действительный скаляр. Модули в градусах. |
Pitch | Передайте угол агента, заданного как действительный скаляр. Модули в градусах. |
Yaw | Угол отклонения от курса агента, заданного как действительный скаляр. Модули в градусах. |
AngularVelocity | Скорость вращения (ω) агента в x - y - и z - направления, заданные как [ω x ω y ω z] вектор с действительным знаком. Модули в градусах в секунду. |
Для полных определений этих полей структуры смотрите actor
и vehicle
функции.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.