Contenu principal

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

distance

Estimer le coût de propagation vers l’état cible

Depuis R2021b

    Description

    h = distance(mobileProp,q1,q2) estime le coût de propagation d’un état à un autre. La propriété DistanceEstimator du propagateur d'état définit la métrique de distance pour approximer le coût.

    exemple

    Exemples

    réduire tout

    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)

    Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

    Arguments d'entrée

    réduire tout

    Propagateur d'état de robot mobile, spécifié comme objet mobileRobotPropagator .

    États initiaux, spécifiés sous la forme d'une matrice n-par- s . n est le nombre d'états et s est la taille du vecteur d'état.

    États finaux, spécifiés sous la forme d'une matrice n-par- s . n est le nombre d'états et s est la taille du vecteur d'état.

    Arguments de sortie

    réduire tout

    Valeurs de coût, renvoyées sous forme de vecteur d'élément n. n est le nombre de paires q1 et q2 .

    Vous pouvez utiliser les valeurs de coût renvoyées par cette fonction pour rechercher le voisin le plus proche pour les états cibles échantillonnés lors de la planification d'un chemin.

    Historique des versions

    Introduit dans R2021b