Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

connect

Connecter les états Frenet initiaux et terminaux

Depuis R2020b

Description

frenetTrajectory = connect(connectorFrenet,initialState,terminalState,timeSpan) connecte les états Frenet initiaux spécifiés aux états terminaux spécifiés sur une période de temps en secondes. Cette fonction d'objet prend en charge 1-to- n, n-to-1 ou n-to- n connexions de trajectoire par paires.

exemple

[___,globalTrajectory] = connect(___) renvoie les trajectoires en coordonnées globales en plus de tous les arguments de la syntaxe précédente.

Exemples

réduire tout

Générez des trajectoires alternatives pour un chemin de référence à l'aide des coordonnées Frenet. Spécifiez différents états initiaux et terminaux pour vos trajectoires. Ajustez vos états en fonction des trajectoires générées.

Générez un chemin de référence à partir d'un ensemble de waypoints. Créez un objet trajectoryGeneratorFrenet à partir du chemin de référence.

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

Générez une trajectoire de cinq secondes entre l'origine du chemin et un point situé à 30 m en aval du chemin, comme l'indique 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);

Afficher la trajectoire en coordonnées 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.

Créez une matrice d'états terminaux avec des écarts latéraux compris entre –3 m et 3 m. Générez des trajectoires qui couvrent la même longueur d'arc en 10 secondes, mais s'écartent latéralement de la trajectoire de référence. Affichez les nouveaux chemins alternatifs.

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.

Spécifiez un nouvel état terminal pour générer une nouvelle trajectoire. Cette trajectoire n'est pas souhaitable car elle nécessite un mouvement inverse pour atteindre une vitesse longitudinale 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.

Assouplissez la restriction sur l'état longitudinal en spécifiant une longueur d'arc de NaN. Générez et affichez à nouveau la trajectoire. La nouvelle position montre une bonne trajectoire alternative qui s'écarte de la trajectoire de référence.

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

Arguments d'entrée

réduire tout

Générateur de trajectoire Frenet, spécifié comme objet trajectoryGeneratorFrenet .

États Frenet initiaux, spécifiés sous la forme d'une matrice numérique n-par 6. Chaque ligne de la matrice est un ensemble de coordonnées Frenet de l'état initial d'une trajectoire sous la forme [S dS ddS L dL ddL]. La valeur de n doit être égale au nombre de lignes de l'argument terminalState ou 1.

États Frenet finaux, spécifiés sous la forme d'une matrice numérique n-par 6. Chaque ligne de la matrice est un ensemble de coordonnées Frenet de l'état initial d'une trajectoire sous la forme [S dS ddS L dL ddL]. La valeur de n doit être égale au nombre de lignes de l'argument initialState ou 1.

Horizon temporel pour toutes les trajectoires, spécifié sous forme d'un scalaire positif en secondes. Les trajectoires générées sont échantillonnées uniformément sur cette période en fonction de la propriété TimeResolution de l'objet trajectoryGeneratorFrenet spécifié dans l'argument connectorFrenet .

Arguments de sortie

réduire tout

Trajectoires Frenet entre tous les états initial et final, renvoyées sous forme de tableau de structure avec ces champs :

  • Trajectoryn-matrice numérique par 6. Chaque ligne de la matrice est un ensemble de coordonnées Frenet de l'état initial d'une trajectoire sous la forme [S dS ddS L dL ddL].

  • Time — Vecteur de scalaires positifs de 0 à timeSpan en secondes.

Depiction of Frenet states relative to a reference path

Cette fonction prend en charge 1-to- n, n-to-1 ou n-to- n connexions de trajectoire par paire basées sur le nombre de lignes de initialState et terminalState.

Trajectoires globales entre tous les états initial et final, renvoyées sous forme de structure ou de tableau de structures avec des champs :

  • Trajectoryn-matrice numérique par 6. Chaque ligne de la matrice est un ensemble d'états globaux de la forme [x y theta kappa v a].

  • Time — Vecteur de scalaires positifs de 0 à timeSpan en secondes.

Depiction of global Frenet coordinates

Cette fonction prend en charge 1-to- n, n-to-1 ou n-to- n connexions de trajectoire par paire basées sur le nombre de lignes de initialState et terminalState.

Capacités étendues

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2020b