chasePlot

Эгоцентрический проективный перспективный график

Синтаксис

chasePlot(ac)
chasePlot(ac,Name,Value)

Описание

пример

chasePlot(ac) строит ведущий сценарий с точки зрения агента ac. Этот график называется chase plot и имеет эгоцентрическую проективную перспективу, где представление сразу расположено позади агента.

пример

chasePlot(ac,Name,Value) задает опции с помощью одной или нескольких пар "имя-значение". Например, можно отобразить дорожные центры и агента waypoints на графике.

Примеры

свернуть все

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

Запустите цикл симуляции.

  1. Инициализируйте видимый с большого расстояния график и создайте плоттер схемы, лево-маршрут и плоттеры контура правильного маршрута и дорожный граничный плоттер.

  2. Получите дорожные контуры и прямоугольные контуры.

  3. Получите контуры маршрута налево и право на автомобиль.

  4. Усовершенствуйте симуляцию и обновите плоттеры.

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

Создайте ведущий сценарий и покажите, как целевые основы изменяются, когда симуляция совершенствуется.

Создайте ведущий сценарий, состоящий из двух пересекающихся прямых дорог. Первый дорожный сегмент 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

Входные параметры

свернуть все

Агент, принадлежащий объекту drivingScenario, заданному как объект Actor или Vehicle. Чтобы создать эти объекты, используйте actor и функции vehicle, соответственно.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: chasePlot(ac,'Centerline','on','RoadCenters,'on') отображает центральную линию и дорожные центры каждого дорожного сегмента.

Оси, в которых можно построить график, заданный как пара, разделенная запятой, состоящая из 'Parent' и объекта Axes. Если вы не задаете Parent, новая фигура создается.

Отобразите центральную линию дорог, заданных как пара, разделенная запятой, состоящая из 'Centerline' и 'off' или 'on'. Центральная линия следует за серединой каждого дорожного сегмента. Центральные линии прерывисты через области, такие как пересечения или дорожные разделения.

Отобразите дорожные центры, заданные как пара, разделенная запятой, состоящая из 'RoadCenters' и 'off' или 'on'. Дорожные центры задают дороги, показанные в графике.

Отобразите агента waypoints, заданный как пара, разделенная запятой, состоящая из 'Waypoints' и 'off' или 'on'. Waypoints задают траекторию агента.

Высота точки зрения графика, заданной как пара, разделенная запятой, состоящая из 'ViewHeight' и положительного действительного скаляра. Высота относительно нижней части агента. Модули исчисляются в метрах.

Местоположение точки зрения графика, заданной как пара, разделенная запятой, состоящая из 'ViewLocation' и [x, y] вектор с действительным знаком. Местоположение относительно центра кубоида в системе координат агента. Местоположение по умолчанию точки зрения находится позади центра кубоида, [2.5*actor.Length 0]. Модули исчисляются в метрах.

Ориентация угла вращения точки зрения графика, заданной как пара, разделенная запятой, состоящая из 'ViewRoll' и действительного скаляра. Модули в градусах.

Передайте угловую ориентацию точки зрения графика, заданной как пара, разделенная запятой, состоящая из 'ViewPitch' и действительного скаляра. Модули в градусах.

Угловая ориентация отклонения от курса точки зрения графика, заданной как пара, разделенная запятой, состоящая из 'ViewYaw' и действительного скаляра. Модули в градусах.

Смотрите также

Объекты

Функции

Введенный в R2017a