Main Content

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

interpolate

Interpoler le chemin de référence aux longueurs d'arc fournies

Depuis R2020b

Description

exemple

pathPoints = interpolate(refPath,arclengths) interpole le chemin de référence aux longueurs d'arc fournies et renvoie les points interpolés sur le chemin en coordonnées globales.

Exemples

réduire tout

Générez un chemin de référence à partir d'un ensemble de waypoints.

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

Créez un objet trajectoryGeneratorFrenet à partir du chemin de référence.

connector = trajectoryGeneratorFrenet(refPath);

Générez une trajectoire de cinq secondes entre l'origine du chemin et un point situé à 30 mètres du chemin, comme l'indique Frenet.

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

Convertissez la trajectoire en états globaux.

globalTraj = frenet2global(refPath,frenetTraj.Trajectory);

Afficher le chemin de référence et la trajectoire.

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

Spécifiez les points globaux et recherchez les points les plus proches sur le chemin de référence.

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

Affichez les points globaux et les points les plus proches sur le chemin de référence.

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

Interpolez entre les longueurs d’arc des deux premiers points les plus proches le long du chemin de référence.

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

Affichez les points de chemin interpolés.

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.

Arguments d'entrée

réduire tout

Chemin de référence, spécifié en tant qu'objet referencePathFrenet .

Distances le long du chemin de référence, spécifiées sous la forme d'un vecteur d'éléments N. N est le nombre de longueurs d'arc auxquelles échantillonner les points. Chaque distance est en mètres.

Arguments de sortie

réduire tout

Points sur le chemin de référence, renvoyés sous la forme d'une matrice numérique N-par 6 avec des lignes de la forme [x y theta kappa dkappa s], où :

  • x y et theta — État SE(2) exprimé en coordonnées globales, avec x et y en mètres et theta en radians

  • kappa — Courbure, ou inverse du rayon, en m-1

  • dkappa — Dérivée de la courbure par rapport à la longueur de l'arc dans m-2

  • s — Longueur de l'arc ou distance le long du chemin depuis l'origine du chemin, en mètres

N est le nombre de points échantillonnés le long du chemin de référence.

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