targetPoses

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

Описание

пример

poses = targetPoses(ac) возвращает положения всех целей в сценарии вождения относительно актёра автомобиль , оборудованный датчиком, ac. Дополнительные сведения см. в разделах Автомобиля , оборудованного датчиком и 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.

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

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

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

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

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

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

Положение актёра, заданное как действительный вектор вида [x y z]. Модули измерения указаны в метрах.

Velocity

Скорость (<reservedrangesplaceholder9>) актера в x - y - и z - направления, определенные как вектор с реальным знаком формы [<<reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reserved angesplaceholder1> <reservedrangesplaceholder0>]. Модули указаны в метрах в секунду.

Roll

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

Pitch

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

Yaw

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

AngularVelocity

Скорость вращения (<reservedrangesplaceholder9>) актера в x - y - и z - направления, определенные как вектор с реальным знаком формы [<<reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reserved angesplaceholder1> <reservedrangesplaceholder0>]. Модули указаны в степенях в секунду.

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

Подробнее о

свернуть все

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

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

Введенный в R2017a