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.

mobileRobotPropagator

Propagador de estado para sistemas robóticos sobre ruedas.

Desde R2021b

    Descripción

    El objeto mobileRobotPropagator es un propagador de estado que propaga y valida el estado de un robot móvil en función de comandos de control, duraciones y estados de destino. El objeto admite diferentes modelos cinemáticos, tipos de integradores y políticas de control.

    Creación

    Descripción

    mobileProp = mobileRobotPropagator crea un propagador de robot móvil para un modelo cinemático de bicicleta utilizando una política de control de persecución lineal.

    ejemplo

    mobileProp = mobileRobotPropagator(Name,Value) especifica propiedades utilizando argumentos de nombre-valor. Por ejemplo, mobileRobotPropagator("ControlStepSize"=0.01) crea un propagador de robot móvil con un tamaño de paso de control de 0,01.

    Propiedades

    expandir todo

    Espacio de estado para muestreo durante la planificación, especificado como un objeto de una subclase de nav.StateSpace objeto.

    El espacio de estados es responsable de representar el espacio de configuración de un sistema. El objeto debe incluir toda la información de estado relacionada con el sistema propagado. Los sistemas que emplean controladores en cascada multicapa pueden agregar información de control persistente de bajo nivel directamente al vector de estado, mientras que el propagador de estado administra directamente los comandos de control de nivel superior.

    Entorno para validar estados, especificado como un objeto binaryOccupancyMap, occupancyMap o vehicleCostmap (Automated Driving Toolbox) .

    El objeto mobileRobotPropagator valida estados discretos a lo largo del movimiento propagado. De forma predeterminada, el entorno está vacío, por lo que el objeto sólo rechaza estados fuera de los límites del espacio de estados.

    Esta propiedad sólo se puede establecer durante la construcción.

    Métrica de distancia para estimar el coste de propagación, especificada como una de estas opciones:

    • 'euclidean' — Distancia euclidiana estándar.

    • 'dubins' — Distancia a lo largo de una ruta de Dubins que conecta los dos estados. Para obtener más información, consulte dubinsPathSegment.

    • 'reedsshepp' — Distancia a lo largo de una ruta de Reeds Shepp que conecta los dos estados. Para obtener más información, consulte reedsSheppPathSegment.

    Esta propiedad sólo se puede establecer durante la construcción.

    Umbral de distancia para alcanzar estados objetivo, especificado como un escalar positivo. Al propagar estados, un estado se considera igual al estado objetivo cuando está más cerca que este umbral de distancia.

    Esta propiedad sólo se puede establecer durante la construcción.

    Modelo cinemático para propagar el estado, que determina las variables de estado, el tamaño de las entradas de control y otros parámetros del sistema que puede especificar en la propiedad SystemParameters .

    Estados y controles del modelo cinemático

    TipoVector de estadoEntrada de control
    'bicycle'[x y theta][v psi]
    'ackermann'[x y theta psi][v psiDot]

    Esta propiedad solo se puede establecer durante la construcción y para seleccionar el modelo cinemático de Ackermann se requiere Robotics System Toolbox™.

    Método de integración al propagar el estado. El tamaño del paso de integración se puede actualizar a través de la propiedad SystemParameters .

    'rungekutta4' proporciona un resultado de integración más preciso que 'euler' a costa de la velocidad.

    Esta propiedad sólo se puede establecer durante la construcción.

    Parámetros para el modelo cinemático, integrador y política de control, especificados como una estructura con estos campos:

    • KinematicModel — Parámetros para el tipo de modelo cinemático especificado en la propiedad KinematicModel .

      • WheelBase — Tamaño de la distancia entre ejes en metros

      • SpeedLimit — Velocidad en las direcciones hacia adelante y hacia atrás en metros por segundo.

      • SteerRatelimit — Límites de velocidad de dirección en radianes por segundo

    • Integrator — Parámetros para el tipo de integrador especificado en la propiedad Integrator .

    • ControlPolicy : parámetros para la política de control especificada en la propiedad ControlPolicy .

    Parámetros de control

    Política de generación de comandos de control, especificada como una de estas opciones:

    • 'linearpursuit' : toma muestras de una velocidad aleatoria y calcula un punto de anticipación a lo largo del vector que conecta el estado inicial con el estado objetivo.

    • 'arcpursuit' : toma muestras de una velocidad aleatoria y calcula un punto de anticipación a lo largo de un arco que es tangencial al estado objetivo y que intersecta la posición inicial xy.

    • 'randomsamples' : extrae un conjunto finito de muestras de control aleatorias del espacio de control y las propaga a cada una. El propagador selecciona la muestra que se acerca más al objetivo y luego realiza una validación.

    Límites de los comandos de control para cada estado, especificados como una matriz n por 2. n es el número de entradas de control para su modelo de sistema.

    Esta propiedad o parámetro es de solo lectura.

    Número de salidas de control, especificadas como un escalar no negativo.

    Duración de cada comando de control, especificada como un escalar positivo.

    Número máximo de veces para propagar el sistema especificado como entero positivo.

    Funciones del objeto

    distanceEstimar el coste de propagación al estado objetivo
    propagatePropagar el sistema sin validación.
    propagateWhileValidPropagar el sistema y devolver un movimiento válido.
    sampleControlGenerar comando de control y duración.
    setupConfigurar el propagador de estado del robot móvil

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

    Limitaciones

    • La implementación utilizando MATLAB® Compiler™ no se admite cuando KinematicModel está configurado en 'ackermann'.

    Historial de versiones

    Introducido en R2021b