Эго-ориентированный проективный перспективный график
chasePlot( строит график сценария вождения с точки зрения актера ac)ac. Этот сюжет называется сюжетом погони и имеет эгоцентрическую проективную перспективу, где вид позиционируется сразу за актёром.
chasePlot( задает параметры, использующие одну или несколько пар имя-значение. Например, на графике можно отобразить центры дорог и ППМ актера.ac,Name,Value)
Смоделировать сценарий вождения с одним автомобилем, путешествующим по 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)

Запустите цикл моделирования.
Инициализируйте график «птичий глаз» и создайте плоттер контура, плоттер границы левой и правой полос и плоттер границы дороги.
Получение границ дороги и прямоугольных контуров.
Получить границы полосы слева и справа от транспортного средства.
Продолжите моделирование и обновите плоттеры.
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



Создайте сценарий управления и покажите, как изменяются целевые контуры по мере продвижения моделирования.
Создайте сценарий движения, состоящий из двух пересекающихся прямых дорог. Длина первого отрезка дороги составляет 45 метров. Вторая прямая дорога длиной 32 метра с майковыми барьерами по обоим её краям, и пересекает первую дорогу. Автомобиль, следовавший со скоростью 12,0 метра в секунду по первой дороге, подходит к бегущему пешеходу, пересекающему перекресток со скоростью 2,0 метра в секунду.
scenario = drivingScenario('SampleTime',0.1,'StopTime',1); road1 = road(scenario,[-10 0 0; 45 -20 0]); road2 = road(scenario,[-10 -10 0; 35 10 0]); barrier(scenario,road1) barrier(scenario,road1,'RoadEdge','left') ped = actor(scenario,'ClassID',4,'Length',0.4,'Width',0.6,'Height',1.7); car = vehicle(scenario,'ClassID',1); pedspeed = 2.0; carspeed = 12.0; smoothTrajectory(ped,[15 -3 0; 15 3 0],pedspeed); smoothTrajectory(car,[-10 -10 0; 35 10 0],carspeed);
Создайте эго-ориентированный график погони для транспортного средства.
chasePlot(car,'Centerline','on')

Создайте пустой график птичьего глаза и добавьте плоттер контура и плоттер границы полосы движения. Затем запустите моделирование. На каждом этапе моделирования:
Обновите график для отображения границ дороги и целевых контуров.
Обновите график птичьего глаза, чтобы отобразить обновленные границы дорог и целевые контуры. Перспектива сюжета всегда по отношению к эго-транспортному средству.
bepPlot = birdsEyePlot('XLim',[-50 50],'YLim',[-40 40]); outlineplotter = outlinePlotter(bepPlot); laneplotter = laneBoundaryPlotter(bepPlot); legend('off') while advance(scenario) rb = roadBoundaries(car); [position,yaw,length,width,originOffset,color] = targetOutlines(car); [bposition,byaw,blength,bwidth,boriginOffset,bcolor,barrierSegments] = targetOutlines(car,'Barriers'); plotLaneBoundary(laneplotter,rb) plotOutline(outlineplotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color) plotBarrierOutline(outlineplotter,barrierSegments,bposition,byaw,blength,bwidth, ... 'OriginOffset',boriginOffset,'Color',bcolor) pause(0.01) end


ac - АктерActor объект | Vehicle объектАктер, принадлежащий drivingScenario объект, указанный как Actor или Vehicle объект. Для создания этих объектов используйте actor и vehicle соответственно.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
chasePlot(ac,'Centerline','on','RoadCenters,'on') отображает центральную линию и центры дорог каждого сегмента дороги.'Parent' - Оси для построения графикаAxes объектОси для построения графика, определяемые как разделенная запятыми пара, состоящая из 'Parent' и Axes объект. Если не указать Parent, создается новая фигура.
'Centerline' - Отображение осевой линии дорог'off' (по умолчанию) | 'on'Отображение центральной линии дорог, указанной как разделенная запятыми пара, состоящая из 'Centerline' и 'off' или 'on'. Осевая линия следует за серединой каждого сегмента дороги. Осевые линии являются прерывистыми через такие области, как пересечения или разделения дорог.
'RoadCenters' - Отображение дорожных центров'off' (по умолчанию) | 'on'Отображать центры дорог, указанные как разделенная запятыми пара, состоящая из 'RoadCenters' и 'off' или 'on'. Центры дорог определяют дороги, показанные на графике.
'Waypoints' - Дисплейные ППМ актера'off' (по умолчанию) | 'on'Отображать ППМ актера, указанные как разделенная запятыми пара, состоящая из 'Waypoints' и 'off' или 'on'. ППМ определяют траекторию актера.
'Meshes' - Отображение сетей актера'off' (по умолчанию) | 'on'Отображение сеток актера вместо кубоидов, указанных как разделенная запятыми пара, состоящая из 'Meshes' и 'off' или 'on'.
'ViewHeight' - Высота точки обзора графикаВысота точки обзора графика, заданная как разделенная запятыми пара, состоящая из 'ViewHeight' и положительный действительный скаляр. Высота по отношению к низу актера. Единицы в метрах.
'ViewLocation' - Расположение точки обзора графикаРасположение точки обзора графика, указанной как разделенная запятыми пара, состоящая из 'ViewLocation' и [x, y] действительный вектор. Расположение находится относительно кубовидного центра в системе координат актера. Местоположение точки обзора по умолчанию находится за центром кубовида. [2.5*actor.Length 0]. Единицы в метрах.
'ViewRoll' - Ориентация угла крена точки обзора графика0 (по умолчанию) | вещественный скалярОриентация угла поворота точки обзора графика, заданная как разделенная запятыми пара, состоящая из 'ViewRoll' и реальный скаляр. Единицы измерения в градусах.
'ViewPitch' - Ориентация угла наклона точки обзора графика0 (по умолчанию) | вещественный скалярОриентация угла наклона точки обзора графика, заданная как разделенная запятыми пара, состоящая из 'ViewPitch' и реальный скаляр. Единицы измерения в градусах.
'ViewYaw' - Ориентация точки обзора под углом рыскания0 (по умолчанию) | вещественный скалярОриентация угла рыскания точки обзора графика, заданная как разделенная запятыми пара, состоящая из 'ViewYaw' и реальный скаляр. Единицы измерения в градусах.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.