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);

Добавьте автомобиль, оборудованный датчиком и задайте его траекторию от его скорости и waypoints. Автомобиль перемещается на уровне 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];
speed = 30;
trajectory(car,waypoints,speed);

Постройте сценарий и соответствующий график преследования.

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 является количеством значений расстояния.

Пример: 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 соответствует маркировке, цвет которой полностью насыщается.

Width

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

Length

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

Space

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

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

Объекты

Функции

Введенный в R2018a