Целевые положения и ориентации относительно эго-транспортного средства
возвращает позы всех целей в сценарии вождения по отношению к субъекту эго-транспортного средства, poses = targetPoses(ac)ac. Для получения дополнительной информации см. Ego Vehicle and Targets.
В простом сценарии вождения получить позы целевых транспортных средств в системе координат эго-транспортного средства. Затем преобразуйте эти позы обратно в мировые координаты сценария вождения.
Создайте сценарий управления.
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);

Получить позы целей, находящихся в зоне действия датчика. Выходная структура содержит позу только ближайшей цели, которая находится на расстоянии менее 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]
ac - АктерActor объект | Vehicle объектАктер, принадлежащий drivingScenario объект, указанный как Actor или Vehicle объект. Для создания этих объектов используйте actor и vehicle соответственно.
range - Круговой диапазон вокруг эго-транспортного средства Круговой диапазон вокруг объекта эго-транспортного средства, определяемый как неотрицательный действительный скаляр. targetPoses функция возвращает только позы целей, которые находятся в этом диапазоне. Единицы в метрах.
poses - Целевые позыЦелевые позы в координатах эго-транспортного средства возвращаются в виде структуры или массива структур. Поза актера эго-транспортного средства, 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 функции.
В сценарии вождения можно указать одного актёра в качестве наблюдателя всех остальных актёров, аналогично тому, как водитель автомобиля наблюдает за всеми остальными автомобилями. Актёр-наблюдатель называется актёром эго или, более конкретно, транспортным средством эго. С точки зрения эго-транспортного средства все другие субъекты (такие как транспортные средства и пешеходы) являются наблюдаемыми субъектами, называемыми целями. Координаты эго-транспортного средства центрируются и ориентируются относительно эго-транспортного средства. Координатами сценария вождения являются мировые координаты.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.