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.

frenet2global

Convertir estados de Frenet en estados globales

Descripción

globalState = frenet2global(refPath,frenetState) convierte los estados de la trayectoria de Frenet en estados globales.

ejemplo

globalState = frenet2global(refPath,frenetState,latTimeDerivatives) acepta latTimeDerivatives que contiene derivadas de primer y segundo orden de la desviación lateral con respecto al tiempo y un indicador que indica si el rumbo debe invertirse durante la conversión a coordenadas globales.

Ejemplos

contraer todo

Genere una ruta de referencia a partir de un conjunto de puntos de referencia.

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

Crea un objeto trajectoryGeneratorFrenet a partir de la ruta de referencia.

connector = trajectoryGeneratorFrenet(refPath);

Genera una trayectoria de cinco segundos entre el origen de la ruta y un punto a 30 metros de la ruta como afirma Frenet.

initCartState = refPath.SegmentParameters(1,:);
initFrenetState = global2frenet(refPath,initCartState);
termFrenetState = initFrenetState + [30 zeros(1,5)];
frenetTraj = connect(connector,initFrenetState,termFrenetState,5);

Convierta la trayectoria a los estados globales.

globalTraj = frenet2global(refPath,frenetTraj.Trajectory);

Muestra la ruta de referencia y la trayectoria.

show(refPath);
axis equal
hold on
plot(globalTraj(:,1),globalTraj(:,2),'b')

Especifique puntos globales y busque los puntos más cercanos en la ruta de referencia.

globalPoints = waypoints(2:end,:) + [20 -50];
nearestPathPoint = closestPoint(refPath,globalPoints);

Muestra los puntos globales y los puntos más cercanos en la ruta de referencia.

plot(globalPoints(:,1),globalPoints(:,2),'r*','MarkerSize',10)
plot(nearestPathPoint(:,1),nearestPathPoint(:,2),'b*','MarkerSize',10)

Interpola entre las longitudes de arco de los dos primeros puntos más cercanos a lo largo de la ruta de referencia.

arclengths = linspace(nearestPathPoint(1,6),nearestPathPoint(2,6),10);
pathStates = interpolate(refPath,arclengths);

Muestra los waypoints interpolados.

plot(pathStates(:,1),pathStates(:,2),'g')
legend(["Waypoints","Reference Path","Trajectory to 30m",...
        "Global Points","Closest Points","Interpolated Path Points"])

Figure contains an axes object. The axes object contains 6 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, Global Points, Closest Points, Interpolated Path Points.

Argumentos de entrada

contraer todo

Ruta de referencia, especificada como un objeto referencePathFrenet.

Estados en el marco de coordenadas de Frenet, devueltos como una matriz numérica de P por 6 con filas 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. P es el número total de estados de Frenet.

Derivadas temporales laterales, especificadas como una matriz N por 3 donde cada fila tiene la forma [dL/dt ddL/dt^2 invertHeading] y N es el número total de puntos en points. Cada fila contiene las derivadas temporales de primer y segundo orden de la desviación lateral y un indicador, invertHeading, que indica si el rumbo debe invertirse al convertir a coordenadas globales (true) o no (false).

Nota

Si se define latTimeDerivatives sin el uso de global2frenet, se deben seguir las siguientes reglas:

  1. La bandera invertHeading debe ser verdadera cuando:

    1. El vehículo se mueve en reversa (la velocidad es menor que 0)

    2. El vehículo está parado (la velocidad es igual a 0) y está de espaldas al vector tangente de la trayectoria. es decir, cos(|tangentAngle(obj,S)-thetaExpected|) < 0

  2. Si 1b es verdadero, entonces dL/dS debe negarse.

Argumentos de salida

contraer todo

Estados en el marco de coordenadas global, especificados como una matriz numérica de P por 6 con filas con la forma [x y theta kappa speed accel], donde:

  • x y y theta –– Estado SE(2) expresado en coordenadas globales, con x y y en metros y theta en radianes.

  • kappa –– Curvatura, o inversa del radio, en m-1.

  • speed –– Velocidad en la dirección theta en m/s.

  • accel –– Aceleración en la dirección theta en m/s2.

P es el número total de estados globales.

Más acerca de

contraer todo

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