Создайте дорогу с несколькими спецификациями маршрута
The compositeLaneSpec
объект объединяет массив lanespec
объекты для создания дороги с несколькими сегментами дороги, которые имеют различные спецификации маршрута.
Чтобы определить спецификации составного маршрута, выполните следующие действия:
Создайте массив lanespec
объекты. Количество lanespec
объекты определяют количество сегментов дороги. Каждый lanespec
объект содержит спецификации маршрута для одного сегмента дороги.
Создайте составной объект спецификации маршрута, compositeLaneSpec
, чтобы объединить спецификации маршрута, используя один из синтаксисов, показанных здесь. По умолчанию функция принимает, что каждый сегмент дороги имеет равную область значений.
Чтобы изменить область значений для каждого сегмента дороги, используйте SegmentRange
свойство compositeLaneSpec
объект.
Чтобы определить соединение между двумя сегментами дороги, используйте Connector
свойство compositeLanespec
объект.
Добавьте compositeLaneSpec
объект сценарию вождения с помощью road
функция.
создает составную спецификацию маршрута для дороги с помощью массива объектов спецификаций маршрута, clspec
= compositeLaneSpec(lsArray
)lsArray
.
Например, создайте составной объект спецификации маршрута, compositeLaneSpec
, для объединения спецификаций маршрута двух дорожных сегментов с двумя и тремя полосами соответственно.
lsArray = [lanespec(2) lanespec(3)]; clspec = compositeLaneSpec(lsArray);
устанавливает свойства с помощью одного или нескольких аргументов в виде имя-значение. Для примера, clspec
= compositeLaneSpec(lsArray
,Name,Value
)'SegmentRange',[0.6 0.4]
задает, что нормированные области значений двух сегментов дороги 0.6
и 0.4
, соответственно.
LaneSpecification
- Спецификации маршрута для дорожных сегментовlanespec
объектыЭто свойство доступно только для чтения.
Спецификации маршрута для сегментов дороги, заданные как 1-бай- N массив lanespec
объекты. N - количество спецификаций маршрута. Необходимо задать не менее двух lanespec
объекты для создания дороги с несколькими спецификациями маршрута. Каждый lanespec
объект представляет отдельный сегмент дороги. Как таковое, количество lanespec
объекты определяют количество сегментов дороги.
Вы должны задать это свойство, используя lsArray
входной параметр при создании объекта. Чтобы создать объекты спецификаций маршрута, используйте lanespec
функция.
Пример: [lanespec(2) lanespec(3)]
определяет спецификации маршрута для дороги с двумя сегментами. Первый сегмент дороги имеет две полосы, а второй сегмент - три полосы.
SegmentRange
- Область значений каждого сегмента дорогиОбласть значений каждого сегмента дороги, заданный как N - числовой вектор с нормированными значениями в области значений (0, 1). N - количество lanespec
объекты в LaneSpecification
свойство. Сумма элементов вектора должна быть равной 1
.
Значение области значений по умолчанию для каждого сегмента дороги составляет 1/ N. Для примера, если LaneSpecification
свойство определяет спецификации маршрута для двух сегментов дороги, затем значение области значений по умолчанию для каждого сегмента дороги 1/2
, что означает, что SegmentRange = [0.5 0.5]
.
Пример: [0.4 0.3 0.3]
Типы данных: single
| double
Connector
- Соединители сегментов дорогиlaneSpecConnector
| объекта 1-by- M массив laneSpecConnector
объектыСоединители сегментов дороги, заданные как laneSpecConnector
объект или 1-by- M массив laneSpecConnector
объекты. M - количество соединителей сегментов дороги. Для дороги с N сегментами M = N - 1. Если задан только как один объект, те же спецификации применяются ко всем M соединителям дороги.
The laneSpecConnector
объект задает эти свойства для соединения пары сегментов дороги. Можно задать свойства для laneSpecConnector
функция создания как аргументы имя-значение.
TaperShape
- задает форму конуса, соединяющего два сегмента дороги, как 'Linear'
или 'None'
. Задайте 'None'
когда необходимо изменить шаг при добавлении или сбросе полос между сегментами дороги. Значение по умолчанию для TaperShape
является 'Linear'
.
TaperLength
- длина конусности в метрах. Значение по умолчанию TaperLength
является меньшим из 241
счетчики или 75
процент длины сегмента дороги, содержащего конусность.
Position
- задает ребро дороги, с которой требуется добавить или сбросить полосы. Можно задать положение соединителя следующим 'Right'
, 'Left'
, или 'Both'
.
Пример: [laneSpecConnector('Position','Left') laneSpecConnector('TaperLength',20)]
Примечание
Конусность является частью нижнего сегмента дороги внутри пары. Для получения дополнительной информации о порядке нумерации сегментов дороги см. раздел «Составная полоса Спецификации».
Спецификации разъема сегмента дороги должны соответствовать спецификациям маршрута и значениям области значений сегментов. В противном случае функция сбрасывает спецификации коннектора с допустимыми значениями. Для примера, если вы задаете TaperLength
больше, чем длина соответствующего сегмента дороги, функция сбрасывает длину конуса со значением, которое 75
процент длины соответствующего сегмента дороги.
Создайте сценарий вождения с объединением трафика. Дорога в сценарии вождения имеет две спецификации маршрута, и движение объединяется налево, когда заканчивается правая полоса.
Создайте дорогу с двумя спецификациями маршрута
Создайте сценарий вождения. Задайте центры дорог с направлениями рисования снизу вверх.
scenario = drivingScenario('StopTime',5);
roadCenters = [0 20; 100 20];
Задайте спецификации маршрута для пары сегментов двухсторонней дороги. Первый дорожный сегмент имеет пять полос, а второй дорожный сегмент - четыре полосы. Заметьте, что крайняя правая полоса опускается из спецификации второй полосы.
ls1 = lanespec([2 3],'Width',4); ls2 = lanespec([2 2],'Width',4); lsArray = [ls1 ls2];
Создайте составной объект спецификации маршрута и добавьте дорогу к сценарию вождения. Объект спецификации составного маршрута определяет положение, при котором маршрут падает из lsArray
входной параметр. Объект по умолчанию имеет форму линейного конуса и длину конуса 75% от длины первого сегмента дороги.
clspec = compositeLaneSpec(lsArray);
road(scenario,roadCenters,'Lanes',clspec);
Постройте график сценария вождения. Сценарий отображает сегменты дороги в направлении рисования дороги снизу вверх.
figMark = figure; set(figMark,'Position',[0 0 600 600]) hPlot = axes(figMark); plot(scenario,'Parent',hPlot) title('Two-way Road Dropping Rightmost Lane')
Симулируйте изменение маршрута транспортного средства
Добавьте автомобиля , оборудованного датчиком к сценарию. Задайте путевые точки и значение постоянной скорости, чтобы задать его траекторию вдоль середины прямой полосы движения.
egoVehicle = vehicle(scenario,'ClassID',1,'Position',[2 16 0]); waypoints = [2 16; 20 16; 95 16]; speed = 30; smoothTrajectory(egoVehicle,waypoints,speed)
Добавьте другое транспортное средство к сценарию. Установите траекторию движения транспортного средства таким образом, чтобы оно перемещалось по крайнему правому маршруту, а затем слилось налево до окончания маршрута.
car = vehicle(scenario,'ClassID',1,'Position',[2 12 0]); waypoints = [2 12; 12 12; 30 14; 42 16; 58 16; 85 16]; speed = 20; smoothTrajectory(car,waypoints,speed)
Создайте пользовательское окно рисунка и постройте график сценария.
close all figScene = figure; set(figScene,'Position',[0 0 600 600]) hPanel = uipanel(figScene); hPlot = axes(hPanel); plot(scenario,'Waypoints','on','Parent',hPlot) title('Merge Left as Right Lane Ends') while advance(scenario) pause(0.01) end
Создайте дорогу с несколькими спецификациями маршрута и добавьте одну полосу слева от дороги с односторонним движением.
Создайте сценарий вождения. Укажите центр дороги для прямой 100-метровой дороги с направлением рисования слева направо.
scenario = drivingScenario; roadCenters = [20 100; 20 0];
Задайте массив спецификаций маршрута для двух сегментов дороги с односторонним движением. Первый сегмент дороги имеет две полосы, а второй сегмент дороги - три полосы.
lsArray = [lanespec(2) lanespec(3)];
Задайте объект соединителя сегмента дороги. Чтобы добавить третью полосу для левой стороны второго сегмента дороги, задайте свойство положения. Задайте длину конуса меньше длины первого сегмента дороги. Оба сегмента дороги имеют длину 50 метров, так как по умолчанию общая длина дороги 100 метров разделена поровну между указанными сегментами дороги.
lc = laneSpecConnector('Position','Left','TaperLength',30);
Создайте составной объект спецификации маршрута.
clspec = compositeLaneSpec(lsArray,'Connector',lc);
Добавьте дорогу в сценарий вождения и отобразите дорогу. Сценарий отображает сегменты дороги в направлении рисования дороги слева направо.
road(scenario,roadCenters,'Lanes',clspec); plot(scenario) title('Road with Multiple Lane Specifications')
Создайте пустой сценарий вождения. Укажите центр дороги для изогнутой дороги.
scenario = drivingScenario; roadCenters = [-20 22; 0 22; 18.8 15.8; 22 0; 22 -20];
Задайте спецификации маршрута для трех сегментов двухсторонней дороги. Заметьте, что все сегменты дороги имеют одинаковое количество полос движения. Однако второй сегмент дороги имеет большую ширину полосы (4,6 метра) для расширения дороги по кривой. Другие два сегмента дороги имеют ширину полосы по умолчанию 3,6 метра.
lsArray = [lanespec([1 1]) lanespec([1 1],'Width',4.6) lanespec([1 1])];
Задайте нормированные длины для каждого сегмента дороги. Заметьте, что сумма нормированных длин 1
, и длина вектора соответствует количеству объектов спецификаций маршрута.
range = [0.25 0.65 0.1];
Создайте объект соединителя сегмента дороги. Поскольку одни и те же спецификации применяются к обоим сегментным соединителям для трех сегментов дороги, создайте только один laneSpecConnector
объект. Поскольку вы не добавляете и не сбрасываете полосы, не задайте свойство положения соединителя сегмента дороги.
lc = laneSpecConnector('TaperLength',14);
Создайте составной объект спецификации маршрута и добавьте дорогу к сценарию вождения.
clspec = compositeLaneSpec(lsArray,'Connector',lc,'SegmentRange',range); road(scenario,roadCenters,'Lanes',clspec);
Постройте график сценария вождения.
plot(scenario,'RoadCenters','on') title('Lane Widening Along a Curve')
Интервал разметки маршрута не согласован во время переходов от одного сегмента дороги к другому.
Чтобы создать дорогу при помощи road
function, задайте дорожные центры как матричный вход. Функция создает ориентированную линию, которая пересекает центры дорог, начиная с координат в первой строке матрицы и заканчивая координатами в последней строке матрицы. Координаты в первых двух строках матрицы определяют draw direction дороги. Эти координаты соответствуют первым двум последовательным центрам дорог. Направление рисования является направлением, в котором дороги визуализируются на графике сценария.
Чтобы создать дорогу при помощи приложения Driving Scenario Designer, можно либо задать параметр Road Centers, либо в интерактивном режиме нарисовать на Scenario Canvas. Подробный пример см. в разделе Создание сценария вождения. В этом случае направление рисования является направлением, в котором дороги визуализируются в Scenario Canvas.
Для дороги с направлением ничьей от начала до конца разница между x - координаты первых двух последовательных дорожных центров положительная.
Поскольку дорога с основанием к верхней части привлекает направление, различие между x - координаты первых двух последовательных дорожных центров отрицательны.
|
|
Для дороги с направлением рисования слева направо различие между y -кординатами первых двух последовательных центров дороги положительная.
Для дороги с направлением рисования справа налево различие между y -кординатами первых двух последовательных центров дороги отрицательная.
|
|
Полосы должны нумероваться слева направо, при этом левый край дороги должен быть определен относительно направления рисования дороги. Для дороги с односторонним движением по умолчанию левый край дороги представляет собой сплошную желтую разметку, которая указывает конец дороги в поперечном направлении (направлении, перпендикулярном направлению рисования). Для двухсторонней дороги по умолчанию оба ребер отмечены сплошными белыми линиями.
Для примера эти схемы показа, как нумеруются полосы в односторонней и двухсторонней дороге с направлением вытяжки сверху вниз.
Нумерация полос в односторонней дороге | Нумерация полос на двухсторонней дороге |
Задайте количество полос в качестве положительного целого числа для односторонней дороги. Если вы задаете целое значение следующим 1, 2, 3 обозначают первую, вторую и третью полосы дороги, соответственно. | Задайте количество полос в качестве двухэлементного вектора положительного целого числа для двухсторонней дороги. Если вы устанавливаете вектор равным [ 1L обозначают единственную левую полосу дороги. 1R и 2R обозначают первую и вторую правые полосы дороги, соответственно. |
Спецификации маршрута применяются в порядке нумерации маршрутов.
Составная спецификация маршрута состоит из массива из двух или более спецификаций маршрута для одной дороги. Каждая спецификация маршрута задает сегмент дороги, который является участком дороги с независимыми геометрическими свойствами, нормализованным областью значений и конусностью.
Каждый сегмент дороги является направленным сегментом, который движется к конечному центру дороги, причем первый сегмент начинается в первом центре дороги, второй сегмент начинается с первого конца дороги и так далее. Область значений каждого сегмента дороги является нормированным расстоянием, которое задает долю от общей длины дороги. Когда сегмент дороги добавляет или сбрасывает полосы из предыдущего сегмента, предыдущий сегмент сужается вдоль заданного расстояния, чтобы учесть изменение количества полос.
При тонировании дороги с составными спецификациями маршрута сегменты дороги отображаются в направлении рисования дороги. Например, рассмотрите дорогу с односторонним движением с двумя сегментами дороги и нормализованной областью значений по умолчанию 0,5 для каждого сегмента дороги. Первый сегмент дороги содержит четыре полосы, а второй сегмент - только две полосы. Первый сегмент сужается с четырёх полос на две полосы, сбрасывая по одной полосе с каждой стороны, так как приближается к полуторной точке дороги, которая является начальной точкой второго сегмента. Эти схемы показывают направление, в котором отображаются сегменты дороги, и то, как конус применяется к дороге, как для направления рисования слева направо, так и справа налево.
|
|
Для получения информации о геометрических свойствах маршрутов смотрите Спецификации маршрутов.
Схема показывает компоненты и геометрические свойства дорог, полос движения и разметки маршрута.
Объект спецификации маршрута, lanespec
, определяет дорожные полосы.
The NumLanes
свойство задает количество полос. При создании этого объекта необходимо указать количество полос.
The Width
свойство задает ширину каждой полосы.
The Marking
свойство содержит спецификации каждой разметки маршрута в дороге. Marking
- массив объектов разметки маршрута с одним объектом на полосу. Чтобы создать эти объекты, используйте laneMarking
функция. Спецификации разметки маршрута включают:
Type
- Тип разметки маршрута (сплошная, штриховая и так далее)
Width
- Ширина разметки маршрута
Color
- Цвет разметки маршрута
Strength
- Значение насыщения для цвета разметки маршрута
Length
- для штриховых полос, длина каждой штриховой линии
Space
- для штриховых полос, интервал между штрихами
SegmentRange
- Для составной разметки маршрута нормированная длина каждого сегмента маркера
The Type
свойство содержит спецификации типа маршрута для каждой дорожной полосы. Type
может быть однородным объектом типа маршрута или гетерогенным массивом типов маршрута.
Однородный тип маршрута объекта содержит спецификации типа маршрута всех полос движения на дороге.
Гетерогенный массив типов маршрутов содержит массив объектов типа маршрута с одним объектом на маршруте.
Чтобы создать эти объекты, используйте laneType
функция. Спецификации типа маршрута включают:
Type
- Тип маршрута (вождение, граница и так далее)
Color
- Цвет маршрута
Strength
- Прочность цвета маршрута
actor
| laneMarking
| laneType
| road
| roadGroup
| roadNetwork
| smoothTrajectory
| vehicle
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.