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