Предварительное моделирование сценария вождения на один шаг
продвигает моделирование сценария вождения на один шаг времени. Чтобы указать время шага, используйте isRunning = advance(scenario)SampleTime свойство входа drivingScenario объект, scenario. Функция возвращает статус, isRunning, моделирования.
Создайте сценарий управления. Используйте время выборки по умолчанию 0,01 секунды.
scenario = drivingScenario;
Добавьте к сценарию прямую 30-метровую дорогу. Дорога имеет две полосы.
roadCenters = [0 0; 30 0];
road(scenario,roadCenters,'Lanes',lanespec(2));
Добавить транспортное средство, которое движется по левой полосе с постоянной скоростью 30 метров в секунду. Постройте график сценария перед запуском моделирования.
v = vehicle(scenario,'ClassID',1); waypoints = [5 2; 25 2]; speed = 30; % m/s smoothTrajectory(v,waypoints,speed) plot(scenario)

Позвоните в advance функция в цикле для продвижения моделирования на один шаг за раз. Приостанавливать каждые 0,01 секунды для наблюдения за движением транспортного средства на графике.
while advance(scenario) pause(0.01) 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


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



scenario - Сценарий вожденияdrivingScenario объектСценарий управления, указанный как drivingScenario объект.
isRunning - Рабочее состояние моделирования1 | 0Состояние выполнения моделирования, возвращенное как логическое 1 (true) или 0 (false).
Если isRunning является 1, моделирование выполняется.
Если isRunning является 0, моделирование остановлено.
Моделирование выполняется до тех пор, пока не будет выполнено хотя бы одно из следующих условий:
Время моделирования превышает время остановки моделирования. Чтобы указать время остановки, используйте StopTime имущество scenario.
Любой субъект или транспортное средство достигает конца своей заданной траектории. Назначенная траектория определяется самым последним вызовом функции траектории.
advance функция обновляет действующие лица и транспортные средства только в том случае, если им назначена траектория. Для обновления актёров и транспортных средств, не имеющих назначенных траекторий, можно задать Position, Velocity, Roll, Pitch, Yaw, или AngularVelocity свойства в любое время во время моделирования.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.