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.

trajectoryGeneratorFrenet

Encuentre la trayectoria óptima a lo largo de la ruta de referencia

Descripción

El objeto trajectoryGeneratorFrenet genera trayectorias alternativas utilizando polinomios de cuarto o quinto orden relativos a una ruta de referencia determinada. Cada trayectoria define un movimiento entre estados de Frenet durante un período de tiempo específico.

Los estados de Frenet describen su posición, velocidad y aceleración en relación con una ruta de referencia estática, especificada como un objeto referencePathFrenet.

El objeto expresa los estados de Frenet como un vector con la forma [S dS ddS L dL ddL], donde S es la longitud del arco y L es la desviación perpendicular de la dirección de la ruta de referencia. Las derivadas de S son relativas al tiempo. Las derivadas de L son relativas a la longitud del arco, S.

Depiction of Frenet states relative to a reference path

Para generar trayectorias alternativas, especifique los estados de Frenet inicial y terminal con un lapso de tiempo determinado para la función del objeto connect.

Creación

Descripción

connectorFrenet = trajectoryGeneratorFrenet(refPath) genera trayectorias entre estados iniciales y terminales en relación con una ruta de referencia refPath especificada como un objeto referencePathFrenet. El argumento de entrada refPath establece la propiedad ReferencePath.

ejemplo

connectorFrenet = trajectoryGeneratorFrenet(refPath,'TimeResolution',timeValue) especifica el intervalo de tiempo para la discretización. El argumento timeValue establece la propiedad TimeResolution.

Propiedades

expandir todo

Intervalo de tiempo de discretización entre estados de Frenet muestreados, especificado como un escalar positivo en segundos. Al utilizar la función de objeto connect, esta propiedad determina la resolución del campo Times de las estructuras de trayectoria generadas, frenetTrajectory y globalTrajectory.

Tipos de datos: double

Ruta de referencia en coordenadas Frenet, especificada como un objeto referencePathFrenet.

Funciones del objeto

connectConectar los estados inicial y terminal de Frenet
createParallelStateCrear estados usando Frenet y parámetros globales.

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

Referencias

[1] Werling, Moritz, Julius Ziegler, Sören Kammel, and Sebastian Thrun. "Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame." 2010 IEEE International Conference on Robotics and Automation. 2010, pp. 987–993.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2020b