plan
Syntaxe
Description
renvoie un path
= plan(planner
,startState
,goalState
)path
de l'état de départ à l'état final.
[
renvoie également path
,solutionInfo
] = plan(planner
,startState
,goalState
)solutionInfo
qui contient les informations de solution de la planification du chemin.
Exemples
Planifier le chemin entre deux États
Créez un espace d'état.
ss = stateSpaceSE2;
Créez un validateur d'état basé sur occupancyMap
en utilisant l'espace d'état créé.
sv = validatorOccupancyMap(ss);
Créez une carte d'occupation à partir d'un exemple de carte et définissez la résolution de la carte sur 10 cellules/mètre.
load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;
Définissez la distance de validation pour le validateur.
sv.ValidationDistance = 0.01;
Mettre à jour les limites de l'espace d'état pour qu'elles soient identiques aux limites de la carte.
ss.StateBounds = [map.XWorldLimits;map.YWorldLimits;[-pi pi]];
Créez le planificateur de chemin et augmentez la distance de connexion maximale.
planner = plannerRRT(ss,sv,MaxConnectionDistance=0.3);
Définissez les états de départ et d’objectif.
start = [0.5 0.5 0]; goal = [2.5 0.2 0];
Planifiez un chemin avec les paramètres par défaut.
rng(100,'twister'); % for repeatable result [pthObj,solnInfo] = plan(planner,start,goal);
Visualisez les résultats.
show(map) hold on % Tree expansion plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-') % Draw path plot(pthObj.States(:,1),pthObj.States(:,2),'r-','LineWidth',2)
Planifier le chemin à travers la carte d'occupation 3D à l'aide du planificateur RRT
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 validateur d'état de carte d'occupation 3D à l'aide de l'espace d'état créé. Attribuez la carte d'occupation à l'objet validateur d'état. Spécifiez l’intervalle de distance d’échantillonnage.
sv = validatorOccupancyMap3D(ss, ... Map = omap, ... ValidationDistance = 0.1);
Créez un planificateur de chemin RRT avec une distance de connexion maximale accrue et un nombre maximal d'itérations réduit. Spécifiez une fonction d'objectif personnalisée qui détermine qu'un chemin atteint l'objectif si la distance euclidienne jusqu'à la cible est inférieure à un seuil de 1 mètre.
planner = plannerRRT(ss,sv, ... MaxConnectionDistance = 50, ... MaxIterations = 1000, ... GoalReachedFcn = @(~,s,g)(norm(s(1:3)-g(1:3))<1), ... GoalBias = 0.1);
Spécifiez les poses de départ et d’objectif.
start = [40 180 25 0.7 0.2 0 0.1]; goal = [150 33 35 0.3 0 0.1 0.6];
Configurez le générateur de nombres aléatoires pour un résultat reproductible.
rng(1,"twister");
Planifiez le chemin.
[pthObj,solnInfo] = plan(planner,start,goal);
Visualisez le chemin prévu.
show(omap) axis equal view([-10 55]) hold on % Start state scatter3(start(1,1),start(1,2),start(1,3),"g","filled") % Goal state scatter3(goal(1,1),goal(1,2),goal(1,3),"r","filled") % Path plot3(pthObj.States(:,1),pthObj.States(:,2),pthObj.States(:,3), ... "r-",LineWidth=2)
Arguments d'entrée
planner
— Planificateur de chemin
plannerRRT
objet | plannerRRTStar
objet
Planificateur de chemin, spécifié comme un objet plannerRRT
ou un objet plannerRRTStar
.
startState
— État de départ du chemin
N-élément vecteur à valeur réelle
État de départ du chemin, spécifié comme un vecteur à valeur réelle d'élément N. N est la dimension de l'espace d'état.
Exemple : [1 1 pi/6]
Exemple : [40 180 25 0.7 0.2 0 0.1]
Types de données : single
| double
goalState
— État objectif du chemin
N-élément vecteur à valeur réelle
État objectif du chemin, spécifié sous la forme d'un vecteur à valeur réelle d'élément N. N est la dimension de l'espace d'état.
Exemple : [2 2 pi/3]
Exemple : [150 33 35 0.3 0 0.1 0.6]
Types de données : single
| double
Arguments de sortie
path
— Objet contenant des informations sur le chemin planifié
Objet navPath
Un objet qui contient les informations de chemin planifié, renvoyées sous la forme d'un objet navPath
.
solutionInfo
— Informations sur la solution
structure
Informations sur la solution, renvoyées sous forme de structure. Les champs de la structure sont :
Champs de solutionInfo
Des champs | Description |
---|---|
IsPathFound | Indique si un chemin est trouvé. Il renvoie sous la forme 1 si un chemin est trouvé. Sinon, il renvoie 0 . |
ExitFlag | Indique le statut de fin du planificateur, renvoyé sous la forme
|
NumNodes | Nombre de nœuds dans l'arborescence de recherche à la fin du planificateur (à l'exclusion du nœud racine). |
NumIterations | Nombre de routines « étendre » exécutées. |
TreeData | Collection d'états explorés qui reflète l'état de l'arborescence de recherche à la fin du planificateur. Notez que les valeurs NaN sont insérées comme délimiteurs pour séparer chaque arête individuelle. |
PathCosts | Contient le coût du chemin à chaque itération. La valeur des itérations lorsque le chemin n'a pas atteint l'objectif est indiquée par un Remarque Ce champ s'applique uniquement à l'objet
|
Types de données : structure
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)