exponenta event banner

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]

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]

Достань границы дороги.

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. The axes 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. The axes contains 4 objects of type patch, line.

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

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

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

Получение границ дорог в координатах эго-транспортного средства с помощью roadBoundaries функция. Укажите средство ego в качестве входного аргумента.

rbEgo1 = roadBoundaries(ego);

Отображение результата на графике птичьего глаза.

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

Figure contains an axes. The axes 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. The axes 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 содержит для различных типов дорог.

Одиночная дорога - граница одной дорогиПерекресток - граница одной дороги

Круговой перекресток - две границы дорогFigure-8 - Три границы дорог

Представлен в R2017a