Создайте объект разметки маршрута
создает объект разметки маршрута по умолчанию заданного типа (сплошная полоса, штриховая полоса и так далее). Этот объект определяет характеристики контура маршрута на дороге. При создании дорог в сценарии вождения можно использовать объекты разметки маршрута в качестве входов для 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 | Это свойство является массивом объектов разметки маршрута, который определяет несколько типов разметки, содержащих составную разметку маршрута. Часть разметки маршрута, заданная каждым объектом разметки маршрута, является marker segment. Это свойство доступно только для чтения. |
SegmentRange | Это свойство задает нормированную область значений для каждого сегмента маркера в составной разметке маршрута. Это свойство доступно только для чтения. |
Этот объект используется для задания нескольких типов маркировки вдоль маршрута. Дополнительные сведения о том, как задать составную разметку маршрута и порядок сегментов маркера вдоль маршрута, см. в разделе «Составная разметка маршрута».
Чтобы создать дорогу при помощи road
function, задайте дорожные центры как матричный вход. Функция создает ориентированную линию, которая пересекает центры дорог, начиная с координат в первой строке матрицы и заканчивая координатами в последней строке матрицы. Координаты в первых двух строках матрицы определяют 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
, определяет дорожные полосы.
The NumLanes
свойство задает количество полос. При создании этого объекта необходимо указать количество полос.
The Width
свойство задает ширину каждой полосы.
The Marking
свойство содержит спецификации каждой разметки маршрута в дороге. Marking
- массив объектов разметки маршрута с одним объектом на полосу. Чтобы создать эти объекты, используйте laneMarking
функция. Спецификации разметки маршрута включают:
Type
- Тип разметки маршрута (сплошная, штриховая и так далее)
Width
- Ширина разметки маршрута
Color
- Цвет разметки маршрута
Strength
- Значение насыщения для цвета разметки маршрута
Length
- для штриховых полос, длина каждой штриховой линии
Space
- для штриховых полос, интервал между штрихами
SegmentRange
- Для составной разметки маршрута нормированная длина каждого сегмента маркера
The Type
свойство содержит спецификации типа маршрута для каждой дорожной полосы. Type
может быть однородным объектом типа маршрута или гетерогенным массивом типов маршрута.
Однородный тип маршрута объекта содержит спецификации типа маршрута всех полос движения на дороге.
Гетерогенный массив типов маршрутов содержит массив объектов типа маршрута с одним объектом на маршруте.
Чтобы создать эти объекты, используйте laneType
функция. Спецификации типа маршрута включают:
Type
- Тип маршрута (вождение, граница и так далее)
Color
- Цвет маршрута
Strength
- Прочность цвета маршрута
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.