Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la versión original en inglés.

app SLAM Map Builder

Cree mapas de cuadrícula 2D utilizando SLAM basado en LiDAR

Descripción

La app SLAM Map Builder carga los escaneos LiDAR grabados y los datos del sensor de odometría para construir una cuadrícula de ocupación 2D utilizando algoritmos de localización y mapeo simultáneos (SLAM). La coincidencia de escaneo incremental alinea y superpone escaneos para construir el mapa. La detección de cierre de bucle se ajusta a la deriva de la odometría del vehículo detectando ubicaciones visitadas previamente y ajustando el mapa general. A veces, el algoritmo de coincidencia de escaneo y la detección de cierre de bucle requieren un ajuste manual. Utilice la app para alinear manualmente los escaneos y modificar los cierres de bucles para mejorar la precisión general del mapa. También puede ajustar la configuración del algoritmo SLAM para mejorar la creación automática de mapas.

Para usar la app:


Import

Para cargar los archivos de registro de rosbag, seleccione Import > Import from rosbag. Seleccione el archivo rosbag y haga clic en Open. Esto abre la pestaña Import. Para obtener más información, consulte Importar y filtrar un rosbag.

Para cargar datos desde el área de trabajo, Import > Import from workspace. Seleccione las variables Scans y Poses utilizando los menús desplegables proporcionados. También puede especificar las variables en la función slamMapBuilder. Consulte Uso programático.


SLAM Settings

Utilice SLAM Settings para ajustar la configuración del algoritmo SLAM. Se proporcionan valores predeterminados, pero sus sensores y datos específicos pueden requerir un ajuste de estas configuraciones. El valor más importante a ajustar es el Loop Closure Threshold. Para obtener más información, consulte Ajustar la configuración de SLAM.


Build

Haga clic en Build para comenzar el proceso de creación del mapa SLAM. El proceso de construcción alinea los escaneos en el mapa mediante coincidencias de escaneo incrementales, identifica cierres de bucles al visitar ubicaciones anteriores y ajusta las poses. Haga clic en Pause en cualquier momento durante el proceso de creación del mapa para alinear manualmente los escaneos incrementales o modificar los cierres de bucle.


Incremental Match


Loop Closure

Haga clic en Incremental Match para modificar la posición relativa del fotograma seleccionado actualmente y alinear el escaneo con el escaneo anterior. Haga clic en Loop Closure para modificar o ignorar el cierre de bucle detectado para el fotograma actual. Utilice el control deslizante en la parte inferior para retroceder a áreas donde la coincidencia de escaneos o los cierres de bucles no son precisos. Puede modificar cualquier número de escaneos o cierres de bucle. Para obtener más información, consulte Modificar escaneos de incremento y cierres de bucle.


Sync

Después de modificar el mapa, haga clic en Sync para actualizar todas las poses en el mapa de escaneo. Las dos opciones que aparecen en Sync son Sync, que busca nuevos cierres de bucle, o Sync Fast, que omite la búsqueda de cierres de bucle y simplemente actualiza el mapa de escaneo. Para obtener más información, consulte Sincronizar el mapa.


Export to Occupancy Grid

Cuando esté satisfecho con el aspecto del mapa, haga clic en Export to Occupancy Grid para exportar el mapa a un archivo.m o guardarlo en el área de trabajo. El mapa se genera como una cuadrícula de ocupación probabilística bidimensional en un objeto occupancyMap.


Open Session


Save Session

Puede abrir sesiones de app existentes que haya guardado usando Open Session. Cuando esté en la pestaña Map Builder, puede guardar el progreso en un archivo .m usando Save Session.

SLAM Map Builder app

Abrir la aplicación app SLAM Map Builder

  • Barra de herramientas de MATLAB®: En la pestaña Apps, debajo de ROBOTICS AND AUTONOMOUS SYSTEMS, haga clic en SLAM Map Builder.

  • Ventana de comandos de MATLAB: Ingrese slamMapBuilder

Ejemplos

expandir todo

La app SLAM Map Builder ayuda a crear una cuadrícula de ocupación a partir de escaneos LiDAR utilizando algoritmos de localización y mapeo simultáneos (SLAM). El mapa se construye estimando poses mediante la comparación de escaneos y usando cierres de bucle para optimizar el grafo de poses. Este ejemplo muestra el flujo de trabajo para cargar un rosbag de datos de escaneo LiDAR, filtrar los datos y crear el mapa. Ajuste el mapa de escaneo ajustando las coincidencias de escaneo incrementales y modificando los cierres de bucle.

Cargar datos de escaneo LiDAR

Cargue el archivo MAT de ejemplo en el área de trabajo, que contiene una variable, scans, como un arreglo de celdas de objetos lidarScan.

load slamLidarScans.mat

Abre la app

En la pestaña Apps, en ROBOTICS AND AUTONOMOUS SYSTEMS, haga clic en SLAM Map Builder.

También puede llamar a la función slamMapBuilder:

slamMapBuilder

Importar escaneos LiDAR

Haga clic en Import > Import from workspace para cargar los escaneos. Los datos almacenados como rosbag se pueden cargar con una licencia de ROS Toolbox.

Seleccione la variable scans en el menú desplegable Scans.

En la barra de herramientas, configure Downsample to (%) en 10. Reducir la resolución de los datos de manera uniforme para reducir el tiempo de cálculo del algoritmo SLAM. Para este ejemplo, el 10% es cada cinco escaneos. Haga clic en Apply.

Utilice el control deslizante o las teclas de flecha en la parte inferior para obtener una vista previa de los escaneos.

Una vez que haya terminado de importar, haga clic en Cerrar.

Ajustar la configuración de SLAM

El algoritmo SLAM se puede ajustar mediante el cuadro de diálogo SLAM Settings. Los parámetros deben ajustarse según las especificaciones de su sensor, el entorno y su aplicación. Para este ejemplo, aumente Loop Closure Threshold de 200 a 300. Este umbral aumentado disminuye la probabilidad de aceptar y utilizar un cierre de bucle detectado. Establezca el Intervalo de optimización en 10. Con cada décimo cierre de bucle aceptado, el grafo de pose se optimiza para tener en cuenta la deriva.

Construir el mapa

Después de filtrar sus datos y configurar los ajustes del algoritmo SLAM, haga clic en Build. La app comienza a procesar escaneos para crear el mapa. Debería ver cómo el control deslizante avanza y los escaneos se superponen en el mapa. La trayectoria estimada del robot se representa en el mismo mapa de escaneo. Las coincidencias de escaneo incremental se muestran en el panel Incremental Match. Cuando se detecta el cierre de un bucle, el panel Loop Closure muestra los dos escaneos superpuestos.

Ajustar coincidencias de escaneo o cierres de bucle

En cualquier momento durante el proceso de compilación, si observa que el mapa está distorsionado o que una coincidencia incremental o el cierre de un bucle no se ven bien, haga clic en Pause para seleccionar los escaneos que se van a ajustar. También puede modificar los escaneos al final del proceso de compilación. Navegue usando las teclas de flecha o el control deslizante hasta el punto del archivo donde ocurre la distorsión por primera vez. Haga clic en los botones Incremental Match o Loop Closure para ajustar las poses de escaneo que se muestran actualmente. En esta sección, el mal cierre del bucle es artificial y sólo tiene fines ilustrativos.

Haga clic en el botón Loop Closure. Esto abre una pestaña para modificar la pose relativa del cierre del bucle.

Para ignorar completamente el cierre del bucle, haga clic en Ignore. De lo contrario, modifique manualmente la pose relativa del escaneo hasta que los escaneos se alineen.

Haga clic en Pan Scan o Rotate Scan, luego haga clic y arrastre en la figura para alinear los dos escaneos. Haga clic en Accept cuando haya terminado. Puede hacer esto para múltiples escaneos.

Después de modificar las poses de escaneo para coincidencias incrementales y cierres de bucle, haga clic en Sync para aplicar los cambios. SyncFast actualiza el mapa sin buscar nuevos cierres de bucle y reduce el tiempo de cálculo si ya ha procesado todos los escaneos.

Exportar cuadrícula de ocupación

Una vez que haya sincronizado sus cambios y haya terminado de construir el mapa, se ve un mapa escaneado completamente superpuesto con la trayectoria del robot.

Haga clic en Exportar cuadrícula de ocupación para obtener un mapa de ocupación final de su entorno como un objeto . Exporta el mapa al área de trabajo o a un archivo MAT. Puede crear un mapa a partir de un subconjunto de escaneos desplazándose hacia atrás hasta el fotograma deseado antes de exportar y seleccionando Hasta el escaneo seleccionado actualmente.

Mostrar el mapa de ocupación almacenado.

load("slamMapBuilderOccMap.mat")
show(myOccMap)
title("Built Occupancy Map")

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

También puede guardar una sesión de la app SLAM Map Builder usando el botón Save Session. La app escribe el estado actual en un archivo .mat que se puede cargar posteriormente utilizando Open Session.

Ejemplos relacionados

Parámetros

expandir todo

Escaneos LiDAR para importar desde el área de trabajo, especificados como un arreglo de celdas de N elementos de objetos lidarScan.

Poses a importar desde el espacio de trabajo, especificado como una matriz de N por 3 o un arreglo de celdas de N elementos de vectores fila de tres elementos. Cada fila de la matriz de N por 3 y cada vector fila de tres elementos del arreglo de celdas representan una pose con la forma [x y theta]. x y y comprenden la posición en metros y theta es la orientación en radianes.

Ejemplo: [0 0 0; 1 1 pi/4; 2 2 pi/2]

Ejemplo: {[0 0 0],[1 1 pi/4],[2 2 pi/2]}

Uso programático

slamMapBuilder(bag) abre la app SLAM Map Builder e importa el archivo de registro rosbag especificado en bag, un objeto BagSelection creado usando la función rosbag (ROS Toolbox). La app se abre en la pestaña Import para filtrar los datos del sensor en rosbag.

slamMapBuilder(sessionFile) abre la app SLAM Map Builder desde un archivo de sesión guardado llamado sessionFile. Se crea un archivo de sesión de la app mediante el botón Save Session en la barra de herramientas de la app.

slamMapBuilder(scans) abre la app SLAM Map Builder e importa los escaneos especificados en scans, un arreglo de celdas de objetos lidarScan. La app asume que ha filtrado previamente sus escaneos y omite el proceso de importación. Haga clic en Build para empezar a construir el mapa.

slamMapBuilder(scans,poses) abre la app SLAM Map Builder e importa los escaneos y las poses. scans se especifica como un arreglo de celdas de objetos lidarScan. poses es una matriz de vectores [x y theta] que corresponden a las poses de scans. La app asume que ha filtrado previamente sus escaneos y omite el proceso de importación. Haga clic en Build para empezar a construir el mapa.

Más acerca de

expandir todo

Historial de versiones

Introducido en R2019b

Consulte también

Funciones

Objetos