sampleControl
Description
Exemples
Créer un chemin représentant une trajectoire cinématique basée sur le contrôle
Créez un propagateur d'état et spécifiez la métrique de distance pour estimer le coût de propagation.
propagator = mobileRobotPropagator(DistanceEstimator="dubins");
Créez un espace d'état Dubins.
dubinsSpace = stateSpaceDubins([0 25; 0 25; -pi pi]);
Mettez à jour l'espace d'état du propagateur d'état à l'aide de l'espace d'état créé.
propagator.StateSpace = dubinsSpace; setup(propagator)
Créez un objet navPath
basé sur plusieurs waypoints dans un espace Dubins.
path = navPath(dubinsSpace); waypoints = [8 10 pi/2; 7 14 pi/4; 10 17 pi/2; 10 10 -pi]; append(path,waypoints)
Interpolez ce chemin pour qu'il contienne exactement 250 points.
numStates = 250; interpolate(path,numStates)
Extrayez la séquence de mouvements du chemin.
q1 = path.States(1:end-1,:); % Initial states q2 = path.States(2:end,:); % Final states
Estimez le coût de propagation vers l’état cible.
cost = distance(propagator,q1,q2);
Générez une série de commandes de contrôle et un nombre d'étapes pour passer de l'état actuel q1
avec la commande de contrôle u
vers l'état cible q2
.
u = zeros(size(q1,1),propagator.NumControlOutput); steps = zeros(size(q1,1),1); for i = 1:size(q1,1) [u(i+1,:),steps(i)] = sampleControl(propagator,q1(i,:),u(i,:),q2(i,:)); end
Créez un objet chemin basé sur le contrôle avec le propagateur d'état spécifié et une séquence d'états, de contrôles, de cibles et de durées spécifiés.
states = path.States; controls = u(2:end,:); targets = q2; durations = steps*propagator.ControlStepSize; path2 = navPathControl(propagator,states,controls,targets,durations);
Visualisez les résultats.
figure grid on axis equal hold on plot(path2.States(:,1),path2.States(:,2),".b") plot(waypoints(:,1),waypoints(:,2),"*r","MarkerSize",10)
Arguments d'entrée
mobileProp
— Propagateur d'état de robot mobile
Objet mobileRobotPropagator
Propagateur d'état de robot mobile, spécifié comme objet mobileRobotPropagator
.
q0
— Etat initial
s-élément vecteur
État initial du système, spécifié comme vecteur d'élément s. s est le nombre de variables d'état dans l'espace d'état.
u0
— Contrôle initial sur l'état initial
c-élément vecteur
Entrée de contrôle initiale, spécifiée comme vecteur d'élément c. c est le nombre d’entrées de contrôle.
qTgt
— État cible
s-élément vecteur
État cible du système, spécifié comme vecteur d'élément s. s est le nombre de variables d'état dans l'espace d'état.
Arguments de sortie
u
— Entrées de contrôle pour la propagation des états
n-par- c matrice
Entrées de contrôle pour les états de propagation, renvoyées sous la forme d'un vecteur d'éléments c. c est le nombre d’entrées de contrôle.
steps
— Nombre d'étapes de chaque état et entrée de contrôle au suivant
n-élément vecteur d'entiers positifs
Nombre d'étapes de chaque état et entrée de contrôle au suivant, renvoyé sous la forme d'un vecteur d'éléments n d'entiers positifs.
Historique des versions
Introduit dans R2021b
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)