connect

Соедините начальную букву и терминал состояния Frenet

Описание

frenetTrajectory = connect(connectorFrenet,initialState,terminalState,timeSpan) соединяет заданные начальные состояния Frenet с заданными конечными состояниями по промежутку времени в секундах. Эта объектная функция поддерживает 1 к n, n-to-1, или n-to-n попарные связи траектории.

пример

[___,globalTrajectory] = connect(___) возвращает траектории в глобальных координатах в дополнение ко всем аргументам в предыдущем синтаксисе.

Примеры

свернуть все

Сгенерируйте альтернативные траектории для ссылочного использования пути координаты Frenet. Задайте различную начальную букву и конечные состояния для ваших траекторий. Настройте свои состояния на основе сгенерированных траекторий.

Сгенерируйте ссылочный путь от набора waypoints. Создайте trajectoryGeneratorFrenet объект от ссылочного пути.

waypoints = [0 0; ...
	50 20; ...
	100 0; ...
	150 10];
refPath = referencePathFrenet(waypoints);
connector = trajectoryGeneratorFrenet(refPath);

Сгенерируйте пять вторых траекторий между источником пути и точкой 30 m вниз путь, как Frenet утверждает.

initState = [0 0 0 0 0 0];  % [S ds ddS L dL ddL]
termState = [30 0 0 0 0 0]; % [S ds ddS L dL ddL]
[~,trajGlobal] = connect(connector,initState,termState,5);

Отобразите траекторию в глобальных координатах.

show(refPath);
hold on
axis equal
plot(trajGlobal.Trajectory(:,1),trajGlobal.Trajectory(:,2),'b')
legend(["Waypoints","Reference Path","Trajectory to 30m"])

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Waypoints, Reference Path, Trajectory to 30m.

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

termStateDeviated = termState + ([-3:3]' * [0 0 0 1 0 0]);
[~,trajGlobal] = connect(connector,initState,termStateDeviated,5);

clf
show(refPath);
hold on
axis equal
for i = 1:length(trajGlobal)
    plot(trajGlobal(i).Trajectory(:,1),trajGlobal(i).Trajectory(:,2),'g')
end
legend(["Waypoints","Reference Path","Alternative Trajectories"])
hold off

Figure contains an axes. The axes contains 9 objects of type line. These objects represent Waypoints, Reference Path, Alternative Trajectories.

Задайте новое конечное состояние, чтобы сгенерировать новую траекторию. Эта траектория не желательна, потому что она требует противоположному движению достигнуть поперечной скорости 10 м/с.

newTermState = [5 10 0 5 0 0];
[~,newTrajGlobal] = connect(connector,initState,newTermState,3);

clf
show(refPath);
hold on
axis equal
plot(newTrajGlobal.Trajectory(:,1),newTrajGlobal.Trajectory(:,2),'b');
legend(["Waypoint","Reference Path","New Trajectory"])
hold off

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Waypoint, Reference Path, New Trajectory.

Ослабьте ограничение на продольном состоянии путем определения длины дуги NaN. Сгенерируйте и отобразите траекторию снова. Новое положение показывает хорошую альтернативную траекторию, которая отклоняется от ссылочного пути.

relaxedTermState = [NaN 10 0 5 0 0];
[~,trajGlobalRelaxed] = connect(connector,initState,relaxedTermState,3);

clf
show(refPath);
hold on
axis equal
plot(trajGlobalRelaxed.Trajectory(:,1),trajGlobalRelaxed.Trajectory(:,2),'g');
hold off

Figure contains an axes. The axes contains 3 objects of type line.

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

свернуть все

Генератор траектории Frenet в виде trajectoryGeneratorFrenet объект.

Начальный Frenet утверждает в виде n-by-6 числовую матрицу. Каждая строка матрицы является набором координат Frenet для начального состояния траектории в форме [S dS ddS L dL ddL]. Значение n должно быть равно количеству строк в terminalState аргумент или 1.

Итоговый Frenet утверждает в виде n-by-6 числовую матрицу. Каждая строка матрицы является набором координат Frenet для начального состояния траектории в форме [S dS ddS L dL ddL]. Значение n должно быть равно количеству строк в initialState аргумент или 1.

Период времени для всех траекторий в виде положительной скалярной величины в секундах. Сгенерированные траектории производятся равномерно через этот отрезок времени на основе свойства TimeResolution trajectoryGeneratorFrenet объект задан в connectorFrenet аргумент.

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

свернуть все

Траектории Frenet между всеми начальными и конечными состояниями, возвращенными как массив структур с этими полями:

  • Trajectoryn-by-6 числовая матрица. Каждая строка матрицы является набором координат Frenet для начального состояния траектории в форме [S dS ddS L dL ddL].

  • Time — Вектор из положительных скалярных величин от 0 к timeSpan в секундах.

Depiction of Frenet states relative to a reference path

Эта функция поддерживает 1 к n, n-to-1, или n-to-n попарные связи траектории на основе количества строк initialState и terminalState.

Глобальные траектории между всеми начальными и конечными состояниями, возвращенными как структура или массив структур с полями:

  • Trajectoryn-by-6 числовая матрица. Каждая строка матрицы является набором глобальной переменной, насыщает формы [x y theta kappa dkappa s].

  • Time — Вектор из положительных скалярных величин от 0 к timeSpan в секундах.

Depiction of global Frenet coordinates

Эта функция поддерживает 1 к n, n-to-1, или n-to-n попарные связи траектории на основе количества строк initialState и terminalState.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2020b