Main Content

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

sampleControl

Générer une commande de contrôle et une durée

Depuis R2021b

    Description

    exemple

    [u,steps] = sampleControl(mobileProp,q0,u0,qTgt) génère une série de commandes de contrôle et un nombre d'étapes pour passer de l'état actuel q0 avec la commande de contrôle u0 vers l'état cible qTgt.

    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 .

    É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.

    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.

    É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

    réduire tout

    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.

    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