exponenta event banner

laneMarkingPlotter

График разметки полосы движения для участка с птичьим глазом

Описание

пример

lmPlotter = laneMarkingPlotter(bep) создает LaneMarkingPlotter объект, настраивающий отображение разметки полосы движения на графике птичьего глаза. LaneMarkingPlotter объект хранится в Plotters свойство входа birdsEyePlot объект, bep. Для отображения разметки полосы используйте plotLaneMarking функция.

lmPlotter = laneMarkingPlotter(bep,Name,Value) устанавливает свойства с использованием одного или нескольких Name,Value аргументы пары. Например, laneMarkingPlotter(bep,'DisplayName','Lane markings') задает отображаемое имя, которое отображается в легенде графика птичьего полета.

Примеры

свернуть все

Создайте сценарий движения, содержащий эго-транспортное средство и целевое транспортное средство, движущееся по трехполосной дороге. Определите границы полосы движения с помощью генератора обнаружения изображения.

scenario = drivingScenario;

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

roadCenters = [0 0 0; 60 0 0; 120 30 0];
lspc = lanespec(3);
road(scenario,roadCenters,'Lanes',lspc);

Укажите, что эго-транспортное средство следует по центральной полосе со скоростью 30 м/с.

egovehicle = vehicle(scenario,'ClassID',1);
egopath = [1.5 0 0; 60 0 0; 111 25 0];
egospeed = 30;
smoothTrajectory(egovehicle,egopath,egospeed);

Укажите, что целевое транспортное средство движется впереди эго-транспортного средства со скоростью 40 м/с и изменяет полосы движения вблизи эго-транспортного средства.

targetcar = vehicle(scenario,'ClassID',1);
targetpath = [8 2; 60 -3.2; 120 33];
targetspeed = 40;
smoothTrajectory(targetcar,targetpath,targetspeed);

Отображение графика погони для 3-D вида сценария из-за эго-транспортного средства.

chasePlot(egovehicle)

Создайте генератор обнаружения изображений для обнаружения полос движения и объектов. Шаг датчика указывает на один градус вниз.

visionSensor = visionDetectionGenerator('Pitch',1.0);
visionSensor.DetectorOutput = 'Lanes and objects';
visionSensor.ActorProfiles = actorProfiles(scenario);

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

  1. Создайте график птичьего глаза и связанные с ним плоттеры.

  2. Отображение зоны действия датчика.

  3. Отображение разметки полосы движения.

  4. Получить наземные истинные позы целей на дороге.

  5. Получить идеальные граничные точки полосы до 60 м вперед.

  6. Создание обнаружений по идеальным позициям цели и границам полос движения.

  7. Отображение контура цели.

  8. Отображение обнаружений объектов, если обнаружение объектов допустимо.

  9. Отображение границы полосы движения при допустимом обнаружении полосы движения.

bep = birdsEyePlot('XLim',[0 60],'YLim',[-35 35]);
caPlotter = coverageAreaPlotter(bep,'DisplayName','Coverage area', ...
    'FaceColor','blue');
detPlotter = detectionPlotter(bep,'DisplayName','Object detections');
lmPlotter = laneMarkingPlotter(bep,'DisplayName','Lane markings');
lbPlotter = laneBoundaryPlotter(bep,'DisplayName', ...
    'Lane boundary detections','Color','red');
olPlotter = outlinePlotter(bep);
plotCoverageArea(caPlotter,visionSensor.SensorLocation,...
    visionSensor.MaxRange,visionSensor.Yaw, ...
    visionSensor.FieldOfView(1));
while advance(scenario)
    [lmv,lmf] = laneMarkingVertices(egovehicle);
    plotLaneMarking(lmPlotter,lmv,lmf)
    tgtpose = targetPoses(egovehicle);
    lookaheadDistance = 0:0.5:60;
    lb = laneBoundaries(egovehicle,'XDistance',lookaheadDistance,'LocationType','inner');
    [obdets,nobdets,obValid,lb_dets,nlb_dets,lbValid] = ...
        visionSensor(tgtpose,lb,scenario.SimulationTime);
    [objposition,objyaw,objlength,objwidth,objoriginOffset,color] = targetOutlines(egovehicle);
    plotOutline(olPlotter,objposition,objyaw,objlength,objwidth, ...
        'OriginOffset',objoriginOffset,'Color',color)
    if obValid
        detPos = cellfun(@(d)d.Measurement(1:2),obdets,'UniformOutput',false);
        detPos = vertcat(zeros(0,2),cell2mat(detPos')');
        plotDetection(detPlotter,detPos)
    end
    if lbValid
        plotLaneBoundary(lbPlotter,vertcat(lb_dets.LaneBoundaries))
    end
end

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

свернуть все

Участок птичьего глаза, указанный как birdsEyePlot объект.

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

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

Пример: laneBoundaryPlotter('Color','red') устанавливает красный цвет разметки полосы движения.

Имя плоттера, отображаемое в легенде, указанное как разделенная запятыми пара, состоящая из 'DisplayName' и вектор символа или строковый скаляр. Если имя не указано, на графике птичьего глаза не отображается запись легенды для плоттера.

Цвет лица фрагментов разметки полосы, указанный как пара, разделенная запятыми, состоящая из 'FaceColor' и триплет RGB или одно из имен цветов, перечисленных в таблице.

Для пользовательского цвета укажите триплет RGB. Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0, 1]; например, [0,4 0,6 0,7]. Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета и эквивалентные значения триплета RGB.

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

'green'[0 1 0]

'blue'[0 0 1]

'cyan' [0 1 1]

'magenta'[1 0 1]

'yellow'[1 1 0]

'black'[0 0 0]

'white'[1 1 1]

Марка, связанная с объектом плоттера, заданная как разделенная запятыми пара, состоящая из 'Tag' и вектор символов или строковый скаляр. Значение по умолчанию: 'PlotterN', где N является целым числом, которое соответствует Nтый плоттер, связанный с вводом birdsEyePlot объект.

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

свернуть все

Плоттер разметки полосы, возвращенный как LaneMarkingPlotter объект. Этот объект можно изменить, изменив его значения свойств. Имена свойств соответствуют аргументам пары имя-значение laneMarkingPlotter функция.

lmPlotter хранится в Plotters свойство входа birdsEyePlot объект, bep. Для печати разметки полосы используйте plotLaneMarking функция.

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