Создайте дорожный объект маркировки маршрута
создает объект маркировки маршрута по умолчанию заданного типа (твердый маршрут, подчеркнутый штриховой линией маршрут, и так далее). Этот объект задает характеристики контура маршрута, отмечающего на дороге. При создании дорог в ведущем сценарии можно использовать объекты маркировки маршрута в качестве входных параметров к 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);
Добавьте автомобиль, оборудованный датчиком и задайте его траекторию от его скорости и waypoints. Автомобиль перемещается на уровне 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]; speed = 30; trajectory(car,waypoints,speed);
Постройте сценарий и соответствующий график преследования.
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
В этом примере показано, как создать ведущий сценарий для маневров, таких как перестраивание на другую полосу и передача других транспортных средств. Вы создаете дороги с передающими зонами и добавляете транспортные средства в сценарий. Затем задайте траектории для этих транспортных средств, чтобы симулировать изменение маршрута транспортного средства мимоходом зоны.
Крит-Роуд с передающими зонами при помощи составного отмечающего маршрута
Создайте ведущий сценарий. Задайте дорожные центры и количество маршрутов, чтобы добавить двухстороннее, 2D маршрут прямая дорога 54 метров с направлением ничьей сверху донизу.
scenario = drivingScenario('StopTime',10);
roadCenters = [50 0; -4 0];
numLanes = [1 1];
Как правило, количество маркировок маршрута равно количеству маршрутов плюс один. Двухсторонняя, дорога 2D маршрута имеет 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) в сценарий. Задайте waypoints и значение скорости, чтобы установить траекторию для SMV.
slowVehicle = vehicle(scenario,'ClassID',1,'Position',[37 -3 0]); waypoints = [37 -3;12 -3]; speed = 2; trajectory(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; trajectory(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
— 1D массив объектов маркировки маршрутаLaneMarking
возразите | SolidMarking
возразите | DashedMarking
объект1D массив маркировки маршрута возражает в виде
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'
— Ширины маркировки маршрута
(значение по умолчанию) | положительный действительный скалярШирины маркировки маршрута в виде разделенной запятой пары, состоящей из 'Width'
и положительный действительный скаляр. Для двойного маркера маршрута та же ширина используется в обеих линиях. Модули исчисляются в метрах.
Пример: 0.20
'Color'
— Цвет маркировки маршрута
(белое) (значение по умолчанию) | триплет 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'
— Сила насыщения цвета маркировки маршрута
(значение по умолчанию) | действительный скаляр в области значений [0, 1]Сила насыщения маркировки маршрута окрашивает в виде разделенной запятой пары, состоящей из 'Strength'
и действительный скаляр в области значений [0, 1]. Значение 0
соответствует маркировке, цвет которой является полностью ненасыщенным. Маркировка является серой. Значение 1
соответствует маркировке, цвет которой полностью насыщается. Для двойной маркировки маршрута та же сила используется в обеих линиях.
Пример: 0.20
'Length'
— Длина тире в пунктирных линиях
(значение по умолчанию) | положительный действительный скалярДлина тире в пунктирных линиях в виде разделенной запятой пары, состоящей из 'Length'
и положительный действительный скаляр. Для двойной маркировки маршрута та же длина используется в обеих линиях. Тире является видимой частью пунктирной линии. Модули исчисляются в метрах.
Пример: 2.0
'Space'
— Продолжительность пробела между тире в пунктирных линиях
(значение по умолчанию) | положительный действительный скалярПродолжительность пробела между концом одного тире и начало следующего тире в виде разделенной запятой пары, состоящей из 'Space'
и положительный действительный скаляр. Для двойной маркировки маршрута та же длина используется в обеих линиях. Модули исчисляются в метрах.
Пример: 2.0
lm
— Маркировка маршрутаLaneMarking
возразите | SolidMarking
возразите | DashedMarking
объектМаркировка маршрута, возвращенная как LaneMarking
объект, SolidMarking
объект или DashedMarking
объект. Тип возвращенного объекта зависит от типа входной маркировки маршрута, заданной для type
входной параметр.
InputType | Выведите отмечающий маршрут | Свойства отмечающего маршрута |
---|---|---|
'Unmarked' |
|
|
'Solid' |
|
|
'DoubleSolid' | ||
'Dashed' |
|
|
'DashedSolid' | ||
'SolidDashed' | ||
'DoubleDashed' |
Можно установить эти свойства, когда вы создаете объект маркировки маршрута при помощи соответствующих пар "имя-значение" laneMarking
функция. Чтобы обновить эти свойства после создания, используйте запись через точку. Например:
lm = laneMarking('Solid');
lm.Width = 0.2;
Type
, который только для чтения. Для получения дополнительной информации на геометрических свойствах SolidMarking
и DashedMarking
объекты, см. Технические требования Маршрута.
cm
— Составная маркировка маршрутаCompositeMarking
объектСоставная маркировка маршрута, возвращенная как CompositeMarking
объект со свойствами Markings
и SegmentRange
.
Составные свойства отмечающего маршрута | Описание |
Markings | Это свойство является массивом объектов маркировки маршрута, который задает несколько типов маркировки, включающих составную маркировку маршрута. Частью маркировки маршрута, заданной каждым объектом маркировки маршрута, является marker segment. Это свойство доступно только для чтения. |
SegmentRange | Это свойство указывает нормированный диапазон для каждого сегмента маркера в составной маркировке маршрута. Это свойство доступно только для чтения. |
Используйте этот объект задать несколько типов маркировки вдоль маршрута. Для получения дополнительной информации о том, как задать составные маркировки маршрута и порядок сегментов маркера вдоль маршрута, смотрите, что Составной Маршрут отмечает.
Создать дорогу при помощи road
функционируйте, задайте дорожные центры как матричный вход. Функция создает направленную линию, которая пересекает дорожные центры, начинающие с координат в первой строке матрицы и заканчивающиеся в координатах в последней строке матрицы. Координаты в первых двух строках матрицы задают draw direction дороги. Эти координаты соответствуют первым двум последовательным дорожным центрам. Направление ничьей является направлением, в котором дороги представляют в графике сценария.
Чтобы создать дорогу при помощи приложения Driving Scenario Designer, можно или задать параметр Road Centers или в интерактивном режиме привлечь Scenario Canvas. Для подробного примера смотрите Сборку Ведущий Сценарий. В этом случае направление ничьей является направлением, в котором дороги представляют в Scenario Canvas.
Для дороги с направлением ничьей от начала до конца различие между 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.