append
Description
append(
ajoute une séquence d'états pathObj
,states
,controls
,targets
,durations
)states
, contrôle controls
, cible targets
et durées durations
, jusqu'au bout du chemin. Si le chemin est vide, l'entrée states
doit avoir une ligne de plus que les autres vecteurs et matrices d'entrée. Si le chemin contient déjà des points, la fonction applique le premier contrôle au dernier état du chemin actuel.
Exemples
Combinez deux chemins kinodynamiques avec des commandes pour robot mobile
Définir les paramètres d'état et de propagateur d'état
Chargez une matrice de carte ternaire et créez un objet occupancyMap
.
load("exampleMaps","ternaryMap") map = occupancyMap(ternaryMap,10);
Créez un propagateur d'état pour un modèle cinématique de vélo à l'aide de la carte.
propagator = mobileRobotPropagator(Environment=map);
Définissez les limites d'état sur l'espace d'état en fonction des limites du monde cartographique.
propagator.StateSpace.StateBounds(1:2,:) = [map.XWorldLimits; map.YWorldLimits];
Planifier le chemin
Créez le planificateur de chemin à partir du propagateur d'état.
planner = plannerControlRRT(propagator);
Spécifiez les états de départ et d’objectif.
start = [10 15 0]; goal = [40 30 0];
Planifiez un chemin entre les États. Pour des résultats reproductibles, réinitialisez le générateur de nombres aléatoires avant de planifier.
rng("default")
path = plan(planner,start,goal);
Vérifiez la durée totale écoulée du chemin de contrôle.
pathDuration(path)
ans = 102.4000
Interpolez le chemin vers la taille du pas de contrôle du propagateur.
interpolate(path)
Visualisez le chemin.
figure show(map) hold on plot(start(1),start(2),"rx") plot(goal(1),goal(2),"go") plot(path.States(:,1),path.States(:,2),"b") hold off
Planifier le chemin de retour
Planifiez un deuxième chemin depuis la fin de l'emplacement du chemin précédent jusqu'au début.
path2 = plan(planner,path.States(end,:),start);
Vérifiez la durée totale écoulée du deuxième chemin.
pathDuration(path2)
ans = 100.3000
Visualisez le chemin.
figure show(map) hold on plot(start(1),start(2),"rx") plot(goal(1),goal(2),"go") plot(path2.States(:,1),path2.States(:,2),"m") hold off
Combiner les chemins
Extrayez la séquence de mouvements du deuxième chemin.
states = path2.States(2:end,:); controls = path2.Controls; targets = path2.TargetStates; durations = path2.Durations;
Ajoutez cette séquence à la fin du premier chemin.
append(path,states,controls,targets,durations)
Interpolez les nouveaux segments dans le chemin d'origine.
interpolate(path)
Vérifiez la durée totale écoulée du chemin final.
pathDuration(path)
ans = 102.4000
Visualisez le chemin.
figure show(map) hold on plot(start(1),start(2),"rx") plot(goal(1),goal(2),"go") plot(path.States(:,1),path.States(:,2),"b") hold off
Arguments d'entrée
pathObj
— Chemin de contrôle
navControlPath
Chemin de contrôle, spécifié comme objet navPathControl
.
Types de données : double
states
— Série d'états pour le chemin
n-par- m matrice
Série d'états pour le chemin, spécifiés sous la forme d'une matrice n-par- m . n est le nombre de points à ajouter au chemin. m est la dimension du vecteur d'état.
Remarque
Si l'objet chemin est vide, l'entrée states
doit être une matrice (n+1)-by- m .
Types de données : double
controls
— Entrée de contrôle pour chaque état
n-par- m matrice
Entrée de contrôle pour chaque état, spécifiée sous la forme d'une matrice n-par- m . n est le nombre de points à ajouter au chemin. m est la dimension du vecteur d'état.
Types de données : double
targets
— État cible pour chaque état du chemin
n-élément vecteur en secondes
État cible pour chaque état du chemin, spécifié sous la forme d'une matrice n-par- m . n est le nombre de points à ajouter au chemin. m est la dimension du vecteur d'état.
Types de données : double
durations
— Durée de chaque entrée de contrôle
n-élément vecteur en secondes
Durée de chaque entrée de contrôle, spécifiée sous la forme d'un vecteur d'élément n en secondes. n est le nombre de points à ajouter au chemin.
Types de données : double
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)