chasePlot

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Добавьте автомобиль, оборудованный датчиком и задайте его траекторию от его скорости и waypoints. Автомобиль перемещается на уровне 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];
speed = 30;
trajectory(car,waypoints,speed);

Постройте сценарий и соответствующий график преследования.

plot(scenario)

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(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);
road(scenario,[-10 0 0; 45 -20 0]);
road(scenario,[-10 -10 0; 35 10 0]);
ped = actor(scenario,'Length',0.4,'Width',0.6,'Height',1.7);
car = vehicle(scenario);
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(scenario)
    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 имя аргумента и 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