Main Content

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

propagateWhileValid

Propager le système et renvoyer un mouvement valide

Depuis R2021b

    Description

    exemple

    [q,u,steps] = propagateWhileValid(mobileProp,q0,u0,qTgt,maxSteps) propage itérativement le système depuis l'état actuel q0 vers un état cible qTgt avec une entrée de contrôle initiale u0 pour un nombre maximum d'étapes maxSteps.

    A la fin de chaque étape de propagation i, le système renvoie ces valeurs :

    • q(i,:) — État actuel du système

    • u(i,:) — Entrée de commande pour l'étape i + 1

    • steps(i) — Nombre d'étapes entre i - 1 et i

    La fonction valide toutes les propagations et renvoie les informations système entre q0 et le dernier état valide.

    Exemples

    réduire tout

    Chargez une matrice de carte ternaire et créez un objet occupancyMap . Créez le propagateur d'état à l'aide de la carte.

    load("exampleMaps","ternaryMap")
    map = occupancyMap(ternaryMap,10);
    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];

    Spécifiez les états de départ et d’objectif.

    start = [10 15 0];
    goal  = [40 30 0];

    Spécifiez le contrôle initial et le nombre maximum d'étapes.

    u0 = [0.2 -0.2];
    maxSteps = 2000;

    Propager l'état du robot sans validation.

    [q1,u1,steps1] = propagate(propagator,start,u0,goal,maxSteps);

    Visualisez les résultats.

    figure
    show(map)
    hold on
    plot(start(1),start(2),"rx")
    plot(goal(1),goal(2),"go")
    plot(q1(:,1),q1(:,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

    Propager l'état du robot et renvoyer un mouvement valide.

    [q2,u2,steps2] = propagateWhileValid(propagator,start,u0,goal,maxSteps);

    Visualisez les résultats.

    figure
    show(map)
    hold on
    plot(start(1),start(2),"rx")
    plot(goal(1),goal(2),"go")
    plot(q2(:,1),q2(:,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

    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.

    Contrôle initial sur l'état initial, spécifié 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.

    Nombre maximum d'étapes, spécifié sous forme de scalaire positif.

    Arguments de sortie

    réduire tout

    États propagés du système, renvoyés sous forme de vecteur d'élément s. s est le nombre de variables d'état dans l'espace d'état.

    Entrées de contrôle pour les états de propagation, renvoyées sous la forme d'une matrice n-par- 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