interpolate
Syntaxe
Description
interpolate(
insère un certain nombre d'états dans le chemin et assure que la répartition de tous les points du chemin soit uniforme. La fonction conserve tous les états existants dans le chemin. La valeur de path
,numStates
)numStates
doit être supérieure ou égale au nombre d'états existants dans le chemin.
Exemples
Créer un navPath basé sur plusieurs waypoints
Créez un objet navPath
basé sur plusieurs waypoints dans un espace Dubins.
dubinsSpace = stateSpaceDubins([0 25; 0 25; -pi pi])
dubinsSpace = stateSpaceDubins with properties: SE2 Properties Name: 'SE2 Dubins' StateBounds: [3x2 double] NumStateVariables: 3 Dubins Vehicle Properties MinTurningRadius: 1
pathobj = navPath(dubinsSpace)
pathobj = navPath with properties: StateSpace: [1x1 stateSpaceDubins] States: [0x3 double] NumStates: 0 MaxNumStates: Inf
waypoints = [8 10 pi/2; 7 14 pi/4; 10 17 pi/2; 10 10 -pi]; append(pathobj,waypoints)
Interpolez ce chemin pour qu'il contienne exactement 250 points.
interpolate(pathobj,250)
Visualisez le chemin interpolé et les waypoints d'origine.
figure grid on axis equal hold on plot(pathobj.States(:,1),pathobj.States(:,2),".b") plot(waypoints(:,1),waypoints(:,2),"*r","MarkerSize",10)
Calculez la longueur du chemin.
len = pathLength(pathobj);
disp("Path length = " + num2str(len))
Path length = 19.4722
Créer navPath
basé sur plusieurs points de cheminement dans l'espace d'état SE(3)
Chargez une carte d'occupation 3D d'un pâté de maisons dans l'espace de travail. Spécifiez le seuil pour considérer les cellules comme sans obstacle.
mapData = load("dMapCityBlock.mat");
omap = mapData.omap;
omap.FreeThreshold = 0.5;
Gonflez la carte d'occupation pour ajouter une zone tampon pour un fonctionnement sûr autour des obstacles.
inflate(omap,1)
Créez un objet d'espace d'état SE(3) avec des limites pour les variables d'état.
ss = stateSpaceSE3([0 220;0 220;0 100;inf inf;inf inf;inf inf;inf inf]);
Créez un objet navPath
basé sur plusieurs waypoints dans un espace d'état SE(3).
path = navPath(ss); waypoints = [40 180 15 0.7 0.2 0 0.1; 55 120 20 0.6 0.2 0 0.1; 100 100 25 0.5 0.2 0 0.1; 130 90 30 0.4 0 0.1 0.6; 150 33 35 0.3 0 0.1 0.6]; append(path,waypoints)
Interpolez ce chemin pour qu'il contienne exactement 250 points.
interpolate(path,250)
Visualisez le chemin interpolé et les waypoints d'origine.
show(omap) axis equal view([-10 55]) hold on % Start state scatter3(waypoints(1,1),waypoints(1,2),waypoints(1,3),"g","filled") % Goal state scatter3(waypoints(end,1),waypoints(end,2),waypoints(end,3),"r","filled") % Intermediate waypoints scatter3(waypoints(2:end-1,1),waypoints(2:end-1,2), ... waypoints(2:end-1,3),"y","filled") % Path plot3(path.States(:,1),path.States(:,2),path.States(:,3), ... "r-",LineWidth=2)
Calculez la longueur du chemin.
len = pathLength(path);
disp("Path length = " + num2str(len))
Path length = 204.1797
Arguments d'entrée
path
— Objet chemin
Objet navpath
Objet Path, spécifié comme objet navPath
.
numStates
— Nombre d'états
entier non négatif
Nombre d'états insérés dans le chemin, spécifié sous forme d'entier non négatif. Sa valeur doit être supérieure ou égale au nombre d'états existants dans le chemin.
Types de données : double
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 R2019b
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)