Main Content

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

append

Ajouter des états à la fin du chemin

Depuis R2021b

Description

exemple

append(pathObj,states,controls,targets,durations) ajoute une séquence d'états 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

réduire tout

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

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 4 objects of type image, line. One or more of the lines displays its values using only markers

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

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 4 objects of type image, line. One or more of the lines displays its values using only markers

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

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 4 objects of type image, line. One or more of the lines displays its values using only markers

Arguments d'entrée

réduire tout

Chemin de contrôle, spécifié comme objet navPathControl .

Types de données : double

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

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

É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

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