Добавьте парковку в ведущий сценарий
parkingLot(
задает дополнительные опции с помощью аргументов name-value. Например, задать парковочное место раньше заполняло одно из предопределенных размещений парковки, использовало scenario
,vertices
,Name=Value
)ParkingSpace
аргумент значения имени.
возвращает lot
= parkingLot(___)ParkingLot
объект, lot
, это хранит свойства созданной парковки. Чтобы вставить парковочные места в эту парковку, задайте lot
как входной параметр insertParkingSpaces
функция. Можно возвратить lot
использование любого из предыдущих синтаксисов.
Создайте ведущий сценарий, содержащий короткую дорогу, которая вводит в парковку, которая 50 метров длиной и 20 метров шириной. Постройте парковку и отобразите числа ребра, вдоль которых можно вставить парковочные места. Поскольку ребро 3 формы перекресток с дорогой, ее номер ребра не отображается на графике, но можно все еще вставить пробелы вдоль него.
scenario = drivingScenario;
roadcenters = [25 30; 25 15];
road(scenario,roadcenters);
vertices = [0 0; 50 0; 50 20; 0 20];
lot = parkingLot(scenario,vertices);
plot(scenario,ParkingLotEdges="On")
Задайте тип парковочного места, чтобы добавить вдоль одного из ребер. Установите угол 60 градусов. Постройте парковочное место.
space = parkingSpace(Angle=60); plot(space)
Вставьте угловые пробелы вдоль ребра 1 из парковки.
insertParkingSpaces(lot,space,Edge=1)
Вставьте повернутые пробелы вдоль ребра 3: пять выше соединения и пять ниже соединения. Возместите эти пробелы на 3 метра и в 30 метрах от нижней части ребра 3, соответственно. Инвертируйте угол пробелов, используемых вдоль ребра 1.
numSpaces = 5; space = parkingSpace(Angle=120); insertParkingSpaces(lot,space,numSpaces,Edge=3,Offset=3) insertParkingSpaces(lot,space,numSpaces,Edge=3,Offset=30)
Исследуйте различные парковки, которые можно создать при помощи предопределенных размещений, а также опций для конфигурирования тех размещений.
Задайте парковочное место, используемое, чтобы заполнить парковку. Измените ширину, длину или угол пробела и ширины и силы ее маркировок маршрута. Постройте парковочное место.
width = 2.6; % m длина = 5.5; % m угол = 90; % deg markingWidth = 0.15; markingStrength = 1; пробел = parkingSpace (Width=width, ... Length=length, ... Angle=angle, ... MarkingWidth=markingWidth, ... MarkingStrength=markingStrength); постройте (пробел)
Создайте ведущий сценарий, содержащий 50 50 парковка метра. Задайте предопределенное размещение парковки и минимальную ведущую ширину маршрута. Сгенерированная парковка заполняет с как можно большим количеством парковочных мест, которые соответствуют размещению, учитывая минимальное ведущее ограничение ширины маршрута. Измените парковочное место, тип макета и ведущую ширину маршрута, и наблюдайте эффекты на парковке. Например:
Когда вы увеличиваете размер парковочного места или минимальной ведущей ширины маршрута, количества парковки сеток, которые соответствуют посреди уменьшений парковки.
Если вы выбираете HorizontalWithEdges
или VerticalWithEdges
размещение, одно ребро имеет меньше пробелов, чем другие. Это ребро содержит ведущий маршрут ширины DrivingLaneWidth
это позволяет транспортным средствам ввести парковку.
scenario = drivingScenario; vertices = [0 0; 50 0; 50 -50; 0 -50]; parkingLayout = "Vertical"; drivingLaneWidth = 2.6; % m parkingLot (сценарий, вершины, ... ParkingSpace=space, ... ParkingLayout=parkingLayout, ... DrivingLaneWidth=drivingLaneWidth); постройте (сценарий)
Создайте ведущий сценарий, содержащий 50-метровую дорогу и 20 30 парковка метра. Постройте сценарий.
scenario = drivingScenario; roadcenters = [0 50; 50 0]; road(scenario,roadcenters); vertices = [40 10; 25 -5; 5 15; 20 30]; lot = parkingLot(scenario,vertices); plot(scenario)
Вставьте сетку парковки в партию. Задайте сетку с двумя строками восьми пробелов. Используйте размерности парковочного места по умолчанию и поместите сетку в углу в 45 градусов, чтобы выровнять ее с дорогой.
space = parkingSpace; numSpaces = 8; insertParkingSpaces(lot,space,numSpaces,Rows=2,Position=[15 20],Orientation=45)
Создайте парковку, которая содержит смесь парковочных мест, областей без парковок и доступных пробелов.
Задайте парковочное место, чтобы использовать на парковке. Используйте настройки по умолчанию. Постройте пробел.
space = parkingSpace;
plot(space,Origin="off")
Задайте области без парковок, чтобы использовать на парковке. Задайте цвет белого и ширины, которая составляет один метр меньше, чем ширина парковочного места по умолчанию. Постройте пробел.
noSpace = parkingSpace(Type="NoParking",Width=(space.Width - 1),MarkingColor="White"); plot(noSpace,Origin="off")
Задайте доступное парковочное место, чтобы использовать на парковке. Задайте ширину, которая составляет один метр больше, чем ширина парковочного места по умолчанию. Постройте пробел.
accessibleSpace = parkingSpace(Type="Accessible",Width=(space.Width + 1)); plot(accessibleSpace,Origin="off")
Создайте ведущий сценарий, содержащий парковку с непрямоугольным размещением. Постройте парковку и отобразите числа ребра, вдоль которых можно добавить парковочные места.
scenario = drivingScenario;
vertices = [0 0; 32 -10.5; 32 -50.5; 25 -57.5; 0 -57.5];
lot = parkingLot(scenario,vertices);
plot(scenario,ParkingLotEdges="on")
Вставьте парковочные места по умолчанию вдоль первых трех ребер парковки. Чтобы постараться не перекрывать парковочные места, внесите эти корректировки во вставки:
Вдоль ребра 1, вставьте только 10 пробелов.
Вдоль ребра 2, возмещает пробелы на 5 метров от первой вершины ребра.
Вдоль ребра 3, возмещает пробелы на 3 метра от первой вершины ребра.
numSpaces = 10; insertParkingSpaces(lot,space,numSpaces,Edge=1) insertParkingSpaces(lot,space,Edge=2,Offset=5) insertParkingSpaces(lot,space,Edge=3,Offset=3)
В центре парковки вставьте 2 10 сетка парковочных мест, содержащих 8 столбцов пробелов по умолчанию, 1 столбец областей без парковок и 1 столбец доступных пробелов.
insertParkingSpaces(lot,[space noSpace accessibleSpace],[8 1 1],Position=[12 -18],Rows=2)
Симулируйте ведущий сценарий, в котором автомобиль управляет наоборот, чтобы отступить в парковочное место.
Создайте ведущий сценарий, содержащий парковку.
scenario = drivingScenario; vertices = [0 9; 18 9; 18 -9; 0 -9]; parkingLot(scenario,vertices,ParkingSpace=parkingSpace);
Создайте автомобиль и задайте его траекторию. Автомобильные диски вперед, остановки, и затем управляют наоборот, чтобы отступить в парковочное место. Когда автомобиль вводит парковочное место, он имеет угол ориентации рыскания, который является 90 градусами против часовой стрелки от того, где он запустился.
car = vehicle(scenario,ClassID=1); waypoints = [9 -5; 9 5; 6 -1.3; 2 -1.3]; speed = [3; 0; -2; 0]; yaw = [90 90 180 180]; smoothTrajectory(car,waypoints,speed,Yaw=yaw)
Постройте ведущий сценарий и отобразите waypoints траектории.
plot(scenario,Waypoints="on") while advance(scenario) pause(0.001) end
Сгенерируйте обнаружения автомобилей, припаркованных на парковке, и постройте обнаружения на видимом с большого расстояния графике.
Создайте ведущий сценарий, содержащий дорожную и парковку.
scenario = drivingScenario; roadcenters = [10 40; 10 -40]; road(scenario,roadcenters); vertices = [0 20; 20 20; 20 -20; 0 -20]; parkingLot(scenario,vertices,ParkingSpace=parkingSpace);
Добавьте автомобиль, оборудованный датчиком и задайте траекторию, в которой транспортное средство проезжает парковка.
ego = vehicle(scenario);
waypoints = [10 35 0; 10 10 0];
speed = 5; % m/s
smoothTrajectory(ego,waypoints,speed)
Создайте припаркованные автомобили на нескольких парковочных местах. Постройте сценарий.
parkedCar1 = vehicle(scenario,Position=[15.8 12.4 0]); parkedCar2 = vehicle(scenario,Position=[15.8 -12.4 0]); parkedCar3 = vehicle(scenario,Position=[2 -9.7 0]); parkedCar4 = vehicle(scenario,Position=[2 9.7 0]); plot(scenario)
Создайте датчик видения для генерации обнаружений. По умолчанию датчик смонтирован к переднему бамперу автомобиля, оборудованного датчиком.
sensor = visionDetectionGenerator;
Создайте видимый с большого расстояния график и плоттеры для визуализации целевых основ, дорожных контуров, паркуя маркировки маршрута, зону охвата датчика и обнаружения. Затем симулируйте сценарий и сгенерируйте обнаружения.
bep = birdsEyePlot(XLim=[-40 40],YLim=[-30 30]); olPlotter = outlinePlotter(bep); lbPlotter = laneBoundaryPlotter(bep); lmPlotter = laneMarkingPlotter(bep,DisplayName="Parking lanes"); caPlotter = coverageAreaPlotter(bep,DisplayName="Coverage area"); detPlotter = detectionPlotter(bep,DisplayName="Detections"); while advance(scenario) % Plot target outlines. [position,yaw,length,width,originOffset,color] = targetOutlines(ego); plotOutline(olPlotter,position,yaw,length,width) % Plot lane boundaries of ego vehicle. rbEgo = roadBoundaries(ego); plotLaneBoundary(lbPlotter,rbEgo) % Plot parking lane markings. [plmv,plmf] = parkingLaneMarkingVertices(ego); plotParkingLaneMarking(lmPlotter,plmv,plmf) % Plot sensor coverage area. mountPosition = sensor.SensorLocation; range = sensor.MaxRange; orientation = sensor.Yaw; fieldOfView = sensor.FieldOfView(1); plotCoverageArea(caPlotter,mountPosition,range,orientation,fieldOfView) % Generate and plot detections. actors = targetPoses(ego); time = scenario.SimulationTime; [dets,isValidTime] = sensor(actors,time); if isValidTime positions = cell2mat(cellfun(@(x)([x.Measurement(1) x.Measurement(2)]), ... dets,UniformOutput=false)); plotDetection(detPlotter,positions) end end
scenario
— Ведущий сценарийdrivingScenario
объектВедущий сценарий в виде drivingScenario
объект.
vertices
— Вершины парковкиВершины парковки в виде N-by-2 или N-by-3 матрица с действительным знаком. N является количеством вершин, и каждый из сегментов N - 1 между вершинами задает ребро парковки. N должен быть больше или быть равен 3.
Если vertices
N-by-2 матрица, затем каждая строка матрицы представляет (x, y) координата вершины. Z-координатой каждой вершины является 0
.
Если vertices
N-by-3 матрица, затем каждая строка матрицы представляет (x, y, z) координата вершины.
Вершины находятся в системе мировой координаты ведущего сценария.
Этот аргумент устанавливает Vertices
свойство парковки. Просмотреть свойства парковки, любой доступ ParkingLots
свойство scenario
, или возвратите парковку путем определения lot
выходной аргумент.
Пример: [0 0; 0 20; 20 20; 20 0]
Пример: [0 0 0; 0 20 5; 20 20 5; 20 0 0]
Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN
, где Name
имя аргумента и Value
соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.
ParkingSpace=parkingSpace,ParkingLayout="Horizontal"
заполняет парковку с парковочным местом по умолчанию в горизонтальном макете.ParkingSpace
— Парковочное местоparkingSpace
объектПарковочное место раньше заполняло парковку в виде parkingSpace
объект. Задавать тип размещения раньше заполняло парковку с пробелами, использовало ParkingLayout
аргумент значения имени.
Можно задать ParkingSpace
только для прямоугольных парковок. Чтобы добавить парковочные места в непрямоугольные парковки, используйте insertParkingSpaces
функция.
ParkingLayout
— Размещение парковки"Vertical"
(значение по умолчанию) |
"Horizontal"
| "VerticalWithEdges"
| "HorizontalWithEdges"
Размещение парковки в виде "Vertical"
, "Horizontal"
, "VerticalWithEdges"
, или "HorizontalWithEdges"
.
Чтобы использовать этот аргумент, необходимо задать ParkingSpace
аргумент значения имени. parkingLot
функция добавляет как много пробелов пробела ParkingSpace
та подгонка размещение как возможное, учитывая минимальную ведущую ширину задано DrivingLaneWidth
.
Эта таблица описывает ParkingLayout
опции.
Опция | Описание |
---|---|
"Vertical" | Разметьте парковочные места сверху донизу. |
"Horizontal" | Разметьте парковочные места слева направо. |
"VerticalWithEdges" | Разметьте парковочные места сверху донизу и также вставьте парковочные места вдоль левых и правых ребер. Чтобы позволить транспортным средствам ввести парковку, базовый край содержит ведущий маршрут с шириной |
"HorizontalWithEdges" | Разметьте парковочные места слева направо и также вставьте парковочные места вдоль верхних и нижних ребер. Чтобы позволить транспортным средствам ввести парковку, правый край содержит ведущий маршрут с шириной |
Типы данных: char |
string
DrivingLaneWidth
— Минимальная ширина ведущих маршрутов (m)Минимальная ширина ведущих маршрутов на парковке, на метрах в виде действительного скаляра в области значений [0, 50]. Чтобы использовать этот аргумент, необходимо задать ParkingSpace
аргумент значения имени. parkingLot
функционируйте использует DrivingLaneWidth
определить сумму пробела, чтобы добавить по обе стороны от сеток парковки. По умолчанию, DrivingLaneWidth
равно ширине пробела, заданного ParkingSpace
.
Чтобы осуществить симметричное расположение сеток парковки, фактическая ширина ведущих маршрутов может быть больше DrivingLaneWidth
. Например, на этой парковке, горизонтальная ширина, W H, равна DrivingLaneWidth
, но вертикальная ширина, W V, немного больше DrivingLaneWidth
. Дополнительная вертикальная ширина включает ровное распределение сеток парковки в партии вдоль вертикальной оси
Name
— Имя парковки''
(значение по умолчанию) | вектор символов | строковый скалярlot
— Выведите парковкуParkingLot
объектВыведите парковку, возвращенную как ParkingLot
объект, которому описали свойства в этой таблице. За исключением RoadID
, то, которое является сгенерированным сценарием свойством, имена свойства соответствуют входным параметрам, раньше создавало парковку. Все свойства только для чтения.
Свойство | Значение |
---|---|
Vertices | Вершины парковки в виде N с действительным знаком-by-3 матрица, где N является количеством вершин.
|
RoadID | Идентификатор парковки в виде положительного целого числа. Вход |
Name | Имя парковки в виде строкового скаляра.
|
Чтобы вставить парковочные места в эту парковку, задайте lot
как входной параметр insertParkingSpaces
функция.
Импорт данных о парковке из внешних источников при помощи roadNetwork
функция не поддерживается.
Импорт парковок в приложение Driving Scenario Designer не поддерживается. Если вы открываете сценарий, содержащий парковку в приложении, приложение не использует парковку из сценария.
Импорт парковок в Simulink® не поддерживается. Если вы читаете сценарий, содержащий парковку в Simulink при помощи блока Scenario Reader, блок не использует парковку из модели Simulink.
Обнаружения датчика парковки маркировок маршрута не поддерживаются. Однако можно визуализировать маркировки маршрута парковки на birdsEyePlot
объект при помощи plotParkingLaneMarking
функция.
parkingSpace
| insertParkingSpaces
| plotParkingLaneMarking
| parkingLaneMarkingVertices
| drivingScenario
| road
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.