Создание объекта разметки дорожной полосы
создает объект разметки полосы по умолчанию указанного типа (сплошная полоса, пунктирная полоса и т. д.). Этот объект определяет характеристики разметки границ полосы движения на дороге. При создании дорог в сценарии движения можно использовать объекты разметки полос в качестве входных данных для lm = laneMarking(type)lanespec объект.
задайте свойства объекта разметки полосы движения, используя одну или несколько пар имя-значение. Например, lm = laneMarking(type,Name,Value)laneMarking('Solid','Color','yellow') создает сплошную желтую разметку полосы движения.
создает составной объект разметки полосы из массива объектов разметки полосы; cm = laneMarking(lmArray)lmArray. Этот синтаксис используется для создания разметки полосы движения, содержащей несколько типов маркеров.
Например, создайте разметку границы полосы движения, которая имеет как сплошные, так и пунктирные типы разметки, путем определения lmArray.
lmArray = [laneMarking('Solid') laneMarking('Dashed')]
cm = laneMarking(lmArray)Создайте сценарий вождения и центры дорог для прямой 80-метровой дороги.
scenario = drivingScenario; roadCenters = [0 0; 80 0];
Создать lanespec объект для четырехполосной дороги. Используйте laneMarking для задания его пяти разметок полос движения. Осевая линия - двойная сплошная и двойная желтая. Самые внешние линии сплошные и белые. Внутренние линии пунктирные и белые.
solidW = laneMarking('Solid','Width',0.3); dashW = laneMarking('Dashed','Space',5); doubleY = laneMarking('DoubleSolid','Color','yellow'); lspec = lanespec([2 2],'Width',[5 5 5 5], ... 'Marking',[solidW dashW doubleY dashW solidW]);
Добавьте дорогу в сценарий движения. Отображение дороги.
road(scenario,roadCenters,'Lanes',lspec);
plot(scenario)
Смоделировать сценарий вождения с одним автомобилем, путешествующим по S-образной кривой. Создайте и выведите на печать границы полос движения.
Создайте сценарий движения с одной дорогой, имеющей S-образную кривую.
scenario = drivingScenario('StopTime',3);
roadcenters = [-35 20 0; -20 -20 0; 0 0 0; 20 20 0; 35 -20 0];
Создайте полосы движения и добавьте их к дороге.
lm = [laneMarking('Solid','Color','w'); ... laneMarking('Dashed','Color','y'); ... laneMarking('Dashed','Color','y'); ... laneMarking('Solid','Color','w')]; ls = lanespec(3,'Marking',lm); road(scenario,roadcenters,'Lanes',ls);
Добавьте эго-транспортное средство и укажите его траекторию из его ППМ. По умолчанию автомобиль едет со скоростью 30 метров в секунду.
car = vehicle(scenario, ... 'ClassID',1, ... 'Position',[-35 20 0]); waypoints = [-35 20 0; -20 -20 0; 0 0 0; 20 20 0; 35 -20 0]; smoothTrajectory(car,waypoints);
Постройте график сценария и соответствующий график погони.
plot(scenario)

chasePlot(car)

Запустите цикл моделирования.
Инициализируйте график «птичий глаз» и создайте плоттер контура, плоттер границы левой и правой полос и плоттер границы дороги.
Получение границ дороги и прямоугольных контуров.
Получить границы полосы слева и справа от транспортного средства.
Продолжите моделирование и обновите плоттеры.
bep = birdsEyePlot('XLim',[-40 40],'YLim',[-30 30]); olPlotter = outlinePlotter(bep); lblPlotter = laneBoundaryPlotter(bep,'Color','r','LineStyle','-'); lbrPlotter = laneBoundaryPlotter(bep,'Color','g','LineStyle','-'); rbsEdgePlotter = laneBoundaryPlotter(bep); legend('off'); while advance(scenario) rbs = roadBoundaries(car); [position,yaw,length,width,originOffset,color] = targetOutlines(car); lb = laneBoundaries(car,'XDistance',0:5:30,'LocationType','Center', ... 'AllBoundaries',false); plotLaneBoundary(rbsEdgePlotter,rbs) plotLaneBoundary(lblPlotter,{lb(1).Coordinates}) plotLaneBoundary(lbrPlotter,{lb(2).Coordinates}) plotOutline(olPlotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color) end



В этом примере показано, как создать сценарий движения для маневров, таких как изменение полос движения и прохождение других транспортных средств. Создаются дороги с проезжающими зонами и добавляются транспортные средства в сценарий. Затем определите траектории для этих транспортных средств, чтобы имитировать изменение полосы движения транспортного средства в зонах прохождения.
Создание дороги с проезжающими зонами с помощью композитной разметки полосы движения
Создайте сценарий управления. Укажите центры дорог и количество полос движения для добавления двусторонней двухполосной прямой дороги длиной 54 метра с направлением прорисовки сверху вниз.
scenario = drivingScenario('StopTime',10);
roadCenters = [50 0; -4 0];
numLanes = [1 1];Как правило, количество разметок полос равно количеству полос плюс одна. Двухсторонняя, двухполосная дорога имеет 3 разметки полос, а самая внешняя разметка полос по обоим краям представляет собой сплошные белые линии.
Создать сплошной объект разметки шириной 0,25 метра, составляющий самую внешнюю разметку полосы движения для дороги с двусторонним движением.
outerLM = laneMarking('Solid','Width',0.25);
Создание массива разметки полосы движения SolidMarking и DashedMarking объекты, содержащие свойства сплошных и пунктирных двойных желтых линий.
lmArray = [laneMarking('DoubleSolid','Color','Yellow','Width',0.25) laneMarking('DashedSolid','Color','Yellow','Length',1,'Space',1.5,'Width',0.25) laneMarking('DoubleSolid','Color','Yellow','Width',0.25) laneMarking('SolidDashed','Color','Yellow','Length',1,'Space',1.5,'Width',0.25)];
Создайте составной объект разметки полосы для разметки центральной полосы с помощью массива разметки полосы. Укажите нормированную длину для каждого объекта маркировки.
centerLM = laneMarking(lmArray,'SegmentRange',[0.1 0.25 0.2 0.35]);Создайте вектор самых внешних объектов и объектов разметки центральной полосы движения. Передача вектора в качестве входных данных в lanespec для определения характеристик полосы движения дороги.
marking = [outerLM centerLM outerLM]; ls = lanespec(numLanes,'Width',7,'Marking',marking);
Добавьте дорогу в сценарий движения. Постройте график сценария вождения. Поскольку направление прорисовки дороги - сверху вниз, типы разметки в комбинированной разметке полосы также имеют место в порядке сверху вниз.
road(scenario,roadCenters,'Lanes',ls); figMark = figure; set(figMark,'Position',[0 0 600 600]); hPlot = axes(figMark); plot(scenario,'Parent',hPlot); title('Composite Marking: Road with Passing Zones')

Моделирование изменения полосы движения транспортного средства в зонах прохождения
Добавьте в сценарий тихоходное транспортное средство (SMV). Укажите ППМ и значение скорости, чтобы задать траекторию для SMV.
slowVehicle = vehicle(scenario,'ClassID',1,'Position',[37 -3 0]); waypoints = [37 -3;12 -3]; speed = 2; smoothTrajectory(slowVehicle,waypoints,speed);
Добавьте в сценарий еще одно транспортное средство. Установите траекторию движения транспортного средства таким образом, чтобы оно проходило SMV перед ним путем изменения полос движения в зонах прохождения.
passingVehicle = vehicle(scenario,'ClassID',1,'Position',[49 -3 0]); waypoints = [49 -3; 45 -3; 40 -3; 35 0; 30 3; 26 3; 22 3; 18 3; 8 0; 5 -2; 2 -3; 1 -3]; speed = 6; smoothTrajectory(passingVehicle,waypoints,speed);
Создайте пользовательское окно фигуры и постройте график сценария.
close all; figScene = figure; set(figScene,'Position',[0 0 600 600]); hPanel = uipanel(figScene); hPlot = axes(hPanel); plot(scenario,'Parent',hPlot); title('Passing Zone: Change Lane and Pass Other Vehicle') % Run the simulation while advance(scenario) pause(0.01) end

type - Тип разметки полосы движения'Unmarked' | 'Solid' | 'Dashed' | 'DoubleSolid' | 'DoubleDashed' | 'SolidDashed' | 'DashedSolid'Тип разметки полосы движения, указанный в качестве одного из этих значений.
'Unmarked' | 'Solid' | 'Dashed' | 'DoubleSolid' | 'DoubleDashed' | 'SolidDashed' | 'DashedSolid' |
|---|---|---|---|---|---|---|
Без разметки полосы движения | Сплошная линия | Пунктирная линия | Две сплошные линии | Две пунктирные линии | Сплошная линия слева, пунктирная линия справа | Пунктирная линия слева, сплошная линия справа |
|
|
|
|
|
|
|
|
Тип разметки полосы хранится в Type, свойство, доступное только для чтения возвращенного объекта разметки полосы движения.
lmArray - 1-D массив объектов разметки полос движенияLaneMarking объект | SolidMarking объект | DashedMarking объект1-D массив объектов разметки полосы движения, указанный как
LaneMarking объект для 'Unmarked' тип разметки полосы движения.
SolidMarking объект для 'Solid' и 'DoubleSolid' типы разметки полосы движения.
DashedMarking объект для 'Dashed', 'DoubleDashed', 'SolidDashed', и 'DashedSolid' типы разметки полосы движения.
Пример: lmArray = [laneMarking('Solid') laneMarking('Dashed')]
range - Диапазон для каждого типа маркировкиДиапазон для каждого типа маркировки, заданный как вектор с нормализованными значениями в интервале [0, 1]. Длина вектора должна совпадать с числом типов маркировки, указанных во входном массиве lmArray.
Значение диапазона по умолчанию для каждого типа разметки в полосе является обратным количеству типов разметки, указанному в lmArray.
Например, если входной массив разметки полосы содержит три объекта разметки полосы, например lmArray = [laneMarking('Solid') laneMarking('Dashed') laneMarking('Solid')], то значение диапазона по умолчанию для каждого типа маркировки равно 1/3, то есть range = [0.3330 0.3330 0.3330].
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
laneMarking('Dashed','Width',0.25,'Length',5.0) создает полосу с тире шириной 0,25 метра и разнесением на 5 метров.'Width' - Ширина разметки полосы движения0.15 (по умолчанию) | положительный вещественный скалярШирина разметки полосы движения, указанная как разделенная запятыми пара, состоящая из 'Width' и положительный действительный скаляр. Для обозначения двойной полосы используется одинаковая ширина обеих линий. Единицы в метрах.
Ширина разметки полосы должна быть меньше ширины ее ограждающей полосы. Ограждающая полоса - полоса непосредственно слева от разметки полосы.
Пример: 0.20
'Color' - Цвет разметки полосы движения[1 1 1] (белый) (дефолт) | тройка RGB | шестнадцатеричный цветовой код | окрашивают имя | короткое цветное имяЦвет разметки полосы, указанной как разделенная запятыми пара, состоящая из: 'Color' и триплет RGB, шестнадцатеричный цветовой код, имя цвета или короткое имя цвета. Для обозначения двойной полосы используется один и тот же цвет для обеих линий.
Для пользовательского цвета укажите триплет RGB или шестнадцатеричный цветовой код.
Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].
Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.
Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.
| Имя цвета | Краткое имя | Триплет RGB | Шестнадцатеричный цветовой код | Внешность |
|---|---|---|---|---|
'red' | 'r' | [1 0 0] | '#FF0000' |
|
'green' | 'g' | [0 1 0] | '#00FF00' |
|
'blue' | 'b' | [0 0 1] | '#0000FF' |
|
'cyan'
| 'c' | [0 1 1] | '#00FFFF' |
|
'magenta' | 'm' | [1 0 1] | '#FF00FF' |
|
'yellow' | 'y' | [0.98 0.86 0.36] | '#FFFF00' |
|
'black' | 'k' | [0 0 0] | '#000000' |
|
'white' | 'w' | [1 1 1] | '#FFFFFF' |
|
Пример: [0.8 0.8 0.8]
'Strength' - Прочность на насыщение цвета разметки полосы движения1 (по умолчанию) | вещественный скаляр в диапазоне [0, 1]Прочность насыщения цвета разметки полосы, определяемая как разделенная запятыми пара, состоящая из: 'Strength' и действительный скаляр в диапазоне [0, 1]. Значение 0 соответствует маркировке, цвет которой является полностью ненасыщенным. Маркировка серая. Значение 1 соответствует маркировке, цвет которой полностью насыщен. Для двухполосной разметки используется одинаковая прочность для обеих линий.
Пример: 0.20
'Length' - Длина тире в пунктирных линиях3.0 (по умолчанию) | положительный вещественный скалярДлина тире в пунктирных линиях, определяемая как разделенная запятыми пара, состоящая из 'Length' и положительный действительный скаляр. Для двухполосной разметки используется одинаковая длина для обеих линий. Тире является видимой частью пунктирной линии. Единицы в метрах.
Пример: 2.0
'Space' - Длина промежутка между пунктирными линиями9.0 (по умолчанию) | положительный вещественный скалярДлина промежутка между концом одного тире и началом следующего тире, определяемая как разделенная запятыми пара, состоящая из 'Space' и положительный действительный скаляр. Для двухполосной разметки используется одинаковая длина для обеих линий. Единицы в метрах.
Пример: 2.0
lm - Разметка полосы движенияLaneMarking объект | SolidMarking объект | DashedMarking объектРазметка полосы, возвращенная как LaneMarking объект, SolidMarking объект, или DashedMarking объект. Тип возвращаемого объекта зависит от типа входной разметки полосы, указанной для type вход.
| Тип ввода | Разметка выходной полосы | Свойства разметки полосы движения |
|---|---|---|
'Unmarked' |
|
|
'Solid' |
|
|
'DoubleSolid' | ||
'Dashed' |
|
|
'DashedSolid' | ||
'SolidDashed' | ||
'DoubleDashed' |
Эти свойства можно задать при создании объекта разметки полосы движения с помощью соответствующих пар «имя-значение» laneMarking функция. Чтобы обновить эти свойства после создания, используйте точечную нотацию. Например:
lm = laneMarking('Solid');
lm.Width = 0.2;Type, который доступен только для чтения. Для получения подробной информации о геометрических свойствах SolidMarking и DashedMarking см. «Спецификации полосы движения».
cm - Композитная разметка полосы движенияCompositeMarking объектКомпозитная разметка полосы движения, возвращенная как CompositeMarking объект со свойствами Markings и SegmentRange.
| Свойства разметки составной полосы движения | Описание |
Markings | Это свойство представляет собой массив объектов разметки полос, который определяет несколько типов разметки, составляющих составную разметку полос. Часть разметки полосы, определяемая каждым объектом разметки полосы, является сегментом маркера. Это свойство доступно только для чтения. |
SegmentRange | Это свойство задает нормированный диапазон для каждого сегмента маркера в составной разметке полосы движения. Это свойство доступно только для чтения. |
Этот объект используется для задания нескольких типов разметки вдоль полосы движения. Дополнительные сведения о том, как задать составную разметку полосы движения и порядок сегментов маркеров вдоль полосы движения, см. в разделе Составная разметка полосы движения.
Создание дороги с помощью road укажите центры дорог в качестве ввода матрицы. Функция создает направленную линию, пересекающую центры дорог, начиная от координат в первой строке матрицы и заканчивая координатами в последней строке матрицы. Координаты в первых двух строках матрицы определяют направление прорисовки дороги. Эти координаты соответствуют первым двум последовательным дорожным центрам. Направление рисования - это направление, в котором дороги визуализируются на графике сценария.
Чтобы создать дорогу с помощью приложения «Конструктор сценариев вождения», можно либо указать параметр «Центры дорог», либо в интерактивном режиме нарисовать на холсте сценария. Подробный пример см. в разделе Создание сценария управления. В этом случае направление прорисовки - это направление, в котором тонируются дороги в холсте «Сценарий».
Для дороги с направлением прорисовки сверху вниз разница между координатами X первых двух последовательных центров дороги является положительной.
Для дороги с направлением прорисовки снизу вверх разница между координатами X первых двух последовательных центров дороги отрицательна.
|
|
|
Для дороги с направлением прорисовки слева направо разница между координатами y первых двух последовательных центров дороги является положительной.
Для дороги с направлением прорисовки справа налево разница между координатами y первых двух последовательных центров дороги отрицательна.
|
|
|
Полосы движения должны нумероваться слева направо, при этом левый край дороги определяется относительно направления прорисовки дороги. Для дороги с односторонним движением по умолчанию левый край дороги представляет собой сплошную желтую разметку, которая указывает конец дороги в поперечном направлении (направлении, перпендикулярном направлению рисования). Для дороги с двусторонним движением по умолчанию обе кромки отмечены сплошными белыми линиями.
Например, на этих диаграммах показано, как полосы пронумерованы на дороге с односторонним и двусторонним движением с направлением вытягивания сверху вниз.
| Нумерация полос в дороге с односторонним движением | Нумерация полос движения в двухсторонней дороге |
Укажите количество полос движения как положительное целое число для дороги с односторонним движением. Если целочисленное значение задано как 1, 2, 3 обозначают первую, вторую и третью полосы дороги соответственно.
| Укажите количество полос движения в виде двухэлементного вектора положительного целого числа для дороги с двусторонним движением. Если установить вектор как [ 1L обозначают единственную левую полосу дороги. 1R и 2R обозначают первую и вторую правую полосы дороги соответственно.
|
Спецификации полос применяются в порядке нумерации полос.
Составная разметка полосы содержит два или более маркерных сегмента, которые определяют несколько типов разметки вдоль полосы. Геометрические свойства составной разметки полосы движения включают геометрические свойства каждого типа разметки и нормализованные длины сегментов маркера.
Порядок расположения указанных сегментов маркера в составной разметке полосы зависит от направления прорисовки дороги. Каждый сегмент маркера представляет собой направленный сегмент с начальной точкой и перемещается к центру последней дороги. Первый сегмент маркера начинается от первого центра дороги и перемещается к последнему центру дороги на заданную длину. Второй сегмент маркера начинается от конечной точки первого сегмента маркера и перемещается к центру последней дороги на заданную длину. Такой же процесс применяется к каждому сегменту маркера, заданному для составной разметки полосы движения. Нормализованную длину для каждого из этих сегментов маркера можно задать, указав range входной аргумент.
Например, рассмотрим одностороннюю дорогу с двумя полосами. Вторая разметка полосы движения с левого края дороги представляет собой составную разметку полосы движения с типами разметки Solid и Dashed. Нормированный диапазон для каждого типа маркировки составляет 0,5. Первый сегмент маркера представляет собой сплошную маркировку, а второй сегмент маркера представляет собой пунктирную маркировку. На этих диаграммах показан порядок, в котором сегменты маркера применяются к направлениям рисования дороги слева направо и справа налево.
|
|
|
Сведения о геометрических свойствах разметки полосы движения см. в разделе Спецификации полосы движения.
На схеме показаны компоненты и геометрические свойства дорог, полос движения и разметки полос движения.

Объект спецификации полосы движения, lanespec, определяет полосы движения.
NumLanes свойство определяет количество полос движения. При создании этого объекта необходимо указать количество полос движения.
Width свойство определяет ширину каждой полосы.
Marking свойство содержит спецификации каждой разметки полосы движения на дороге. Marking представляет собой массив объектов разметки полос с одним объектом на полосу. Для создания этих объектов используйте laneMarking функция. Технические требования к разметке полосы движения включают:
Type - Тип разметки полосы движения (сплошная, пунктирная и т.д.)
Width - Ширина разметки полосы движения
Color - Цвет разметки полосы движения
Strength - Значение насыщенности для цвета разметки полосы движения
Length - для пунктирных полос - длина каждой пунктирной линии;
Space - Для пунктирных полос - расстояние между тире
SegmentRange - Для составной разметки полосы движения нормированная длина каждого сегмента маркера
Type свойство содержит характеристики типа полосы движения для каждой полосы движения в дороге. Type может быть однородным объектом типа полосы или гетерогенным массивом типов полосы.
Однородный объект типа полосы содержит характеристики всех полос на дороге.
Гетерогенный массив типов полос содержит массив объектов типа полос с одним объектом на полосу.
Для создания этих объектов используйте laneType функция. Характеристики типа полосы движения включают в себя:
Type - Тип полосы движения (движение, граница и т.д.)
Color - Цвет полосы
Strength - Прочность цвета полосы движения
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.