laneBoundaries

Получите контуры маршрута маршрута агента

Синтаксис

lbdry = laneBoundaries(ac)
lbdry = laneBoundaries(ac,Name,Value)

Описание

lbdry = laneBoundaries(ac) возвращает контуры маршрута, lbdry, маршрута, в котором перемещается агент автомобиля, оборудованного датчиком, ac. Контуры маршрута находятся в системе координат автомобиля, оборудованного датчиком.

пример

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

Примеры

свернуть все

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

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

свернуть все

Агент, принадлежащий объекту drivingScenario, заданному как объект Actor или Vehicle. Чтобы создать эти объекты, используйте actor и функции vehicle, соответственно.

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

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

Пример: 'LocationType','center' указывает, что контуры маршрута сосредоточены на маркировках маршрута.

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

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

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

Местоположение контура маршрутаОписаниеПример
'Center'Контуры маршрута сосредоточены на маркировках маршрута.

Трехполосная дорога имеет четыре контура маршрута: один на маркировку маршрута.

'Inner'Контуры маршрута помещаются во внутренние края маркировок маршрута.

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

Возвратите все контуры маршрута, на которых автомобиль, оборудованный датчиком перемещается, заданный как пара, разделенная запятой, состоящая из 'Value' и false или true.

Контуры маршрута возвращены слева направо относительно автомобиля, оборудованного датчиком. Когда 'AllBoundaries' является false, только контуры маршрута налево и право на автомобиль, оборудованный датчиком возвращены.

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

свернуть все

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

Поле Описание

Coordinates

Координаты контура маршрута, заданные как N с действительным знаком-by-3 матрица, где N является количеством контуров маршрута. Координаты контура маршрута задают положение точек на контуре на расстояниях, заданных аргументом пары "имя-значение" 'XDistance' функции laneBoundaries. Кроме того, набор граничных координат вставляются в матрицу на нулевом расстоянии. Модули исчисляются в метрах.

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 соответствует маркировке, которая абсолютно видима. Значения между 0 и 1 соответствуют частично видимым маркировкам.

Width

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

Length

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

Space

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

Смотрите также

Объекты

Функции

Введенный в R2018a