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"])

Создайте матрицу конечных состояний с боковыми отклонениями между-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

Задайте новое конечное состояние, чтобы сгенерировать новую траекторию. Эта траектория не желательна, потому что она требует противоположному движению достигнуть боковой скорости 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

Ослабьте ограничение на продольном состоянии путем определения длины дуги 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

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

свернуть все

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

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

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

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

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

свернуть все

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

  • Trajectoryn - 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 - 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