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.

Rejillas de ocupación

Visión general

Las rejillas de ocupación se utilizan para representar un espacio de trabajo de robot como una cuadrícula discreta. La información sobre el entorno se puede recopilar de los sensores en tiempo real o cargarse desde el conocimiento previo. Los buscadores de alcance láser, los sensores de relieve, las cámaras y los sensores de profundidad se utilizan habitualmente para encontrar obstáculos en el entorno de su robot.

Las rejillas de ocupación se utilizan en algoritmos robóticos como la planificación de rutas (véase).robotics.PRM Se utilizan en la cartografía de aplicaciones para la integración de la información del sensor en un mapa discreto, en la planificación de ruta para encontrar rutas libres de colisiones y para localizar robots en un entorno conocido (ver).robotics.MonteCarloLocalization Puede crear mapas con diferentes tamaños y resoluciones para adaptarse a su aplicación específica.

las rejillas de ocupación 2-D tienen 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. Use 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 usar cuadrículas de ocupación. Esta rejilla se conoce comúnmente como simplemente una rejilla de ocupación. Cada celda de la cuadrícula de ocupación tiene un valor que representa la probabilidad de la 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 célula 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 algoritmos.

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. El método de inflación también se aplica a ambas cuadrículas, pero cada cuadrícula lo implementa de manera diferente. Los efectos de la representación de probabilidades de registro y la saturación de probabilidad se aplican únicamente a las cuadrículas de ocupación de probabilidad.

Coordenadas mundiales y de cuadrícula

Cuando trabaje con cuadrículas de ocupación, puede utilizar coordenadas de mundo o de rejilla.MATLAB®

El marco de referencia absoluto en el que opera el robot se denomina en la cuadrícula de ocupación.marco mundial La mayoría de las operaciones se realizan en el marco mundial, y es la selección predeterminada cuando se utilizan funciones en esta caja de herramientas.Robotics System Toolbox™MATLAB Las coordenadas universales se utilizan como un marco de coordenadas absoluto 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 almacenamiento y resolución de datos en el propio mapa.

Las coordenadas de la rejilla definen la resolución real de la rejilla 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 las coordenadas del mundo.GridLocationInWorldMATLAB Al crear un objeto de cuadrícula de ocupación, propiedades como y se definen por la entrada, y.XWorldLimitsYWorldLimitswidthheightresolution Esta figura muestra una representación visual de estas propiedades y la relación entre el mundo y las coordenadas de cuadrícula.

Coordenadas de cuadrícula de entradas de coordenadas universales

Al establecer las ubicaciones de ocupación, puede introducir las ubicaciones en coordenadas de cuadrícula o de mundo. Sin embargo, en función de los límites de la cuadrícula, las ubicaciones se establecen en las ubicaciones de cuadrícula más cercanas. Los bordes de la rejilla pertenecen a la ubicación de la rejilla inferior izquierda.

Mostrar cómo se interpretan las ubicaciones en la cuadrícula mediante la creación de una cuadrícula de ocupación y los puntos de ajuste ocupados por los obstáculos. A continuación, trace los puntos de entrada originales sobre el mapa para mostrar cómo se interpretan. Si algún punto dentro de la celda de la cuadrícula se establece como ocupado, toda la celda de la cuadrícula se establece como ocupada.

Cree un mapa de cuadrícula de ocupación y establezca ubicaciones de obstáculos.

map = robotics.BinaryOccupancyGrid(10,10,5); xy = [5 5; 4.3 4.4; 5.6 5.3]; setOccupancy(map,xy,1);

Visualice el mapa, los puntos originales y establezca los límites de los ejes para acercar. Puede ver cómo los puntos de borde afectan a todo el estado de ubicación de la cuadrícula.

show(map); hold on plot(xy(:,1),xy(:,2),'xr','MarkerSize', 20) grid on set(gca,'XTick',0:0.2:10,'YTick',0:0.2:10) xlim([4 6]) ylim([4 6])

Inflación de coordenadas

Tanto las rejillas de ocupación binarias como las normales 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. El método 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

el robotics.BinaryOccupancyGrid.inflate método toma cada celda ocupada y la infla directamente añadiendo espacio ocupado alrededor de cada punto. Este ejemplo de inflación básica ilustra cómo se utiliza el valor de radio.

Inflar obstáculos en una rejilla de ocupación binaria

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

Crear rejilla de ocupación binaria. Fijar ocupación de la posición [5, 5].

map = robotics.BinaryOccupancyGrid(10,10,5); setOccupancy(map,[5 5], 1);

Inflar espacios ocupados en el mapa por 1m.

inflate(map,1); show(map)

Trace la ubicación original, la posición de rejilla convertida y dibuje el círculo original. Se puede ver en esta gráfica, que el centro de la rejilla es [4,9 4,9], que se desplaza desde la ubicación [5 5]. Desde allí se dibuja un círculo de 1m y se observa que las celdas que tocan este círculo están marcadas como ocupadas. La figura se amplía 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 se puede ver en la figura anterior, incluso las celdas que apenas se superponen con el radio de inflación se etiquetan como ocupadas.

Rejillas de ocupación

el robotics.OccupancyGrid.inflate método utiliza el radio de inflación para realizar.probabilistic inflation La inflación probabilística actúa como un operador máximo local y encuentra los valores de probabilidad más altos para las celdas cercanas. El método utiliza esta definición para inflar los valores de probabilidad más altos en toda la cuadrícula.inflate Esta inflación aumenta el tamaño de cualquier ubicación ocupada y crea una zona de amortiguación para que los robots naveguen alrededor de los obstáculos. Este ejemplo muestra cómo funciona la inflación con un rango de valores de probabilidad.

Inflar obstáculos en una rejilla de ocupación

Este ejemplo muestra cómo el método inflar realiza la inflación probabilística en los obstáculos para inflar su tamaño y crear una zona tampón para las áreas con una mayor probabilidad de obstáculos.

Crea un mapa vacío de 10m x 10m.

map = robotics.OccupancyGrid(10,10,10);

Actualizar la ocupación de ubicaciones del mundo con valores específicos en.pvalues

map = robotics.OccupancyGrid(10,10,10); x = [1.2; 2.3; 3.4; 4.5; 5.6]; y = [5.0; 4.0; 3.0; 2.0; 1.0];  pvalues = [0.2 0.4 0.6 0.8 1];  updateOccupancy(map,[x y],pvalues) figure show(map)

Inflar áreas ocupadas por un radio dado. Los valores de ocupación más grandes se escriben en valores más pequeños. Puede copiar el mapa de antemano para revertir los cambios no deseados.

savedMap = copy(map); inflate(map,0.5) figure show(map)

Representación de probabilidades de registro de valores de probabilidad

Al utilizar rejillas de ocupación con valores de probabilidad, el objetivo es estimar la probabilidad de ubicaciones de obstáculos para su uso en aplicaciones de robótica en tiempo real. La clase utiliza una representación de los valores de probabilidad para cada celda.OccupancyGridlog-odds Cada valor de probabilidad se convierte en un valor de cuota de registro correspondiente para el almacenamiento interno. El valor se convierte de nuevo a la probabilidad cuando se accede. Esta representación actualiza eficazmente los valores de probabilidad con el menor número de operaciones. Por lo tanto, puede integrar rápidamente los datos del sensor en el mapa.

La representación de cuotas de registro utiliza la siguiente ecuación:

Nota

Los valores de las cuotas de registro se almacenan como valores.int16 Este tipo de datos limita la resolución de los valores de probabilidad a ± 0,001, pero mejora considerablemente el tamaño de la memoria y permite la creación de mapas más grandes.

La saturación de probabilidad

Al actualizar una cuadrícula de ocupación con observaciones utilizando la representación de cuotas de registro, los valores tienen un rango de – ∞ a ∞. Este rango significa que si un robot observa una ubicación como una puerta cerrada varias veces, el valor de las probabilidades de registro para esta ubicación se vuelve innecesariamente alto, o la probabilidad de valor se satura. Si la puerta se abre, el robot debe observar la puerta abierta muchas veces antes de que la probabilidad cambie de ocupada a libre. En entornos dinámicos, desea que el mapa reaccione a los cambios para realizar un seguimiento más preciso de los objetos dinámicos.

Para evitar esta saturación, actualice la propiedad, que limita los valores de probabilidad mínimo y máximo permitidos al incorporar varias observaciones.ProbabilitySaturation Esta propiedad es un límite superior e inferior en los valores de las cuotas de registro y permite que el mapa se actualice rápidamente a los cambios en el entorno. Los valores mínimos y máximos predeterminados de los límites de saturación son.[0.001 0.999] Para entornos dinámicos, los valores sugeridos son al menos.[0.12 0.97] Considere la posibilidad de modificar este intervalo si el mapa no se actualiza con la suficiente rapidez para varias observaciones.

Consulte también

| | | | | |