compositeLaneSpec

Создайте несколько технических требований маршрута для дороги

Описание

compositeLaneSpec возразите комбинирует массив lanespec объекты создать дорогу с несколькими дорожными сегментами, которые имеют различные технические требования маршрута.

Создание

Чтобы задать составные технические требования маршрута, выполните эти шаги:

  1. Создайте массив lanespec объекты. Количество lanespec объекты задают количество дорожных сегментов на дороге. Каждый lanespec объект содержит технические требования маршрута для одного дорожного сегмента.

  2. Создайте составной объект спецификации маршрута, compositeLaneSpec, объединить технические требования маршрута, с помощью одного из синтаксисов, показанных здесь. По умолчанию функция принимает, что каждый дорожный сегмент имеет равную область значений.

  3. Чтобы варьироваться область значений для каждого дорожного сегмента, используйте SegmentRange свойство compositeLaneSpec объект.

  4. Чтобы задать связь между двумя дорожными сегментами, используйте Connector свойство compositeLanespec объект.

  5. Добавьте compositeLaneSpec возразите против ведущего сценария с помощью road функция.

Описание

пример

clspec = compositeLaneSpec(lsArray) создает составную спецификацию маршрута для дороги с помощью массива объектов спецификации маршрута, lsArray.

Например, создайте составной объект спецификации маршрута, compositeLaneSpec, объединить технические требования маршрута двух дорожных сегментов с двумя и тремя маршрутами, соответственно.

lsArray = [lanespec(2) lanespec(3)];
clspec = compositeLaneSpec(lsArray);
Порядок для нумерации маршрутов и сегментов дороги зависит от ориентации дороги. Для получения дополнительной информации смотрите, Чертят Направление Дороги и Нумерацию Маршрутов и Составной Спецификации Маршрута.

пример

clspec = compositeLaneSpec(lsArray,Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Например, 'SegmentRange',[0.6 0.4] указывает, что нормированными областями значений двух дорожных сегментов является 0.6 и 0.4, соответственно.

Свойства

развернуть все

Это свойство доступно только для чтения.

Технические требования маршрута дорожных сегментов в виде 1 N массивом lanespec объекты. N является количеством технических требований маршрута. Необходимо задать по крайней мере два lanespec объекты создать дорогу с несколькими техническими требованиями маршрута. Каждый lanespec объект представляет отличный дорожный сегмент. По сути, количество lanespec объекты задают количество дорожных сегментов на дороге.

Необходимо установить это свойство с помощью lsArray входной параметр, когда вы создаете объект. Чтобы создать объекты спецификации маршрута, используйте lanespec функция.

Пример: [lanespec(2) lanespec(3)] задает технические требования маршрута для дороги с двумя сегментами. Первый дорожный сегмент имеет два маршрута, и второй сегмент имеет три маршрута.

Область значений каждого дорожного сегмента в виде 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

Дорожные коннекторы сегмента в виде laneSpecConnector возразите или 1 M массивом laneSpecConnector объекты. M является количеством дорожных коннекторов сегмента. Для дороги с сегментами N, M = N – 1. Когда задано как только один объект, те же технические требования применяются ко всем коннекторам M дороги.

laneSpecConnector объект задает эти свойства для соединения пары дорожных сегментов. Можно задать свойства к laneSpecConnector функция создания как аргументы name-value.

  • 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')

Симулируйте изменение маршрута транспортного средства

Добавьте автомобиль, оборудованный датчиком в сценарий. Задайте waypoints и значение постоянной скорости, чтобы установить его траекторию вдоль среднего прямого маршрута.

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')

Ограничения

  • Интервал маркировки маршрута не сопоставим во время переходов от одного дорожного сегмента до другого.

Больше о

развернуть все

Введенный в R2021a
Для просмотра документации необходимо авторизоваться на сайте