targetPoses

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

Описание

пример

poses = targetPoses(ac) возвращает положения всех целей в ведущем сценарии относительно агента автомобиля, оборудованного датчиком, ac. Дополнительную информацию см. в Автомобиле, оборудованном датчиком и Целях.

пример

poses = targetPoses(ac,range) возвращает положения целей, которые являются в заданной области вокруг агента автомобиля, оборудованного датчиком.

Примеры

свернуть все

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

Создайте ведущий сценарий.

scenario = drivingScenario;

Создайте целевых агентов.

actor(scenario,'ClassID',1, ...
    'Position',[10 20 30], ...
    'Velocity',[12 113 14], ...
    'Yaw',54, ...
    'Pitch',25, ...
    'Roll',22, ...
    'AngularVelocity',[24 42 27]);

actor(scenario,'ClassID',1, ...
    'Position',[17 22 12], ...
    'Velocity',[19 13 15], ...
    'Yaw',45, ...
    'Pitch',52, ...
    'Roll',2, ...
    'AngularVelocity',[42 24 29]);

Добавьте агента автомобиля, оборудованного датчиком.

egoActor = actor(scenario,'ClassID',1, ...
    '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);
targetPosesScenarioCoords = allPoses(1:2);
targetPosesScenarioCoords(1)
ans = struct with fields:
            ActorID: 1
           Position: [10 20 30]
           Velocity: [12 113 14]
               Roll: 22
              Pitch: 25
                Yaw: 54
    AngularVelocity: [24 42 27]

Используйте driving.scenario.targetsToEgo функционируйте, чтобы преобразовать целевые положения в эгоцентрические координаты агента эго. Смотрите положение первого агента.

targetPosesEgoCoords = driving.scenario.targetsToEgo(targetPosesScenarioCoords,egoActor);
targetPosesEgoCoords(1)
ans = struct with fields:
            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 функция, чтобы получить все целевые положения агента в координатах автомобиля, оборудованного датчиком. Отобразите первое целевое положение, которое совпадает с ранее расчетным положением.

targetPosesEgoCoords = targetPoses(egoActor);
targetPosesEgoCoords(1)
ans = struct with fields:
            ActorID: 1
            ClassID: 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]

Используйте driving.scenario.targetsToScenario преобразовывать цель позирует назад к мировым координатам сценария. Отобразите первое целевое положение, которое совпадает с исходным целевым положением.

targetPosesScenarioCoords = driving.scenario.targetsToScenario(targetPosesEgoCoords,egoActor);
targetPosesScenarioCoords(1)
ans = struct with fields:
            ActorID: 1
            ClassID: 1
           Position: [10.0000 20.0000 30.0000]
           Velocity: [12.0000 113.0000 14.0000]
               Roll: 22
              Pitch: 25.0000
                Yaw: 54
    AngularVelocity: [24.0000 42.0000 27.0000]

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

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

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

  • Самое дальнее целевое транспортное средство на расстоянии в 65 метров и в противоположном маршруте автомобиля, оборудованного датчиком.

Постройте ведущий сценарий.

scenario = drivingScenario;

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

egoVehicle = vehicle(scenario, ...
    'ClassID',1, ...
    'Position',[4 -2 0], ...
    'Name','Ego');

vehicle(scenario, ...
    'ClassID',1, ...
    'Position',[45 -1.7 0], ...
    'Name','Near Target');

vehicle(scenario, ...
    'ClassID',1, ...
    'Position',[65 2 0], ...
    'Yaw',-180, ...
    'Name','Far Target');

plot(scenario)

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

sensor = visionDetectionGenerator('SensorIndex',1, ...
    'SensorLocation',[3.7 0], ...
    'MaxRange',50);

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

bep = birdsEyePlot;

olPlotter = outlinePlotter(bep);
[position,yaw,length,width,originOffset,color] = targetOutlines(egoVehicle);
plotOutline(olPlotter,position,yaw,length,width, ...
    'OriginOffset',originOffset,'Color',color)

caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area','FaceColor','blue');
mountPosition = sensor.SensorLocation;
range = sensor.MaxRange;
orientation = sensor.Yaw;
fieldOfView = sensor.FieldOfView(1);
plotCoverageArea(caPlotter,mountPosition,range,orientation,fieldOfView);

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

poses = targetPoses(egoVehicle,range)
poses = struct with fields:
            ActorID: 2
            ClassID: 1
           Position: [41 0.3000 0]
           Velocity: [0 0 0]
               Roll: 0
              Pitch: 0
                Yaw: 0
    AngularVelocity: [0 0 0]

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

свернуть все

Агент, принадлежащий drivingScenario объект в виде Actor или Vehicle объект. Чтобы создать эти объекты, используйте actor и vehicle функции, соответственно.

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

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

свернуть все

Целевые положения, в координатах автомобиля, оборудованного датчиком, возвратились как структура или как массив структур. Положение агента автомобиля, оборудованного датчиком, ac, не включен.

target pose задает положение, скорость и ориентацию цели в координатах автомобиля, оборудованного датчиком. Целевые положения также включают скорости изменения в положение агента и ориентацию.

Каждая структура положения имеет эти поля.

Поле Описание
ActorID

Заданный сценарием идентификатор агента в виде положительного целого числа.

ClassIDИдентификатор классификации в виде неотрицательного целого числа. 0 представляет объект неизвестного или неприсвоенного класса.
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 функции.

Больше о

свернуть все

Автомобиль, оборудованный датчиком и цели

В ведущем сценарии можно задать одного агента как наблюдатель всех других агентов, похожих на то, как драйвер автомобиля наблюдает все другие автомобили. Агент наблюдателя называется ego actor или, более конкретно, ego vehicle. С точки зрения автомобиля, оборудованного датчиком все другие агенты (такие как транспортные средства и пешеходы) являются наблюдаемыми агентами, названными targets. Координаты автомобиля, оборудованного датчиком сосредоточены и ориентированы со ссылкой на автомобиль, оборудованный датчиком. Координаты ведущего сценария являются мировыми координатами.

Введенный в R2017a