roadBoundaries

Получите дорожные контуры

Описание

пример

rbdry = roadBoundaries(scenario) возвращает дорожные контуры, rbdry, из ведущего сценария, scenario.

rbdry = roadBoundaries(ac) возвращает дорожные контуры что агент, ac, следует в ведущем сценарии.

Примеры

свернуть все

Создайте ведущий сценарий, содержащий кривую дорогу, две дороги подряд и двух агентов: автомобиль и велосипед. Оба агента проходят дорога в течение 60 секунд.

Создайте ведущий объект сценария.

scenario = drivingScenario('SampleTime',0.1','StopTime',60);

Создайте кривую дорогу с помощью дорожных центральных точек после дуги круга с 800-метровым радиусом. Дуга запускается на уровне 0 °, заканчивается на уровне 90 ° и производится в шаге на 5 °.

angs = [0:5:90]';
R = 800;
roadcenters = R*[cosd(angs) sind(angs) zeros(size(angs))];
roadwidth = 10;
road(scenario,roadcenters,roadwidth);

Добавьте две дороги подряд с шириной по умолчанию, с помощью дорожных центральных точек в каждом конце.

roadcenters = [700 0 0; 100 0 0];
road(scenario,roadcenters)
ans = 
  Road with properties:

           Name: ""
         RoadID: 2
    RoadCenters: [2x3 double]
      RoadWidth: 6
      BankAngle: [2x1 double]
        Heading: [2x1 double]

roadcenters = [400 400 0; 0 0 0];
road(scenario,roadcenters)
ans = 
  Road with properties:

           Name: ""
         RoadID: 3
    RoadCenters: [2x3 double]
      RoadWidth: 6
      BankAngle: [2x1 double]
        Heading: [2x1 double]

Получите дорожные контуры.

rbdry = roadBoundaries(scenario);

Добавьте автомобиль и велосипед к сценарию. Расположите автомобиль в начале первой дороги подряд.

car = vehicle(scenario,'ClassID',1,'Position',[700 0 0], ...
    'Length',3,'Width',2,'Height',1.6);

Расположите велосипед дальше в будущем.

bicycle = actor(scenario,'ClassID',3,'Position',[706 376 0]', ...
    'Length',2,'Width',0.45,'Height',1.5);

Постройте сценарий.

plot(scenario,'Centerline','on','RoadCenters','on');
title('Scenario');

Figure contains an axes object. The axes object with title Scenario contains 1219 objects of type patch, line.

Отобразите положения агента и профили.

poses = actorPoses(scenario)
poses=2×1 struct array with fields:
    ActorID
    Position
    Velocity
    Roll
    Pitch
    Yaw
    AngularVelocity

profiles = actorProfiles(scenario)
profiles=2×1 struct array with fields:
    ActorID
    ClassID
    Length
    Width
    Height
    OriginOffset
    MeshVertices
    MeshFaces
    RCSPattern
    RCSAzimuthAngles
    RCSElevationAngles

Создайте ведущий сценарий, содержащий дорогу фигуры 8, заданную в мировых координатах сценария. Преобразуйте мировые координаты сценария к системе координат автомобиля, оборудованного датчиком.

Создайте пустой ведущий сценарий.

scenario = drivingScenario;

Добавьте дорогу фигуры 8 к сценарию. Отобразите сценарий.

roadCenters = [0  0  1
             20 -20  1
             20  20  1
            -20 -20  1
            -20  20  1
              0   0  1];

roadWidth = 3;
bankAngle = [0 15 15 -15 -15 0];
road(scenario,roadCenters,roadWidth,bankAngle);
plot(scenario)

Figure contains an axes object. The axes object contains 4 objects of type patch, line.

Добавьте автомобиль, оборудованный датчиком в сценарий. Расположите транспортное средство в мировых координатах (20, –20) и ориентируйте его под –15 углами рыскания степени.

ego = actor(scenario,'ClassID',1,'Position',[20 -20 0],'Yaw',-15);

Figure contains an axes object. The axes object contains 5 objects of type patch, line.

Получите дорожные контуры в координатах автомобиля, оборудованного датчиком при помощи roadBoundaries функция. Задайте автомобиль, оборудованный датчиком как входной параметр.

rbEgo1 = roadBoundaries(ego);

Отобразите результат на видимом с большого расстояния графике.

bep = birdsEyePlot;
lbp = laneBoundaryPlotter(bep,'DisplayName','Road');
plotLaneBoundary(lbp,rbEgo1)

Figure contains an axes object. The axes object contains an object of type line. This object represents Road.

Получите дорожные контуры в мировых координатах при помощи roadBoundaries функция. Задайте сценарий как входной параметр.

rbScenario = roadBoundaries(scenario);

Получите дорожные контуры в координатах автомобиля, оборудованного датчиком при помощи driving.scenario.roadBoundariesToEgo функция.

rbEgo2 = driving.scenario.roadBoundariesToEgo(rbScenario,ego);

Отобразите дорожные контуры на видимом с большого расстояния графике.

bep = birdsEyePlot;
lbp = laneBoundaryPlotter(bep,'DisplayName','Road boundaries');
plotLaneBoundary(lbp,{rbEgo2})

Figure contains an axes object. The axes object contains an object of type line. This object represents Road boundaries.

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

свернуть все

Ведущий сценарий в виде drivingScenario объект.

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

Выходные аргументы

свернуть все

Дорожные контуры, возвращенные как массив ячеек. Каждая ячейка в массиве ячеек содержит N с действительным знаком-by-3 матрица, представляющая дорожный контур в сценарии, где N является количеством дорожных контуров. Каждая строка матрицы соответствует (x, y, z) координаты дорожной граничной вершины.

Когда входной параметр является ведущим сценарием, дорожные координаты относительно мировых координат ведущего сценария. Когда входной параметр является агентом, дорожные координаты относительно системы координат агента.

Рисунки показывают количество дорожных контуров что rbdry содержит для различных дорожных типов.

Сингл-Роуд — Один дорожный контурПересечение — Один дорожный контур

Кольцо — Туо-Роуд БундэрисРисунок 8 — Три-Роуд Бундэрис

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

Объекты

Функции

Введенный в R2017a