Создание спецификаций дорожной полосы
The lanespec
объект определяет спецификации маршрута дороги, которая была добавлена в drivingScenario
использование объекта road
функция. Для получения дополнительной информации смотрите Спецификации маршрута.
создает спецификации маршрута для дороги, имеющей lnspec
= lanespec(numlanes
)numlanes
переулки. numLanes
устанавливает NumLanes
свойство lanespec
объект. Порядок нумерации полос на дороге зависит от ориентации дороги. Для получения дополнительной информации смотрите Направление рисования дороги и Нумерация полос движения.
устанавливает свойства с помощью одной или нескольких пар "имя-значение". Для примера, lnspec
= lanespec(numlanes
,Name,Value
)lanespec(3,'Width',[2.25 3.5 2.25])
задает трехполосную дорогу шириной слева направо 2,25 метра, 3,5 метра и 2,25 метра. Для получения дополнительной информации о геометрических свойствах маршрута смотрите Спецификации маршрута.
NumLanes
- Количество дорожных полосЭто свойство доступно только для чтения.
Количество полос в дороге, заданное как положительное целое или двухэлементный вектор положительных целых чисел, [N L, N R]. Когда NumLanes
является положительным целым числом, все полосы движения протекают в одном направлении. Когда NumLanes
является вектором:
N L - количество левых полос, все протекающие в одном направлении.
N R - количество правых полос движения, все они протекают в противоположном направлении.
Общее количество полос в дороге является суммой этих векторных значений: N = N L + N R.
Вы можете задать это свойство при создании объекта. После создания объекта это свойство доступно только для чтения.
Пример: [2 2]
задает две левые полосы и две правые полосы.
Width
- Ширина маршрута3.6
(по умолчанию) | положительный действительный скаляр | 1-бай- N вектор положительных действительных скаляровШирина полосы, заданная как положительный действительный скаляр или 1- N вектор положительных действительных скаляров, где N количество полос в дороге. N должно быть равно numlanes
и соответствующее значение, установленное в NumLanes
свойство.
Когда Width
является скаляром, то же значение применяется ко всем полосам. Когда Width
является вектором, векторные элементы применяются к полосам слева направо. Модули измерения указаны в метрах.
Пример: [3.5 3.7 3.7 3.5]
Типы данных: double
Marking
- Разметка маршрутаLaneMarking
объект (по умолчанию) | SolidMarking
| объекта DashedMarking
| объекта CompoundMarking
| объекта 1-by - M массив объектов разметки маршрутаРазметка маршрута дороги, заданная в качестве одного из следующих значений:
LaneMarking
объект. Это значение по умолчанию.
SolidMarking
объект
DashedMarking
объект
CompoundMarking
объект
1-by - M массив объектов разметки маршрута.
M - количество разметки маршрута. Для дороги с N полосами M = N + 1.
Чтобы создать объекты разметки маршрута, используйте laneMarking
и укажите тип разметки маршрута.
'Unmarked' | 'Solid' | 'Dashed' | 'DoubleSolid' | 'DoubleDashed' | 'SolidDashed' | 'DashedSolid' |
---|---|---|---|---|---|---|
Разметка маршрута отсутствует | Сплошная линия | Штриховая линия | Две сплошные линии | Две штриховые линии | Сплошная линия слева, штриховая линия справа | Штриховая линия слева, сплошная линия справа |
|
|
|
|
|
|
|
По умолчанию для дороги с односторонним движением самая правая и центральная разметка маршрута являются белыми, а самая левая разметка маршрута - желтыми. Для двухсторонних дорог цвет разделительной разметки маршрута жёлтый.
Пример: [laneMarking('Solid') laneMarking('DoubleDashed') laneMarking('Solid')]
задает разметку маршрута для двухполосной дороги. Крайняя левая и крайняя правая разметка маршрута являются сплошными линиями, а разделительная разметка маршрута - штриховой линией.
Type
- Типы маршрутовDrivingLaneType
объект (по умолчанию) | RestrictedLaneType
| объекта ShoulderLaneType
| объекта ParkingLaneType
| объекта 1-by - M массив объектов типа маршрутаТипы дорог маршрута, заданные как объект однородного типа маршрута или 1-байтовый M массив объектов типа маршрута. M - количество типов маршрутов.
Чтобы создать объекты типа маршрута, используйте laneType
и укажите тип маршрута.
'Driving' | 'Border' | 'Restricted' | 'Shoulder' | 'Parking' |
|
|
|
|
|
Пример: [laneType('Shoulder') laneType('Driving')]
задает типы маршрутов для двухполосной дороги. Крайняя левая полоса - плечевая полоса, а крайняя правая полоса - ведущая полоса.
Создайте сценарий вождения и дорожные центры для прямой, 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
Разметка маршрута в перекрестках не поддерживается.
Количество полос для дороги фиксировано. Вы не можете изменить спецификации маршрута для дороги во время симуляции.
Чтобы создать дорогу при помощи road
function, задайте дорожные центры как матричный вход. Функция создает ориентированную линию, которая пересекает центры дорог, начиная с координат в первой строке матрицы и заканчивая координатами в последней строке матрицы. Координаты в первых двух строках матрицы определяют draw direction дороги. Эти координаты соответствуют первым двум последовательным центрам дорог. Направление рисования является направлением, в котором дороги визуализируются на графике сценария.
Чтобы создать дорогу при помощи приложения Driving Scenario Designer, можно либо задать параметр Road Centers, либо в интерактивном режиме нарисовать на Scenario Canvas. Подробный пример см. в разделе Создание сценария вождения. В этом случае направление рисования является направлением, в котором дороги визуализируются в Scenario Canvas.
Для дороги с направлением ничьей от начала до конца разница между x - координаты первых двух последовательных дорожных центров положительная.
Поскольку дорога с основанием к верхней части привлекает направление, различие между x - координаты первых двух последовательных дорожных центров отрицательны.
|
|
Для дороги с направлением рисования слева направо различие между y -кординатами первых двух последовательных центров дороги положительная.
Для дороги с направлением рисования справа налево различие между y -кординатами первых двух последовательных центров дороги отрицательная.
|
|
Полосы должны нумероваться слева направо, при этом левый край дороги должен быть определен относительно направления рисования дороги. Для дороги с односторонним движением по умолчанию левый край дороги представляет собой сплошную желтую разметку, которая указывает конец дороги в поперечном направлении (направлении, перпендикулярном направлению рисования). Для двухсторонней дороги по умолчанию оба ребер отмечены сплошными белыми линиями.
Для примера эти схемы показа, как нумеруются полосы в односторонней и двухсторонней дороге с направлением вытяжки сверху вниз.
Нумерация полос в односторонней дороге | Нумерация полос на двухсторонней дороге |
Задайте количество полос в качестве положительного целого числа для односторонней дороги. Если вы задаете целое значение следующим 1, 2, 3 обозначают первую, вторую и третью полосы дороги, соответственно. | Задайте количество полос в качестве двухэлементного вектора положительного целого числа для двухсторонней дороги. Если вы устанавливаете вектор равным [ 1L обозначают единственную левую полосу дороги. 1R и 2R обозначают первую и вторую правые полосы дороги, соответственно. |
Спецификации маршрута применяются в порядке нумерации маршрутов.
Схема показывает компоненты и геометрические свойства дорог, полос движения и разметки маршрута.
Объект спецификации маршрута, 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.