laneType

Создайте объект типа дорожной полосы

Описание

пример

lt = laneType(type) возвращает объект типа дорожной полосы со свойствами Type, Color, и Strength для определения различных типов маршрутов для дороги.

Можно использовать этот объект для создания сценариев вождения с дорогами, которые имеют ведущие полосы, пограничные полосы, ограниченные полосы, обочины и парковочные полосы. Можно также загрузить этот сценарий в приложение Driving Scenario Designer.

Для получения дополнительной информации о шагах, связанных с использованием laneType функция со drivingScenario объект и приложение Driving Scenario Designer, см. «Подробнее».

пример

lt = laneType(type,Name,Value) устанавливает свойства объекта типа выхода маршрута с помощью одних или нескольких пар "имя-значение".

Примеры

свернуть все

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

Создайте объект движущей полосы с значениями свойств по умолчанию.

drivingLane = laneType('Driving')
drivingLane = 
  DrivingLaneType with properties:

        Type: Driving
       Color: [0.8000 0.8000 0.8000]
    Strength: 1

Создайте объект типа парковочной полосы. Задайте цвет и значения свойств прочности.

parkingLane = laneType('Parking','Color',[1 0 0],'Strength',0.1)
parkingLane = 
  ParkingLaneType with properties:

        Type: Parking
       Color: [1 0 0]
    Strength: 0.1000

Создайте трехэлементный, неоднородный массив типов маршрутов путем конкатенации объектов вождения и типа парковки. Массив типов маршрутов содержит типы маршрутов для четырехполосной дороги.

lt = [parkingLane drivingLane drivingLane parkingLane];

Создайте спецификацию маршрута для четырехполосной дороги. Добавьте массив типа маршрута в спецификацию маршрута.

ls = lanespec([2 2],'Type',lt);

Создайте объект сценария вождения. Добавьте четырехполосную дорогу со спецификациями маршрута ls к сценарию вождения.

scenario = drivingScenario;
roadCenters = [0 0 0;40 0 0];
road(scenario,roadCenters,'Lanes',ls)
ans = 
  Road with properties:

           Name: ""
         RoadID: 1
    RoadCenters: [2x3 double]
      RoadWidth: 14.5500
      BankAngle: [2x1 double]

Постройте график сценария. Сценарий содержит четырехполосную дорогу, которая имеет две парковочные полосы и две ведущие полосы.

plot(scenario)
legend('Driving Lane','Parking Lane')

Figure contains an axes. The axes contains 4 objects of type patch, line. These objects represent Driving Lane, Parking Lane.

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

lt = [laneType('Shoulder') laneType('Driving') laneType('Driving') laneType('Border','Color',[0.5 0 1],'Strength',0.1)];

Отобразите объектный массив типа маршрута.

lt
lt=1×4 object
  1x4 heterogeneous LaneType (ShoulderLaneType, DrivingLaneType, BorderLaneType) array with properties:

    Type
    Color
    Strength

Проверьте значения свойств.

c = [{lt.Type}' {lt.Color}' {lt.Strength}'];
cell2table(c,'VariableNames',{'Type','Color','Strength'})
ans=4×3 table
      Type             Color            Strength
    ________    ____________________    ________

    Shoulder    0.59    0.59    0.59        1   
    Driving      0.8     0.8     0.8        1   
    Driving      0.8     0.8     0.8        1   
    Border       0.5       0       1      0.1   

Передайте объектный массив типа маршрута как вход в lanespec , а затем создайте объект спецификации маршрута для четырехполосной дороги.

lspec = lanespec([2 2],'Type',lt);

Определите центры дорог.

roadCenters = [0 0 0; 40 0 0];

Чтобы добавить дороги, создайте объект сценария вождения.

scenario = drivingScenario('StopTime',8);

Добавить дороги с указанными центрами дорог и типами маршрутов в сценарий вождения.

road(scenario,roadCenters,'Lanes',lspec);

Добавить два транспортных средств в сценарий. Разместите транспортные средства на движущейся полосе.

vehicle1 = vehicle(scenario,'ClassID',1,'Position',[5 2 0]);
vehicle2 = vehicle(scenario,'ClassID',1,'Position',[35 -2 0]);

Задайте траектории транспортного средства при помощи точек пути. Установите скорости траектории транспортного средства.

waypoints1 = [5 2;10 2;20 2;25 2;30 5;34 5.5];
smoothTrajectory(vehicle1,waypoints1,10)
waypoints2 = [35 -2;20 -2;10 -2;5 -2];
smoothTrajectory(vehicle2,waypoints2,5)

Постройте график сценария. Чтобы продвинуть симуляцию один временной шаг за раз, вызовите advance функция в цикле. Пауза каждые 0,01 секунды, чтобы наблюдать движение транспортных средств на графике. Первое транспортное средство перемещается по траектории по движущейся полосе. Он дрейфует до обочины для экстренной остановки.

% Create a custom figure window and define an axes object
fig = figure;
movegui(fig,'center');
hView = uipanel(fig,'Position',[0 0 1 1],'Title','Scenario with Shoulder, Driving, and Border Lanes');
hPlt = axes(hView);

% Plot the generated driving scenario along with the waypoints.
plot(scenario,'Waypoints','on','Parent',hPlt);
while advance(scenario)
    pause(0.01)
end

Figure contains an axes and an object of type uipanel. The axes contains 10 objects of type patch, line.

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

свернуть все

Тип маршрута, заданный как 'Driving', 'Border', 'Restricted', 'Shoulder', или 'Parking'.

Тип маршрутаОписание
'Driving'Полосы для вождения
'Border'Полосы на границах дорог
'Restricted'Маршруты, зарезервированные для транспортных средств с высокой вместимостью
'Shoulder'Полосы, зарезервированные для аварийной остановки
'Parking'Полосы рядом с движущимися полосами, предназначенные для стоянки транспортных средств

Примечание

Вход типа маршрута устанавливает Type свойство объекта типа выхода маршрута.

Типы данных: char | string

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: laneType('Driving','Color','r')

Цвет маршрута, заданный как разделенная разделенными запятой парами, состоящая из 'Color' и триплет RGB или название цвета.

Триплет RGB задается как трехэлементный вектор-строка, содержащий интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1], для примера, [0.4 0.6 0.7]. В этой таблице перечислены значения триплетов RGB, которые определяют цвета по умолчанию для различных типов маршрутов.

Тип маршрутаТриплет RGB (значения по умолчанию)Внешность
'Driving'[0.8 0.8 0.8]

'Border'[0.72 0.72 0.72]

'Restricted'[0.59 0.56 0.62]

'Shoulder'[0.59 0.59 0.59]

'Parking'[0.28 0.28 0.28]

Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены именованные опции цвета и эквивалентные значения триплета RGB.

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

'green'[0 1 0]

'blue'[0 0 1]

'cyan' [0 1 1]

'magenta'[1 0 1]

'yellow'[0.98 0.86 0.36]

'black'[0 0 0]

'white'[1 1 1]

Примечание

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

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

Примечание

Используйте силу пары "имя-значение" цвета маршрута, чтобы задать Strength свойство объекта типа маршрута.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Тип маршрута, возвращенный как

  • DrivingLaneType объект

  • BorderLaneType объект

  • RestrictedLaneType объект

  • ShoulderLaneType объект

  • ParkingLaneType объект

Возвращенный объект lt зависит от значения входного сигнала type.

typelt
'Driving'DrivingLaneType объект
'Border'BorderLaneType объект
'Restricted'RestrictedLaneType объект
'Shoulder'ShoulderLaneType объект
'Parking'ParkingLaneType объект

Можно создать неоднородную LaneType массив путем конкатенации этих различных объектов типа маршрута.

Подробнее о

свернуть все

Создайте сценарий вождения с дорогами, которые имеют несколько типов маршрутов

Можно добавить дороги с несколькими типами маршрутов в сценарий вождения, выполнив следующие шаги

  1. Создайте пустую drivingScenario объект.

  2. Создайте объект типа маршрута, который задает различные типы маршрутов на дороге при помощи laneType.

  3. Используйте объект типа маршрута как вход в lanespec объект и определить спецификации маршрута для дороги.

  4. Использование lanespec объект как вход в road выполнять функции и добавлять дороги с заданными типами маршрутов в сценарий вождения.

Вы можете использовать plot функция для визуализации сценария вождения.

Можно также импортировать сценарий вождения, содержащий дороги с различными типами маршрутов в Driving Scenario Designer приложения. Чтобы импортировать drivingScenario объект с именем scenario в приложение используйте синтаксис drivingScenarioDesigner(scenario). В сценариях можно:

  • Добавьте или отредактируйте центры дорог.

  • Добавьте актёров и задайте траектории актёра.

  • Монтируйте датчики на автомобиль , оборудованный датчиком и моделируйте обнаружение актёров и контуров маршрута.

Примечание

Редактирование параметров маршрута сбрасывает все полосы в импортированной дороге в тип маршрута 'Driving' со значениями свойств по умолчанию.

См. также

Функции

Объекты

Введенный в R2019b