exponenta event banner

laneType

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

Описание

пример

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

Этот объект можно использовать для создания сценариев движения с дорогами, имеющими полосы движения, пограничные полосы, ограниченные полосы движения, обочины и парковочные полосы. Этот сценарий также можно загрузить в приложение «Конструктор сценариев управления».

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

пример

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 функция для визуализации сценария вождения.

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

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

  • Добавление актёров и определение траекторий актёров.

  • Монтировать датчики на эго-транспортном средстве и имитировать обнаружение действующих лиц и границ полос движения.

Примечание

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

См. также

Функции

Объекты

Представлен в R2019b