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.

validatorOccupancyMap

Validador de estado basado en un mapa de cuadrícula 2-D

Desde R2019b

Descripción

El objeto validatorOccupancyMap valida estados y movimientos discretizados en función del valor en un mapa de ocupación 2-D. Una ubicación ocupada en el mapa se interpreta como un estado no válido.

Creación

Sintaxis

Descripción

validator = validatorOccupancyMap crea un validador de mapas de ocupación 2-D asociado con un espacio de estado SE2 con configuración predeterminada.

ejemplo

validator = validatorOccupancyMap(stateSpace) crea un validador en la definición de espacio de estados dada derivada de nav.StateSpace.

validator = validatorOccupancyMap(stateSpace,Name,Value) especifica las propiedades Map o XYIndices usando argumentos de par Name,Value .

Propiedades

expandir todo

Espacio de estados para validar estados, especificado como una subclase de nav.StateSpace. Los objetos del espacio de estados proporcionados incluyen:

Mapa utilizado para validar estados, especificado como un objeto binaryOccupancyMap o occupancyMap .

Intervalo para el muestreo entre estados y la verificación de la validez del estado, especificado como un escalar numérico positivo.

Mapeo de variables de estado para xy-coordenadas en el vector de estado, especificado como un vector de dos elementos, [xIdx yIdx]. Por ejemplo, si un vector de estado se proporciona como [r p y x y z], las coordenadas xy son [4 5].

Funciones del objeto

copyCrear una copia profunda del objeto del validador de estado
isStateValidComprobar si el estado es válido
isMotionValidComprobar si la ruta entre estados es válida

Ejemplos

contraer todo

Este ejemplo muestra cómo validar rutas a través de un entorno.

Cargar mapas de ejemplo. Utilice el mapa simple para crear un mapa de ocupación binario.

load exampleMaps.mat
map = occupancyMap(simpleMap);
show(map)

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

Especifique una ruta aproximada a través del mapa.

path = [2 2 pi/2; 10 15 0; 17 8 -pi/2];
hold on
plot(path(:,1),path(:,2),"--o")

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 2 objects of type image, line.

Cree un validador de estado utilizando la definición stateSpaceSE2 . Especifique el mapa y la distancia para interpolar y validar segmentos de ruta.

validator = validatorOccupancyMap(stateSpaceSE2);
validator.Map = map;
validator.ValidationDistance = 0.1;

Compruebe que los puntos de la ruta sean estados válidos. Los tres puntos están en el espacio libre, por lo que se consideran válidos.

isValid = isStateValid(validator,path)
isValid = 3x1 logical array

   1
   1
   1

Verifique el movimiento entre cada estado de ruta secuencial. La función isMotionValid interpola a lo largo de la ruta entre estados. Si un segmento de ruta no es válido, trace el último punto válido a lo largo de la ruta.

startStates = [path(1,:);path(2,:)];
endStates = [path(2,:);path(3,:)];
    for i = 1:2
        [isPathValid, lastValid] = isMotionValid(validator,startStates(i,:),endStates(i,:));
        if ~isPathValid
            plot(lastValid(1),lastValid(2),'or')
        end
    end
hold off

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line. One or more of the lines displays its values using only markers

Capacidades ampliadas

Historial de versiones

Introducido en R2019b