Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

connect

Conectar los estados inicial y terminal de Frenet

Descripción

frenetTrajectory = connect(connectorFrenet,initialState,terminalState,timeSpan) conecta los estados iniciales de Frenet especificados con los estados terminales especificados durante un lapso de tiempo en segundos. Esta función de objeto admite conexiones de trayectorias por pares de 1 a n, n a 1 o n a n.

[___,globalTrajectory] = connect(___) devuelve las trayectorias en coordenadas globales además de todos los argumentos en la sintaxis anterior.

ejemplo

Ejemplos

contraer todo

Generar trayectorias alternativas para una ruta de referencia utilizando coordenadas de Frenet. Especifique diferentes estados iniciales y terminales para sus trayectorias. Ajusta tus estados en función de las trayectorias generadas.

Genere una ruta de referencia a partir de un conjunto de puntos de referencia. Crea un objeto trajectoryGeneratorFrenet a partir de la ruta de referencia.

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

Genere una trayectoria de cinco segundos entre el origen de la ruta y un punto a 30 m de la ruta como afirma 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);

Muestra la trayectoria en coordenadas globales.

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 object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Waypoints, Reference Path, Trajectory to 30m.

Cree una matriz de estados terminales con desviaciones laterales entre –3 my 3 m. Genera trayectorias que cubren la misma longitud de arco en 10 segundos, pero se desvían lateralmente de la ruta de referencia. Muestra las nuevas rutas alternativas.

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

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 object. The axes object contains 9 objects of type line. One or more of the lines displays its values using only markers These objects represent Waypoints, Reference Path, Alternative Trajectories.

Especifique un nuevo estado terminal para generar una nueva trayectoria. Esta trayectoria no es deseable porque requiere un movimiento inverso para alcanzar una velocidad longitudinal de 10 m/s.

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 object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Waypoint, Reference Path, New Trajectory.

Relaje la restricción en el estado longitudinal especificando una longitud de arco de NaN. Genera y muestra la trayectoria nuevamente. La nueva posición muestra una buena trayectoria alternativa que se desvía de la trayectoria de referencia.

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 object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers

Argumentos de entrada

contraer todo

Generador de trayectoria Frenet, especificado como un objeto trajectoryGeneratorFrenet.

Estados iniciales de Frenet, especificados como una matriz numérica de n por 6. Cada fila de la matriz es un conjunto de coordenadas de Frenet para el estado inicial de una trayectoria en la forma [S dS ddS L dL ddL]. El valor de n debe ser igual al número de filas en el argumento terminalState o 1.

Estados finales de Frenet, especificados como una matriz numérica de n por 6. Cada fila de la matriz es un conjunto de coordenadas de Frenet para el estado inicial de una trayectoria en la forma [S dS ddS L dL ddL]. El valor de n debe ser igual al número de filas en el argumento initialState o 1.

Horizonte temporal para todas las trayectorias, especificado como escalar positivo en segundos. Las trayectorias generadas se muestrean de manera uniforme a lo largo de este lapso de tiempo según la propiedad TimeResolution del objeto trajectoryGeneratorFrenet especificado en el argumento connectorFrenet.

Argumentos de salida

contraer todo

Trayectorias de Frenet entre todos los estados inicial y final, devueltas como un arreglo de estructura con estos campos:

  • Trajectory — matriz numérica n por 6. Cada fila de la matriz es un conjunto de coordenadas de Frenet para el estado inicial de una trayectoria en la forma [S dS ddS L dL ddL].

  • Time — Vector de escalares positivos de 0 a timeSpan en segundos.

Depiction of Frenet states relative to a reference path

Esta función admite conexiones de trayectorias por pares de 1 a n, n a 1 o n a n según la cantidad de filas de initialState y terminalState.

Trayectorias globales entre todos los estados inicial y final, devueltas como estructura o arreglo de estructura con campos:

  • Trajectory — matriz numérica n por 6. Cada fila de la matriz es un conjunto de estados globales con la forma [x y theta kappa v a].

  • Time — Vector de escalares positivos de 0 a timeSpan en segundos.

Depiction of global Frenet coordinates

Esta función admite conexiones de trayectorias por pares de 1 a n, n a 1 o n a n según la cantidad de filas de initialState y terminalState.

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2020b