laneMarking

Создайте дорожный объект маркировки маршрута

Синтаксис

lm = laneMarking(type)
lm = laneMarking(type,Name,Value)

Описание

lm = laneMarking(type) создает объект маркировки маршрута по умолчанию заданного типа (твердый маршрут, подчеркнутый штриховой линией маршрут, и так далее). Этот объект задает характеристики контура маршрута, отмечающего на дороге. При создании дорог в ведущем сценарии можно использовать объекты маркировки маршрута в качестве входных параметров к объекту lanespec. Для получения дополнительной информации смотрите Спецификации Маршрута.

пример

lm = laneMarking(type,Name,Value) установите свойства объекта маркировки маршрута, использующего одну или несколько пар "имя-значение". Например, laneMarking('Solid','Color','yellow') создает чисто желтую маркировку маршрута.

Примеры

свернуть все

Создайте ведущий сценарий и дорожные центры прямой, 80-метровой дороги.

sc = 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(sc,roadCenters,'Lanes',lspec);
plot(sc)

Моделируйте ведущий сценарий с одним автомобилем, перемещающимся на S-кривой. Создайте и постройте контуры маршрута.

Создайте ведущий сценарий с одной дорогой, имеющей S-кривую.

sc = 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(sc,roadcenters,'Lanes',ls);

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

car = vehicle(sc, ...
    '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(sc)

chasePlot(car)

Запустите цикл симуляции.

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

  2. Получите дорожные контуры и прямоугольные контуры.

  3. Получите контуры маршрута налево и право на автомобиль.

  4. Усовершенствуйте симуляцию и обновите плоттеры.

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(sc)
    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

Входные параметры

свернуть все

Тип маркировки маршрута, заданной как одно из этих значений.

'Unmarked' 'Solid''Dashed''DoubleSolid''DoubleDashed''SolidDashed''DashedSolid'

Никакая маркировка маршрута

Сплошная линия

Пунктирная линия

Две сплошных линии

Две пунктирных линии

Сплошная линия на левой, пунктирной линии на праве

Пунктирная линия на левой, сплошной линии на праве

Тип маркировки маршрута хранится в Type, свойстве только для чтения возвращенного объекта маркировки маршрута.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: laneMarking('Dashed','Width',0.25,'Length',5.0) создает маршрут с тире, которые 0,25 метра шириной и расположенные с интервалами на расстоянии в 5 метров.

Ширины маркировки маршрута, заданные как пара, разделенная запятой, состоящая из 'Width' и положительного действительного скаляра. Для двойного маркера маршрута та же ширина используется для обеих строк. Модули исчисляются в метрах.

Пример: 0.20

Цвет маркировки маршрута, заданной как пара, разделенная запятой, состоящая из 'Color' и названия цвета или триплета RGB. Для двойного маркера маршрута тот же цвет используется для обеих строк.

Для пользовательского цвета укажите триплет RGB. Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должны быть в диапазоне [0,1]; например, [0,4 0,6 0,7]. Кроме того, вы можете задать имена некоторых простых цветов. Эта таблица приводит опции именованного цвета и эквивалентные значения триплета RGB.

Название цветаТриплет RGBВнешний вид
'red'[1 0 0]

'green'[0 1 0]

'blue'[0 0 1]

'cyan' [0 1 1]

'magenta'[1 0 1]

'yellow'[1 1 0]

'black'[0 0 0]

'white'[1 1 1]

Пример: [0.8 0.8 0.8]

Видимость маркировки маршрута, заданной как пара, разделенная запятой, состоящая из 'Strength' и действительного скаляра в области значений [0, 1]. Значение 0 соответствует маркировке, которая не видима. Значение 1 соответствует маркировке, которая абсолютно видима. Для двойной маркировки маршрута та же сила используется для обеих строк.

Пример: 0.20

Длина тире в пунктирных линиях, заданных как пара, разделенная запятой, состоящая из 'Length' и положительного действительного скаляра. Для двойной маркировки маршрута та же длина используется для обеих строк. Тире является видимой частью пунктирной линии. Модули исчисляются в метрах.

Пример: 2.0

Продолжительность пробела между концом одного тире и начало следующего тире, заданного как пара, разделенная запятой, состоящая из 'Space' и положительного действительного скаляра. Для двойной маркировки маршрута та же длина используется для обеих строк. Модули исчисляются в метрах.

Пример: 2.0

Выходные аргументы

свернуть все

Маркировка маршрута, возвращенная как объект LaneMarking, объект SolidMarking или объект DashedMarking. Тип возвращенного объекта зависит от типа входной маркировки маршрута, заданной для входа type.

InputType Выведите отмечающий маршрутСвойства отмечающего маршрута
'Unmarked'

Объект LaneMarking

  • Type

'Solid'

Объект SolidMarking

  • Color

  • Width

  • Strength

  • Type

'DoubleSolid'
'Dashed'

Объект DashedMarking

  • Length

  • Space

  • Color

  • Width

  • Strength

  • Type

'DashedSolid'
'SolidDashed'
'DoubleDashed'

Можно установить эти свойства, когда вы создаете объект маркировки маршрута при помощи соответствующих пар "имя-значение" функции laneMarking. Чтобы обновить эти свойства после создания, используйте запись через точку. Например:

lm = laneMarking('Solid');
lm.Width = 0.2;
Можно установить все свойства после создания кроме Type, который только для чтения.

Больше о

свернуть все

Спецификации маршрута

Схема показывает компоненты и геометрические свойства дорог, маршрутов и маркировок маршрута.

Левый и правый заданы относительно дорожных центров. Задайте дорожные центры как матричный вход к функции road. Дорожные центры создают направленную строку, запускающуюся от первой строки до последней строки матрицы. Левое и правое среднее значение, левое и правое из направленной строки. Ширина дороги является суммой всех ширин маршрута плюс половина ширин маркировок контура левого края и правого края.

Объект спецификации маршрута, lanespec, задает дорожные маршруты.

  • Свойство NumLanes задает количество маршрутов. Необходимо задать количество маршрутов, когда вы создаете этот объект.

  • Свойство Width задает ширину каждого маршрута.

  • Свойство Marking содержит спецификации каждой маркировки маршрута на дороге. Marking является массивом объектов маркировки маршрута с одним объектом на маршрут. Чтобы создать эти объекты, используйте функцию laneMarking. Спецификации маркировки маршрута включают:

    • Ввод Тип маркировки маршрута (тело, подчеркнутое штриховой линией, и так далее)

    • Width Ширина маркировки маршрута

    • Color — Цвет маркировки маршрута

    • Длина Для пунктирных маршрутов, длины каждой пунктирной линии

    • Spacing — Для пунктирных маршрутов, интервала между тире

Введенный в R2018a