Main Content

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

distance

Estimar el coste de propagación al estado objetivo

Desde R2021b

    Descripción

    ejemplo

    h = distance(mobileProp,q1,q2) estima el coste de propagación de un estado a otro. La propiedad DistanceEstimator del propagador de estado define la métrica de distancia para aproximar el coste.

    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)

    Cree un objeto navPath basado en múltiples puntos de referencia en un espacio 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 .

    Estados iniciales, especificados como una matriz n-por- s . n es el número de estados y s es el tamaño del vector de estado.

    Estados finales, especificados como una matriz n-por- s . n es el número de estados y s es el tamaño del vector de estado.

    Argumentos de salida

    contraer todo

    Valores de coste, devueltos como un vector de elemento n. n es el número de pares q1 y q2 .

    Puede utilizar los valores de coste devueltos por esta función para encontrar el vecino más cercano para los estados objetivo muestreados al planificar una ruta.

    Historial de versiones

    Introducido en R2021b