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.

navPathControl

Ruta que representa la trayectoria cinemática basada en control.

Desde R2021b

    Descripción

    El objeto navPathControl almacena rutas que normalmente son creadas por planificadores de rutas basados ​​en control como el objeto plannerControlRRT . El objeto navPathControl representa rutas como una secuencia de estados, controles, duraciones y objetivos. Este objeto asocia cada ruta con un propagador de estado específico, que propaga los comandos de control para determinar los estados resultantes.

    Este objeto especifica estados y objetivos en la ruta en el espacio de estados del propagador. Los controles son salidas de un controlador que se utilizan para actualizar el estado de sus sistemas durante la propagación. Este objeto aplica cada control durante una duración asociada. Los controles pueden ser señales de referencia o entradas directas a un integrador según el diseño de su sistema.

    Creación

    Descripción

    ejemplo

    pathObj = navPathControl(propagator) crea un objeto de ruta con el propagador de estado especificado. El argumento propagator especifica el StatePropagator

    pathObj = navPathControl(propagator,states,controls,targets,durations) inicializa la ruta con una secuencia de estados, controles, objetivos y duraciones específicos. Los estados de entrada deben tener una fila más que los otros vectores y matrices de entrada.

    Propiedades

    expandir todo

    Propagador de estado, especificado como un objeto de una subclase de nav.StatePropagator. Por ejemplo, el objeto mobileRobotPropagator representa el espacio de estados y el comportamiento de control cinemático para diferentes modelos de vehículos de robots móviles.

    Tipos de datos: double

    Serie de estados para la ruta, especificada como una matriz n-por- m . n es el número de puntos en la ruta. m es la dimensión del vector de estado.

    Puede especificar esta propiedad en la creación del objeto utilizando el argumento states .

    Tipos de datos: double

    Entrada de control para cada estado, especificada como una matriz (n–1)-por- m . n es el número de puntos en la ruta. m es la dimensión del vector de estado.

    Puede especificar esta propiedad en la creación del objeto utilizando el argumento controls .

    Tipos de datos: double

    Estado objetivo para cada estado en la ruta, especificado como una matriz (n–1)-por- m . n es el número de puntos en la ruta. m es la dimensión del vector de estado.

    Puede especificar esta propiedad en la creación del objeto utilizando el argumento targets .

    Tipos de datos: double

    Duración de cada entrada de control, especificada como un vector de elemento (n–1) en segundos. n es el número de puntos en la ruta.

    Puede especificar esta propiedad en la creación del objeto utilizando el argumento durations .

    Tipos de datos: double

    Número de estados en la ruta, especificado como un entero positivo.

    Tipos de datos: double

    Número de segmentos entre estados en la ruta, especificado como un entero positivo, que debe ser uno menos que el número de estados.

    Tipos de datos: double

    Funciones del objeto

    appendAgregar estados al final de la ruta
    interpolateInterpolar ruta según el tamaño del paso del propagador
    pathDurationDuración total transcurrida de la ruta de control

    Ejemplos

    contraer todo

    Planifique rutas de control para un modelo cinemático de bicicleta con el objeto mobileRobotPropagator . Especifique un mapa para el entorno, establezca límites estatales y defina una ubicación de inicio y objetivo. Planifique una ruta utilizando el algoritmo RRT basado en control, que utiliza un propagador de estado para planificar el movimiento y los comandos de control necesarios.

    Establecer parámetros de estado y propagador de estado

    Cargue una matriz de mapa ternario y cree un objeto occupancyMap . Cree el propagador de estado usando el mapa. De forma predeterminada, el propagador de estado utiliza un modelo cinemático de bicicleta.

    load('exampleMaps','ternaryMap')
    map = occupancyMap(ternaryMap,10);
    
    propagator = mobileRobotPropagator(Environment=map); % Bicycle model

    Establezca los límites estatales en el espacio de estados según los límites del mundo del mapa.

    propagator.StateSpace.StateBounds(1:2,:) = ...
                        [map.XWorldLimits; map.YWorldLimits];

    Planificar ruta

    Cree el planificador de ruta a partir del propagador de estado.

    planner = plannerControlRRT(propagator);

    Especifique los estados de inicio y objetivo.

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

    Planificar una ruta entre los estados. Para obtener resultados repetibles, reinicie el generador de números aleatorios antes de planificar. La función plan genera un objeto navPathControl , que contiene los estados, los comandos de control y las duraciones.

    rng("default")
    path = plan(planner,start,goal)
    path = 
      navPathControl with properties:
    
        StatePropagator: [1x1 mobileRobotPropagator]
                 States: [192x3 double]
               Controls: [191x2 double]
              Durations: [191x1 double]
           TargetStates: [191x3 double]
              NumStates: 192
            NumSegments: 191
    
    

    Visualizar resultados

    Visualice el mapa y trace los estados de la ruta.

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

    Muestra las entradas de control [v psi] de velocidad de avance y ángulo de dirección.

    plot(path.Controls)
    ylim([-1 1])
    legend(["Velocity (m/s)","Steering Angle (rad)"])

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Velocity (m/s), Steering Angle (rad).

    Establecer parámetros de estado y propagador de estado

    Cargue una matriz de mapa ternario y cree un objeto occupancyMap .

    load("exampleMaps","ternaryMap")
    map = occupancyMap(ternaryMap,10);

    Cree un propagador de estado para un modelo cinemático de bicicleta usando el mapa.

    propagator = mobileRobotPropagator(Environment=map);

    Establezca los límites estatales en el espacio de estados según los límites del mundo del mapa.

    propagator.StateSpace.StateBounds(1:2,:) = [map.XWorldLimits; 
                                                map.YWorldLimits];

    Planificar ruta

    Cree el planificador de ruta a partir del propagador de estado.

    planner = plannerControlRRT(propagator);

    Especifique los estados de inicio y objetivo.

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

    Planificar una ruta entre los estados. Para obtener resultados repetibles, reinicie el generador de números aleatorios antes de planificar.

    rng("default")
    path = plan(planner,start,goal);

    Verifique la duración total transcurrida de la ruta de control.

    pathDuration(path)
    ans = 102.4000
    

    Interpola la ruta al tamaño del paso de control del propagador.

    interpolate(path)

    Visualiza la ruta.

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

    Planificar la ruta de regreso

    Planifique una segunda ruta desde el final de la ubicación de la ruta anterior hasta el inicio.

    path2 = plan(planner,path.States(end,:),start);

    Verifique la duración total transcurrida de la segunda ruta.

    pathDuration(path2)
    ans = 100.3000
    

    Visualiza la ruta.

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

    Combinar rutas

    Extraiga la secuencia de movimientos de la segunda ruta.

    states = path2.States(2:end,:);
    controls = path2.Controls;
    targets = path2.TargetStates;
    durations = path2.Durations;

    Agregue esta secuencia al final de la primera ruta.

    append(path,states,controls,targets,durations)

    Interpola los nuevos segmentos en la ruta original.

    interpolate(path)

    Consulta la duración total transcurrida de la ruta final.

    pathDuration(path)
    ans = 102.4000
    

    Visualiza la ruta.

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

    Historial de versiones

    Introducido en R2021b

    Consulte también

    Objetos

    Funciones