Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

sampleControl

Generar comando de control y duración.

Desde R2021b

    Descripción

    [u,steps] = sampleControl(mobileProp,q0,u0,qTgt) genera una serie de comandos de control y número de pasos para moverse desde el estado actual q0 con el comando de control u0 hacia el estado objetivo qTgt.

    ejemplo

    Ejemplos

    contraer todo

    Cree un propagador de estado y especifique la métrica de distancia para estimar el coste de propagación.

    propagator = mobileRobotPropagator(DistanceEstimator="dubins");

    Crea un espacio de estados de Dubins.

    dubinsSpace = stateSpaceDubins([0 25; 0 25; -pi pi]);

    Actualice el espacio de estados del propagador de estados utilizando el espacio de estados creado.

    propagator.StateSpace = dubinsSpace;
    setup(propagator)

    Crea un objeto navPath basado en múltiples puntos de referencia en un espacio de Dubins.

    path = navPath(dubinsSpace);
    waypoints = [8 10 pi/2;
                 7 14 pi/4;
                 10 17 pi/2;
                 10 10 -pi];
    append(path,waypoints)

    Interpola esa ruta para que contenga exactamente 250 puntos.

    numStates = 250;
    interpolate(path,numStates)

    Extrae la secuencia de movimientos de la ruta.

    q1 = path.States(1:end-1,:); % Initial states
    q2 = path.States(2:end,:);   % Final states

    Calcule el coste de propagación al estado objetivo.

    cost = distance(propagator,q1,q2);

    Generar una serie de comandos de control y número de pasos para pasar del estado actual q1 con el comando de control u hacia el estado objetivo 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

    Cree un objeto de ruta basado en control con el propagador de estado especificado y una secuencia de estados, controles, objetivos y duraciones especificados.

    states = path.States;
    controls = u(2:end,:);
    targets = q2;
    durations = steps*propagator.ControlStepSize;
    path2 = navPathControl(propagator,states,controls,targets,durations);

    Visualiza los resultados.

    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

    Argumentos de entrada

    contraer todo

    Propagador de estado de robot móvil, especificado como un objeto mobileRobotPropagator.

    Estado inicial del sistema, especificado como un vector de elementos s. s es el número de variables de estado en el espacio de estados.

    Entrada de control inicial, especificada como un vector de elementos c. c es el número de entradas de control.

    Estado objetivo del sistema, especificado como un vector de elementos s. s es el número de variables de estado en el espacio de estados.

    Argumentos de salida

    contraer todo

    Entradas de control para propagar estados, devueltas como un vector de elementos c. c es el número de entradas de control.

    Número de pasos desde cada estado y entrada de control al siguiente, devuelto como un vector de n elementos de números enteros positivos.

    Historial de versiones

    Introducido en R2021b

    Consulte también

    Objetos

    Funciones