actorPoses

Положения, скорости и ориентации агентов в ведущем сценарии

Описание

пример

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]

Входные параметры

свернуть все

Ведущий сценарий, заданный как drivingScenario объект.

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

свернуть все

Положения агента, в координатах сценария, возвратились как структура или массив структур. 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 функции.

Введенный в R2017a