road

Адд-Роуд к ведущему сценарию или дорожной группе

Описание

Добавьте дороги к управлению сценарием

пример

road(scenario,roadcenters) добавляет дорога к ведущему сценарию, scenario. Вы задаете дорожную форму и ориентацию дороги в 2D плоскости при помощи набора дорожных центров, roadcenters, в дискретных точках. Когда вы задаете количество маршрутов на дороге, маршруты пронумерованы относительно дорожных центров. Для получения дополнительной информации смотрите, Чертят Направление Дороги и Нумерацию Маршрутов.

road(scenario,roadcenters,roadwidth) добавляет дорога с заданной шириной, roadwidth.

пример

road(scenario,roadcenters,roadwidth,bankingangle) добавляет дорога с заданной шириной и банковским углом, bankingangle.

пример

road(scenario,roadcenters,'Lanes',lspec) добавляет дорога с заданными маршрутами, lspec.

road(scenario,roadcenters,bankingangle,'Lanes',lspec) добавляет дорога с заданным банковским углом и маршрутами.

пример

road(___,'Heading',roadheadings) добавляет дорога с заданным углом рыскания roadheadings, использование любой из комбинаций входных аргументов от предыдущих синтаксисов.

road(___,'Name',name) задает имя дороги.

rd = road(___) возвращает Road возразите, что хранит свойства созданной дороги.

Добавьте дороги к дорожной группе

пример

road(rg,roadcenters) добавляет дорожный сегмент к дорожной группе, rg. Используйте дорожную группу, чтобы создать пересечение дорог или пересечение. Вы задаете форму и ориентацию дорожного сегмента в 2D плоскости при помощи набора дорожных центров, roadcenters, в дискретных точках. Когда вы задаете количество маршрутов на дорожном сегменте, маршруты пронумерованы относительно дорожных центров. Для получения дополнительной информации смотрите, Чертят Направление Дороги и Нумерацию Маршрутов.

пример

road(rg,roadcenters,roadwidth) добавляет дорожный сегмент с заданной шириной, roadwidth, дорожной группе.

road(rg,roadcenters,roadwidth,bankingangle) добавляет дорожный сегмент с заданной шириной и банковским углом, bankingangle, дорожной группе.

пример

road(rg,roadcenters,'Lanes',lspec) добавляет дорожный сегмент с заданными маршрутами, lspec, дорожной группе.

пример

road(rg,roadcenters,bankingangle,'Lanes',lspec) добавляет дорожный сегмент с заданным банковским углом и маршрутами дорожной группе.

пример

road(___,'Heading',roadheadings) добавляет дорожный сегмент с заданным углом рыскания roadheadings дорожной группе, с помощью любой из комбинаций входных аргументов от предыдущих синтаксисов.

пример

road(___,'Name',name) задает имя дорожного сегмента.

Примеры

свернуть все

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

Создайте ведущий сценарий, содержащий автомобиль и пешехода на прямой дороге. Затем создайте и отобразите маркировки маршрута дороги на видимом с большого расстояния графике.

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

scenario = drivingScenario;

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

lm = [laneMarking('Solid')
      laneMarking('Dashed','Length',2,'Space',4)
      laneMarking('Solid')];
l = lanespec(2,'Marking',lm);
road(scenario,[0 0 0; 25 0 0],'Lanes',l);

Добавьте в ведущий сценарий пешеходный переход дорога на уровне 1 метра в секунду и автомобиль после дороги на уровне 10 метров в секунду.

ped = actor(scenario,'ClassID',4,'Length',0.2,'Width',0.4,'Height',1.7);
car = vehicle(scenario,'ClassID',1);
smoothTrajectory(ped,[15 -3 0; 15 3 0],1);
smoothTrajectory(car,[car.RearOverhang 0 0; 25-car.Length+car.RearOverhang 0 0],10);

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

plot(scenario)

chasePlot(car)

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

  1. Создайте видимый с большого расстояния график.

  2. Создайте плоттер схемы, плоттер контура маршрута и плоттер маркировки маршрута для видимого с большого расстояния графика.

  3. Получите дорожные контуры и предназначайтесь для основ.

  4. Получите вершины маркировки маршрута и поверхности.

  5. Отобразите контуры маршрута и маркеры маршрута.

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

bep = birdsEyePlot('XLim',[-25 25],'YLim',[-10 10]);
olPlotter = outlinePlotter(bep);
lbPlotter = laneBoundaryPlotter(bep);
lmPlotter = laneMarkingPlotter(bep,'DisplayName','Lanes');
legend('off');
while advance(scenario)
    rb = roadBoundaries(car);
    [position,yaw,length,width,originOffset,color] = targetOutlines(car);
    [lmv,lmf] = laneMarkingVertices(car);
    plotLaneBoundary(lbPlotter,rb);
    plotLaneMarking(lmPlotter,lmv,lmf);
    plotOutline(olPlotter,position,yaw,length,width, ...
        'OriginOffset',originOffset,'Color',color);
end

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

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

scenario = drivingScenario;

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

% Add the first road
roadCenters = [-7 20; 0 0; 30 0; 30 -20; 10 -30];
roadHeadings = [-90; 0; NaN; NaN; -90];
laneMark = laneMarking('Solid');
laneSpecification = lanespec(2,Marking=laneMark);
road(scenario,roadCenters,'Lanes',laneSpecification, ...
    'Heading',roadHeadings,'Name','Road 1');

%Add the second road
roadCenters = [10 -30; 30 -40; 30 -60; 0 -60; -7 -80];
roadHeadings = [-90; NaN; NaN; 180; -90];
laneMark = laneMarking('Dashed');
laneSpecification = lanespec(2,Marking=laneMark);
road(scenario,roadCenters,'Lanes',laneSpecification, ...
    'Heading',roadHeadings,'Name','Road 2');

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

plot(scenario,'RoadCenters','on')

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

Пересечением с тремя путями является Y-соединение, в котором две соседних дороги пересекают третью дорогу под тупым углом, как показано в этом рисунке. Чтобы соединить эти три дороги, вы создадите Y-соединение путем добавления трех дорожных сегментов.

Добавьте три дороги к управлению сценарием

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

scenario = drivingScenario;

Задайте количество маршрутов и ширину каждого маршрута на дорогах.

ls = lanespec(2,'Width',5);

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

% Add the first road
roadCenters = [-20 0; 6 0];
road(scenario,roadCenters,'Name','Road 1','Lanes',ls);

% Add the second road
roadCenters = [23 7; 50 33];
road(scenario,roadCenters,'Name','Road 2','Lanes',ls);

% Add the third road
roadCenters = [23 -7; 50 -33];
road(scenario,roadCenters,'Name','Road 3','Lanes',ls);

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

figure
plot(scenario)

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

Создайте Y-соединение, чтобы соединить дороги

Создайте RoadGroup объект. Задайте ширину для каждого дорожного сегмента, который формирует Y-соединение.

rg = driving.scenario.RoadGroup('Name','Y-Junction');
roadWidth = 10;

Задайте дорожные центры трех дорожных сегментов и добавьте эти дорожные сегменты в RoadGroup объект при помощи road функция. Эти дорожные сегменты пересекаются друг с другом.

% Add the first road segment
roadCenters = [23 7; 14 1; 6 0];
road(rg,roadCenters,roadWidth,'Name','Segment 1');

% Add the second road segment
roadCenters = [23 -7; 14 -1; 6 0];
road(rg,roadCenters,roadWidth,'Name','Segment 2');

% Add the third road segment
roadCenters = [23 7; 21 4; 21 -4; 23 -7];
road(rg,roadCenters,roadWidth,'Name','Segment 3');

Добавьте Y-соединение в управление сценарием

Добавьте дорожные сегменты, сохраненные в RoadGroup возразите против ведущего сценария при помощи roadGroup функция. Дорожные сегменты формируют Y-соединение, которое соединяет эти три дороги в ведущем сценарии.

roadGroup(scenario,rg);

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

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

Добавьте три дороги к управлению сценарием

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

scenario = drivingScenario;

Задайте количество маршрутов и ширину каждого маршрута на дорогах.

ls = lanespec(2,'Width',5);

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

% Add the first road
roadCenters = [70 30; 30 30];
road(scenario,roadCenters,'Name','Road 1','Lanes',ls);

% Add the second road
roadCenters = [0 0; -40 0];
road(scenario,roadCenters,'Name','Road 2','Lanes',ls);

% Add the third road
roadCenters = [15 -20; 15 -60];
road(scenario,roadCenters,'Name','Road 3','Lanes',ls);

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

plot(scenario)

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

Создайте соединение, чтобы соединить дороги

Создайте RoadGroup объект. Задайте ширину каждого дорожного сегмента, который формирует соединение.

rg = driving.scenario.RoadGroup('Name','Junction');
roadWidth = 10;

Задайте дорожные центры двух дорожных сегментов и задайте углы рыскания для первого дорожного сегмента. Добавьте эти дорожные сегменты в RoadGroup объект при помощи road функция. Эти дорожные сегменты пересекают друг друга.

%Add the first road segment and specify its heading angles
roadCenters = [31 30; 15 20; 15 -21];
roadHeadings = [180; -90; -90];
road(rg,roadCenters,roadWidth, ...
    'Name','Segment 1','Heading',roadHeadings);
 
% Add the second road segment
roadCenters = [15 0; -1 0];
road(rg,roadCenters,roadWidth, ...
    'Name','Segment 2');

Добавьте соединение в управление сценарием

Добавьте дорожные сегменты, сохраненные в RoadGroup возразите против ведущего сценария при помощи roadGroup функция. Дорожные сегменты формируют соединение, которое соединяет эти три дороги в ведущем сценарии.

roadGroup(scenario,rg);

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

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

свернуть все

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

Дорожная группа, которая задает пересечение дорог или пересечение в виде RoadGroup объект.

Дорожные центры раньше задавали дорогу в виде N с действительным знаком-by-2 или N-by-3 матрица. Дорожные центры определяют центральную линию дороги в дискретных точках.

  • Если roadcenters N-by-2 матрица, затем каждая строка матрицы представляет (x, y) координаты дорожного центра. z - координата каждого дорожного центра является нулем.

  • Если roadcenters N-by-3 матрица, затем каждая строка матрицы представляет (x, y, z) координаты дорожного центра.

Если первая строка матрицы совпадает с последней строкой, дорога является циклом. Величины в метрах.

Типы данных: double

Ширина дороги в виде положительного действительного скаляра. Ширина является постоянной вдоль целой дороги. Величины в метрах.

Задавать bankingangle введите, но не roadwidth, задайте roadwidth как пустой аргумент, [].

Если вы задаете roadwidth, затем вы не можете задать lspec входной параметр.

Типы данных: double

Банковский угол дороги в виде N с действительным знаком-by-1 вектор. N является количеством дорожных центров. banking angle является креном дороги вдоль направления дороги. Модули в градусах.

Спецификация маршрута в виде lanespec или compositeLaneSpec объект. Используйте lanespec объект создать дорогу с однополосной спецификацией. Можно задать количество маршрутов, ширину каждого маршрута и тип маркировок маршрута с помощью lanespec объект. Задавать маркировки маршрута в lanespec, используйте laneMarking функция.

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

Если вы задаете lspec, затем вы не можете задать roadwidth входной параметр.

Пример: 'Lanes',lanespec(3) задает трехполосную дорогу с ширинами маршрута по умолчанию и маркировками маршрута.

Имя дороги в виде вектора символов или строкового скаляра.

Пример: 'Name','Road1'

Пример: "Name","Road1"

Типы данных: char | string

Угол рыскания дороги в виде N с действительным знаком-by-1 вектор из углов в области значений [–180, 180]. N является количеством дорожных центров. Модули в градусах.

Углы рыскания ограничивают связанные дорожные центры. Чтобы постараться не ограничивать дорожные центральные точки, необходимо указать соответствующие элементы roadheadings как NaN. road функция автоматически определяет углы рыскания для неограниченных дорожных центров. Для получения дополнительной информации смотрите Угол рыскания.

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

свернуть все

Аутпут-Роуд, возвращенная как Road объект, которому описали свойства в этой таблице. За исключением RoadID, то, которое является сгенерированным сценарием свойством, имена свойства соответствуют входным параметрам, раньше создавало дорогу. Все свойства только для чтения.

СвойствоЗначение
Name

Имя дороги в виде строкового скаляра

name входной параметр устанавливает это свойство. Даже если вы задаете name как вектор символов, Name значение свойства является строковым скаляром.

RoadID

Идентификатор дороги в виде положительного целого числа

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

RoadCenters

Дорожные центры раньше задавали дорогу в виде N с действительным знаком-by-2 или N-by-3 матрица, где N является количеством дорожных центров

roadcenters входной параметр устанавливает это свойство.

RoadWidth

Ширина дороги в виде положительного действительного скаляра

roadwidth входной параметр устанавливает это свойство.

BankAngle

Банковский угол дороги в виде N-by-1 вектор с действительным знаком, где N является количеством дорожных центров на дороге

bankingangle входной параметр устанавливает это свойство.

Heading

Угол рыскания дороги в виде N-by-1 вектор с действительным знаком, где N является количеством дорожных центров на дороге

roadheadings входной параметр устанавливает это свойство.

Больше о

свернуть все

Чертите направление дороги и нумерацию маршрутов

Создать дорогу при помощи road функционируйте, задайте дорожные центры как матричный вход. Функция создает направленную линию, которая пересекает дорожные центры, начинающие с координат в первой строке матрицы и заканчивающиеся в координатах в последней строке матрицы. Координаты в первых двух строках матрицы задают draw direction дороги. Эти координаты соответствуют первым двум последовательным дорожным центрам. Направление ничьей является направлением, в котором дороги представляют в графике сценария.

Чтобы создать дорогу при помощи приложения Driving Scenario Designer, можно или задать параметр Road Centers или в интерактивном режиме привлечь Scenario Canvas. Для подробного примера смотрите, Создают Ведущий Сценарий. В этом случае направление ничьей является направлением, в котором дороги представляют в Scenario Canvas.

  • Для дороги с направлением ничьей от начала до конца различие между x - координаты первых двух последовательных дорожных центров положительно.

  • Поскольку дорога с нижней частью к верхней части чертит направление, различие между x - координаты первых двух последовательных дорожных центров отрицательны.

Road with top-to-bottom draw direction

Road with bottom-to-top draw direction

  • Для дороги со слева направо чертят направление, различие между y - координаты первых двух последовательных дорожных центров положительны.

  • Для дороги со справа налево чертят направление, различие между y - координаты первых двух последовательных дорожных центров отрицательны.

Road with left-to-right draw direction

Road with right-to-left draw direction

Нумерация маршрутов

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

Например, эти схемы показывают, как маршруты пронумерованы на односторонней и двухсторонней дороге с направлением ничьей сверху донизу.

Нумерация маршрутов на Он-Вей-РоудНумерация маршрутов на Туо-Вей-Роуд

Задайте количество маршрутов как положительное целое число для односторонней дороги. Если вы устанавливаете целочисленное значение как 3, затем дорога имеет три маршрута, которые перемещаются в том же направлении. Маршруты пронумерованы, начав с левого края дороги.

1, 2, 3 обозначает первые, вторые, и третьи маршруты дороги, соответственно.

Lane numbers in one-way road

Задайте количество маршрутов как двухэлементный вектор из положительного целого числа для двухсторонней дороги. Если вы устанавливаете вектор как [12 ], затем дорога имеет три маршрута: два маршрута, перемещающиеся в одном направлении и одной полосе, перемещающейся в противоположном направлении. Из-за направления ничьей дорога имеет то, оставленное маршрут и два правильных маршрута. Маршруты пронумерованы, начав с левого края дороги.

1L обозначает единственный левый маршрут дороги. 1R и 2R обозначают первые и вторые правильные маршруты дороги, соответственно.

Lane numbers in two-way road

Технические требования маршрута применяются согласно порядку, в котором пронумерованы маршруты.

Угол рыскания

Угол рыскания относится к углу дороги в данную дорожную центральную точку, направляющуюся к следующему дорожному центру, измеренному против часовой стрелки относительно x - ось в области значений [–180, 180] степени.

road heading angles

При определении углов рыскания, когда ограничение к дорожным центральным точкам включает точное управление формой и ориентацию дорог.

Например, создайте дорогу путем определения ее дорожных центров. Постройте дорогу

scenario = drivingScenario;
roadCenters = [0 35; 0 18; 15 10; 32 3; 32 -12];
roadHeadings = [NaN; NaN; 0; NaN; NaN];
road(scenario,roadCenters,'Heading',roadHeadings);
plot(scenario,'Centerline','on','RoadCenters','on')

Этот рисунок показывает дорогу с одним ограниченным дорожным углом рыскания и его соответствующим дорожным центром, заданным в этом примере. Другие дорожные центры неограничены, и их углы рыскания определяются автоматически road функция.

road heading angle example unconstrained

Теперь задайте углы рыскания для каждой из дорожных центральных точек на дороге. Постройте новую дорогу.

scenario = drivingScenario;
roadCenters = [0 35; 0 18; 15 10; 32 3; 32 -12];
roadHeadings = [-90; -90; 0; -90; -90];
road(scenario,roadCenters,'Heading',roadHeadings);
plot(scenario,'Centerline','on','RoadCenters','on')

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

road heading angle example

Алгоритмы

road функция создает дорогу для агента, чтобы следовать в ведущем сценарии. Вы задаете дорогу с помощью N двумерный или 3D waypoints. Каждый из сегментов N - 1 между waypoints задает кривую, искривление которой варьируется линейно с расстоянием вдоль сегмента. Функция соответствует кусочной кривой clothoid к (x, y) координаты waypoints путем соответствия с искривлением с обеих сторон waypoint. Для незакрытой кривой искривление в первом и последнем waypoint является нулем. Если первые и последние waypoints совпадают, то искривления до и после конечных точек являются соответствующими. z - координаты дороги интерполированы с помощью сохраняющей форму кусочной кубической кривой.

Введенный в R2017a