exponenta event banner

targetPoses

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

Описание

пример

poses = targetPoses(ac) возвращает позы всех целей в сценарии вождения по отношению к субъекту эго-транспортного средства, ac. Для получения дополнительной информации см. Ego Vehicle and Targets.

пример

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)

Figure contains an axes. The axes contains 6 objects of type patch, line.

Создайте датчик зрения, установленный на переднем бампере эго-автомобиля. Настройте датчик таким образом, чтобы максимальный диапазон обнаружения составлял 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);

Figure contains an axes. The axes contains an object of type patch. This object represents Coverage area.

Получить позы целей, находящихся в зоне действия датчика. Выходная структура содержит позу только ближайшей цели, которая находится на расстоянии менее 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, не включен.

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

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

ОбластьОписание
ActorID

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

ClassIDИдентификатор классификации, указанный как неотрицательное целое число. 0 представляет объект неизвестного или неназначенного класса.
Position

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

Velocity

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

Roll

Угол крена актера, определяемый как действительный скаляр. Единицы измерения в градусах.

Pitch

Угол тангажа актера, определяемый как действительный скаляр. Единицы измерения в градусах.

Yaw

Угол рыскания актера, заданный как действительный скаляр. Единицы измерения в градусах.

AngularVelocity

Угловая скорость (λ) актера в направлениях x -, y - и z, заданная как действительный вектор вида [startx starty ü z]. Единицы измерения в градусах в секунду.

Полные определения этих полей структуры см. в разделе actor и vehicle функции.

Подробнее

свернуть все

Эго транспортное средство и цели

В сценарии вождения можно указать одного актёра в качестве наблюдателя всех остальных актёров, аналогично тому, как водитель автомобиля наблюдает за всеми остальными автомобилями. Актёр-наблюдатель называется актёром эго или, более конкретно, транспортным средством эго. С точки зрения эго-транспортного средства все другие субъекты (такие как транспортные средства и пешеходы) являются наблюдаемыми субъектами, называемыми целями. Координаты эго-транспортного средства центрируются и ориентируются относительно эго-транспортного средства. Координатами сценария вождения являются мировые координаты.

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