exponenta event banner

laneBoundaries

Получить границы полосы актера

Описание

lbdry = laneBoundaries(ac) возвращает границы полосы движения, lbdry, полосы движения, в которой находится эго-транспортное средство, ac, путешествует. Границы полосы движения находятся в системе координат эго-транспортного средства.

пример

lbdry = laneBoundaries(ac,Name,Value) задает параметры, использующие одну или несколько пар имя-значение. Например, laneBoundaries(ac,'AllLaneBoundaries',true) возвращает все границы полосы дороги, по которой едет актер эго-транспортного средства.

Примеры

свернуть все

Смоделировать сценарий вождения с одним автомобилем, путешествующим по 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)

Запустите цикл моделирования.

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

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

свернуть все

Актер, принадлежащий drivingScenario объект, указанный как Actor или Vehicle объект. Для создания этих объектов используйте actor и vehicle соответственно.

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

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

Пример: 'LocationType','center' указывает, что границы полосы движения центрируются на разметке полосы движения.

Расстояния от эго-транспортного средства, на котором вычисляются границы полосы движения, указанные как разделенная запятыми пара, состоящая из 'XDistance' и N-элементный действительный вектор. N - количество значений расстояния. При обнаружении полос движения по обращенным назад камерам укажите отрицательные расстояния. При обнаружении полос движения от фронтальных камер укажите положительные расстояния. Единицы в метрах.

По умолчанию функция вычисляет границы полосы движения на расстоянии 0 от эго-транспортного средства, которые являются границами слева и справа от начала эго-транспортного средства.

Пример: 1:0.1:10 вычисляет границу полосы каждые 0,1 метра в диапазоне от 1 до 10 метров перед эго-транспортным средством.

Пример: linspace(-150,150,101) вычисляет границы 101 полосы в диапазоне от 150 метров позади эго-транспортного средства до 150 метров впереди эго-транспортного средства. Эти расстояния линейно разнесены на 3 метра друг от друга.

Расположение границы полосы движения на разметке полосы движения, указанной как разделенная запятыми пара, состоящая из 'LocationType' и один из вариантов в этой таблице.

Расположение границы полосы движенияОписаниеПример
'Center'Границы полос центрируются на разметке полос.

Трёхполосная дорога имеет четыре границы полос: по одной на разметку полос.

'Inner'Границы полос размещаются по внутренним краям разметки полос.

Трёхполосная дорога имеет шесть границ полос: по две на полосу.

Вернуть все границы полосы движения, по которой едет эго-транспортное средство, указанные как разделенная запятыми пара, состоящая из 'Value' и false или true.

Границы полос возвращаются слева направо относительно эго-транспортного средства. Когда 'AllBoundaries' является falseвозвращаются только границы полосы слева и справа от эго-транспортного средства.

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

свернуть все

Границы полос, возвращаемые в виде массива структур границ полос. В этой таблице представлены поля для каждой структуры.

ОбластьОписание

Coordinates

Координаты границ полосы движения, заданные как вещественная матрица N-by-3, где N - число координат границ полосы движения. Координаты границы полосы определяют положение точек на границе на заданных продольных расстояниях от эго-транспортного средства по центру дороги.

  • В MATLAB ® задайте эти расстояния с помощью 'XDistance' аргумент пары имя-значение laneBoundaries функция.

  • В Simulink ® задайте эти расстояния с помощью параметра «Расстояния от эго-транспортного средства» для вычисления границ (m) блока «Считыватель сценариев» или параметра «Расстояние от родителя» для вычисления границ полос движения блока «Генератор моделирования 3D обнаружения видения».

Эта матрица также включает граничные координаты на нулевом расстоянии от эго-транспортного средства. Эти координаты находятся слева и справа от начала координат эго-транспортного средства, расположенного под центром задней оси. Единицы в метрах.

Curvature

Кривизна границы полосы движения в каждой строке Coordinates матрица, заданная как действительный вектор N-by-1. N - число граничных координат полосы движения. Единицы измерения в радианах на метр.

CurvatureDerivative

Производная кривизны границы полосы движения в каждой строке Coordinates матрица, заданная как действительный вектор N-by-1. N - число граничных координат полосы движения. Единицы измерения в радианах на квадратный метр.

HeadingAngle

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

LateralOffset

Расстояние границы полосы движения от положения эго-транспортного средства, определяемое как действительный скаляр. Смещение к границе полосы слева от эго-транспортного средства является положительным. Смещение справа от эго-транспортного средства является отрицательным. Единицы в метрах.

BoundaryType

Тип разметки границ полосы движения, указанный как одно из следующих значений:

  • 'Unmarked' - Не существует физического маркера полосы движения

  • 'Solid' - Одиночная непрерывная линия

  • 'Dashed' - Одиночная линия штриховых маркеров полосы движения

  • 'DoubleSolid' - Две неразрывные линии

  • 'DoubleDashed' - Две пунктирные линии

  • 'SolidDashed' - Сплошная линия слева и пунктирная линия справа

  • 'DashedSolid' - пунктирная линия слева и сплошная линия справа

Strength

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

Width

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

Length

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

Space

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

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