Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Cuadrículas de ocupación

Visión general

Las cuadrículas de ocupación se utilizan para representar un espacio de trabajo de robot como una cuadrícula discreta. La información sobre el medio ambiente se puede recopilar de sensores en tiempo real o cargarse a partir de conocimientos previos. Los buscadores de alcance láser, los sensores de protuberancias, las cámaras y los sensores de profundidad se utilizan comúnmente para encontrar obstáculos en el entorno de su robot.

Las cuadrículas de ocupación se utilizan en algoritmos de robótica, como la planificación de rutas (ver o ).mobileRobotPRMplannerRRT (Navigation Toolbox) Se utilizan en aplicaciones de mapeo para integrar la información del sensor en un mapa discreto, en la planificación de rutas para encontrar rutas libres de colisiones y para localizar robots en un entorno conocido (ver o ).monteCarloLocalization (Navigation Toolbox)matchScans (Navigation Toolbox) Puede crear mapas con diferentes tamaños y resoluciones para adaptarse a su aplicación específica.

Para los mapas de ocupación 3D, véase .occupancyMap3D (Navigation Toolbox)

Para cuadrículas de ocupación 2D, hay dos representaciones:

Una cuadrícula de ocupación binaria utiliza valores para representar el espacio de trabajo ocupado (obstáculos) y los valores para representar el espacio de trabajo libre.truefalse Esta cuadrícula muestra dónde están los obstáculos y si un robot puede moverse a través de ese espacio. Utilice una cuadrícula de ocupación binaria si el tamaño de la memoria es un factor en la aplicación.

Una cuadrícula de ocupación de probabilidad utiliza valores de probabilidad para crear una representación de mapa más detallada. Esta representación es el método preferido para utilizar cuadrículas de ocupación. Esta cuadrícula se conoce comúnmente como simplemente una cuadrícula de ocupación. Cada celda de la cuadrícula de ocupación tiene un valor que representa la probabilidad de ocupación de esa celda. Los valores cercanos a 1 representan una alta certeza de que la celda contiene un obstáculo. Los valores cercanos a 0 representan la certeza de que la celda no está ocupada y libre de obstáculos. Los valores probabilísticos pueden dar una mejor fidelidad de los objetos y mejorar el rendimiento de ciertas aplicaciones de algoritmo.

Las cuadrículas de ocupación binaria y de probabilidad comparten varias propiedades y detalles del algoritmo. Las coordenadas de cuadrícula y palabra se aplican a ambos tipos de cuadrículas de ocupación. La función de inflación también se aplica a ambas cuadrículas, pero cada cuadrícula la implementa de forma diferente. Los efectos de la representación de las cuotas de registro y la saturación de probabilidad se aplican únicamente a las cuadrículas de ocupación de probabilidad.

Coordenadas mundiales, de cuadrícula y locales

Al trabajar con cuadrículas de ocupación en , puede utilizar coordenadas mundiales, locales o de cuadrícula.MATLAB®

El marco de referencia absoluto en el que opera el robot se conoce como la cuadrícula de ocupación.marco mundial La mayoría de las operaciones se realizan en el marco del mundo, y es la selección predeterminada cuando se utilizan funciones en esta caja de herramientas.MATLAB Las coordenadas mundiales se utilizan como un marco de coordenadas absolutas con un origen fijo y los puntos se pueden especificar con cualquier resolución. Sin embargo, todas las ubicaciones se convierten en ubicaciones de cuadrícula debido a los límites de resolución y almacenamiento de datos en el propio mapa.

Se refiere al marco egocéntrico de un vehículo que navega por el mapa.marco local Las propiedades y definen el origen de la cuadrícula en coordenadas locales y la ubicación relativa del marco local en las coordenadas universales.GridOriginInLocalLocalOriginInWorld Puede ajustar este marco local mediante la función.move Para ver un ejemplo utilizando el marco local como mapa egocéntrico para emular un vehículo que se mueve y envía obstáculos locales, véase .Create Egocentric Occupancy Maps Using Range Sensors (Navigation Toolbox)

Las coordenadas de cuadrícula definen la resolución real de la cuadrícula de ocupación y las ubicaciones finitas de los obstáculos. El origen de las coordenadas de cuadrícula se encuentra en la esquina superior izquierda de la cuadrícula, con la primera ubicación con un índice de .(1,1) Sin embargo, la propiedad de la cuadrícula de ocupación en define la esquina inferior izquierda de la cuadrícula en coordenadas mundiales.GridLocationInWorldMATLAB Al crear un objeto de cuadrícula de ocupación, las propiedades como y se definen mediante la entrada , , y .XWorldLimitsYWorldLimitswidthheightresolution Esta figura muestra una representación visual de estas propiedades y la relación entre las coordenadas de mundo y cuadrícula.

Inflación de coordenadas

Tanto las cuadrículas de ocupación binaria como normal tienen una opción para inflar obstáculos. Esta inflación se utiliza para añadir un factor de seguridad en los obstáculos y crear zonas de amortiguación entre el robot y el obstáculo en el medio ambiente. La función de un objeto de cuadrícula de ocupación convierte el especificado en el número de celdas redondeadas desde el valor.inflateradiusresolution*radius Cada algoritmo utiliza este valor de celda por separado para modificar los valores alrededor de los obstáculos.

Cuadrícula de ocupación binaria

La función toma cada celda ocupada y la infla directamente agregando espacio ocupado alrededor de cada punto.inflate Este ejemplo de inflación básica ilustra cómo se utiliza el valor de radio.

Inflar obstáculos en una cuadrícula de ocupación binaria

Este ejemplo muestra cómo crear el mapa, establecer las ubicaciones de obstáculos e inflarlo por un radio de 1 m. Las gráficas adicionales de la figura ayudan a ilustrar la inflación y el cambio debido a la conversión a ubicaciones de cuadrícula.

Crear cuadrícula de ocupación binaria. Ajuste la ocupación de la posición [5,5].

map = binaryOccupancyMap(10,10,5); setOccupancy(map,[5 5], 1);

Inflar los espacios ocupados en el mapa por 1m.

inflate(map,1); show(map)

Trazar la ubicación original, convertir la posición de la cuadrícula y dibujar el círculo original. Se puede ver en esta gráfica, que el centro de cuadrícula es [4.9 4.9], que se desplaza desde la ubicación [5 5]. Un círculo de 1 m se dibuja desde allí y observe que las celdas que tocan este círculo están marcadas como ocupadas. La figura se acerca al área relevante.

hold on theta = linspace(0,2*pi); x = 4.9+cos(theta); % x circle coordinates y = 4.9+sin(theta); % y circle coordinates plot(5,5,'*b','MarkerSize',10) % Original location plot(4.9,4.9,'xr','MarkerSize',10) % Grid location center plot(x,y,'-r','LineWidth',2); % Circle of radius 1m. axis([3.6 6 3.6 6]) ax = gca; ax.XTick = [3.6:0.2:6]; ax.YTick = [3.6:0.2:6]; grid on legend('Original Location','Grid Center','Inflation')

Como puede ver en la figura anterior, incluso las celdas que apenas se superponen con el radio de inflación se etiquetan como ocupadas.

Consulte también

| (Navigation Toolbox) | (Navigation Toolbox)

Temas relacionados