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.

getOccupancy

Obtener probabilidad de ocupación de ubicaciones

Desde R2019b

Descripción

ejemplo

occVal = getOccupancy(map,xy) devuelve un arreglo de valores de probabilidad de ocupación en las ubicaciones xy en el marco mundial. Los valores cercanos a 1 representan una alta probabilidad de que la celda contenga un obstáculo. Valores cercanos a 0 representan una alta probabilidad de que la celda no esté ocupada y libre de obstáculos. Ubicaciones desconocidas, incluso fuera del mapa, devuelven map.DefaultValue.

occVal = getOccupancy(map,xy,'local') devuelve un arreglo de valores de ocupación en las ubicaciones xy en el marco local.

occVal = getOccupancy(map,ij,'grid') especifica ij índices de celdas de cuadrícula en lugar de ubicaciones de xy .

[occVal,validPts] = getOccupancy(___) genera adicionalmente un vector de elemento n de valores lógicos que indica si las coordenadas de entrada están dentro de los límites del mapa.

occMatrix = getOccupancy(map) devuelve todos los valores de ocupación en el mapa como una matriz.

occMatrix = getOccupancy(map,bottomLeft,matSize) devuelve una matriz de valores de ocupación especificando la ubicación de la esquina inferior izquierda en coordenadas mundiales y el tamaño de la matriz en metros.

occMatrix = getOccupancy(map,bottomLeft,matSize,'local') devuelve una matriz de valores de ocupación especificando la ubicación de la esquina inferior izquierda en coordenadas locales y el tamaño de la matriz en metros.

occMatrix = getOccupancy(map,topLeft,matSize,'grid') devuelve una matriz de valores de ocupación especificando la ubicación de la esquina superior izquierda en los índices de la cuadrícula y el tamaño de la matriz.

Ejemplos

contraer todo

Cree un mapa de cuadrícula de ocupación vacío.

map = occupancyMap(10,10,20);

Especifique la pose del vehículo, los alcances, los ángulos y el alcance máximo del escaneo láser.

pose = [5,5,0];
ranges = 3*ones(100,1);
angles = linspace(-pi/2,pi/2,100);
maxrange = 20;

Cree un objeto lidarScan con los rangos y ángulos especificados.

scan = lidarScan(ranges,angles);

Inserte los datos del escaneo láser en el mapa de ocupación.

insertRay(map,pose,scan,maxrange);

Muestre el mapa para ver los resultados de insertar el escaneo láser.

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.

Verifique la ocupación del lugar directamente frente al vehículo.

getOccupancy(map,[8 5])
ans = 0.7000

Agregue una segunda lectura y vea la actualización de los valores de ocupación. La lectura adicional aumenta la confianza en las lecturas. Los valores libres y ocupados se vuelven más distintos.

insertRay(map,pose,scan,maxrange);
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.

getOccupancy(map,[8 5])
ans = 0.8448

Acceda a los valores de ocupación y verifique su estado de ocupación en función de los umbrales ocupados y libres del objeto occupancyMap .

Cree una matriz y rellénela con valores. Utilice esta matriz para crear un mapa de ocupación.

p = 0.5*ones(20,20);
p(11:20,11:20) = 0.75*ones(10,10);
map = occupancyMap(p,10);

Obtén la ocupación de diferentes ubicaciones y consulta sus estados de ocupación. El estado de ocupación devuelve 0 para espacio libre y 1 para espacio ocupado. Los valores desconocidos devuelven –1.

pocc = getOccupancy(map,[1.5 1])
pocc = 0.7500
occupied = checkOccupancy(map,[1.5 1])
occupied = 1
pocc2 = getOccupancy(map,[5 5],'grid')
pocc2 = 0.5000
occupied2 = checkOccupancy(map,[5 5],'grid')
occupied2 = -1

Argumentos de entrada

contraer todo

Representación del mapa, especificada como un objeto occupancyMap . Este objeto representa el entorno del vehículo. El objeto contiene una cuadrícula matricial con valores que representan la probabilidad de ocupación de esa celda. Los valores cercanos a 1 representan una alta probabilidad de que la celda contenga un obstáculo. Valores cercanos a 0 representan una alta probabilidad de que la celda no esté ocupada y libre de obstáculos.

Coordenadas mundiales, especificadas como una matriz n por 2 de pares [x y] , donde n es el número de coordenadas mundiales.

Tipos de datos: double

Posiciones de cuadrícula, especificadas como una matriz n por 2 de pares [i j] en formato [rows cols] , donde n es el número de posiciones de la cuadrícula.

Tipos de datos: double

Ubicación de la esquina inferior izquierda de la matriz de salida en coordenadas mundiales o locales, especificada como un vector de dos elementos, [xCoord yCoord]. La ubicación está en coordenadas mundiales o locales según la sintaxis.

Tipos de datos: double

Tamaño de la matriz de salida, especificado como un vector de dos elementos, [xLength yLength] o [gridRow gridCol]. El tamaño está en coordenadas mundiales, locales o de cuadrícula según la sintaxis.

Tipos de datos: double

Ubicación de la esquina superior izquierda de la cuadrícula, especificada como un vector de dos elementos, [iCoord jCoord].

Tipos de datos: double

Argumentos de salida

contraer todo

Valores de ocupación de probabilidad, devueltos como un vector columna de la misma longitud que xy o ij.

Valores cercanos a 0 representan una alta probabilidad de que la celda no esté ocupada y libre de obstáculos.

Ubicaciones de mapa válidas, devueltas como un vector columna n por 1 de igual longitud que xy o ij. Las ubicaciones dentro del mapa devuelven un valor de 1. Las ubicaciones fuera de los límites del mapa devuelven un valor de 0.

Matriz de valores de ocupación, devuelta como matriz con tamaño igual a matSize o el tamaño de map.

Valores cercanos a 0 representan una alta probabilidad de que la celda no esté ocupada y libre de obstáculos.

Limitaciones

Los valores de ocupación tienen una resolución limitada de ±0,001. Los valores se almacenan como int16 usando una representación de probabilidades logarítmicas. Este tipo de datos limita la resolución, pero ahorra memoria al almacenar mapas grandes en MATLAB®. Al llamar a setOccupancy y luego a getOccupancy, es posible que el valor devuelto no sea igual al valor que estableció. Para obtener más información, consulte la sección de representaciones de probabilidades logarítmicas en Cuadrículas de ocupación.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2019b

Consulte también

|

Temas