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.

validatorVehicleCostmap

Validador de estado basado en mapa de costes 2-D

Descripción

El objeto validatorOccupancyMap valida estados y movimientos discretizados según el valor en un mapa de costos 2-D. validatorVehicleCostmap interpreta un área de mapa ocupada o desconocida como un estado no válido. Un área de mapa libre se interpreta como válida.

Creación

Sintaxis

Descripción

validator = validatorVehicleCostmap crea un validador de mapa de costos del vehículo asociado con un espacio de estado SE2 con configuraciones predeterminadas.

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

ejemplo

validator = validatorVehicleCostmap(stateSpace,Name,Value) especifica las propiedades Map o XYIndices utilizando el par de argumentos 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 vehicleCostmap (Automated Driving Toolbox).

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

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

Mapeo de variable de estado para la coordenada theta en el vector de estado, especificado como un entero positivo. Por ejemplo, si un vector de estado se da como [x y theta], la coordenada theta es 3.

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 costes de vehículos. Especifique un radio de inflación de 1 metro.

load exampleMaps.mat
map = vehicleCostmap(double(simpleMap));
map.CollisionChecker = inflationCollisionChecker("InflationRadius",1);
plot(map)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 2 objects of type image, patch. This object represents Inflated Areas.

Especifique una ruta aproximada a través del mapa.

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

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 3 objects of type image, patch, line. This object represents Inflated Areas.

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

validator = validatorVehicleCostmap(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 = 3×1 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 xlabel X, ylabel Y contains 4 objects of type image, patch, line. One or more of the lines displays its values using only markers This object represents Inflated Areas.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2019b