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

Вызовите функцию advance в цикле, чтобы усовершенствовать симуляцию один временной шаг за один раз. Приостановите каждые 0,01 секунды, чтобы наблюдать движение автомобиля на графике.
while advance(sc) pause(0.01) end

Создайте ведущий сценарий и покажите, как целевые основы изменяются, когда симуляция совершенствуется.
Создайте ведущий сценарий, состоящий из двух пересекающихся прямых дорог. Первый дорожный сегмент 45 метров длиной. Вторая дорога подряд 32 метра длиной и пересекает первую дорогу. Автомобиль, перемещающийся на уровне 12,0 метров в секунду вдоль первой дороги, приближается к рабочему пешеходному переходу пересечение на уровне 2,0 метров в секунду.
sc = drivingScenario('SampleTime',0.1,'StopTime',1); road(sc,[-10 0 0; 45 -20 0]); road(sc,[-10 -10 0; 35 10 0]); ped = actor(sc,'Length',0.4,'Width',0.6,'Height',1.7); car = vehicle(sc); pedspeed = 2.0; carspeed = 12.0; trajectory(ped,[15 -3 0; 15 3 0],pedspeed); trajectory(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(sc) rb = roadBoundaries(car); [position,yaw,length,width,originOffset,color] = targetOutlines(car); plotLaneBoundary(laneplotter,rb) plotOutline(outlineplotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color) pause(0.01) end


Моделируйте ведущий сценарий с одним автомобилем, перемещающимся на S-кривой. Создайте и постройте контуры маршрута.
Создайте ведущий сценарий с одной дорогой, имеющей S-кривую.
sc = 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(sc,roadcenters,'Lanes',ls);
Добавьте автомобиль, оборудованный датчиком и задайте его траекторию от его скорости и waypoints. Автомобиль перемещается на уровне 30 метров в секунду.
car = vehicle(sc, ... '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(sc)

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(sc) 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



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