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.

Creador de mapas SLAM

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

Descripción

La app SLAM Map Builder carga escaneos LIDAR registrados y datos de sensores de odometría para construir una cuadrícula de ocupación 2-D 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 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 espacio de trabajo, Import > Import from workspace. Seleccione las variables Scans y Poses utilizando los menús desplegables provistos. 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 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 construcció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 pose relativa del marco 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 cuadro 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 su mapa, haga clic en Sync para actualizar todas las poses en el mapa escaneado. Las dos opciones bajo Sync son Sync, que busca nuevos cierres de bucle, o Sync Fast, que omite la búsqueda de cierres de bucle y solo 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 espacio de trabajo. El mapa se genera como una cuadrícula de ocupación probabilística 2-D en un objeto occupancyMap.


Open Session


Save Session

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

SLAM Map Builder app

Abrir la aplicación Creador de mapas SLAM

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

  • Ventana de comandos MATLAB: Ingresa slamMapBuilder

Ejemplos

expandir todo

La app SLAM Map Builder le ayuda a construir 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 gráfico de poses. Este ejemplo le 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 espacio 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 Aplicaciones, en ROBÓTICA Y SISTEMAS AUTÓNOMOS, haga clic en Generador de mapas SLAM.

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

slamMapBuilder

Importar escaneos Lidar

Haga clic en Importar > Importar desde el espacio de trabajo 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 Escaneos.

En la barra de herramientas, establezca Disminuir resolución (%) 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 Aplicar.

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 Configuración SLAM. Los parámetros deben ajustarse según las especificaciones de su sensor, el entorno y su aplicación. Para este ejemplo, aumente el Umbral de cierre de bucle 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 gráfico de pose se optimiza para tener en cuenta la deriva.

Construye el mapa

Después de filtrar sus datos y configurar los ajustes del algoritmo SLAM, haga clic en Construir. 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 traza en el mismo mapa de escaneo. Las coincidencias de escaneo incremental se muestran en el panel Coincidencia incremental. Cada vez que se detecta un cierre de bucle, el panel Cierre de bucle muestra los dos escaneos superpuestos uno sobre el otro.

Ajustar coincidencias de escaneo o cierres de bucle

En cualquier momento durante el proceso de construcción, si nota que el mapa está distorsionado o que una coincidencia incremental o un cierre de bucle se ven extraños, haga clic en Pausa para seleccionar escaneos para 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 Coincidencia incremental o Cierre de bucle 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 Cierre de bucle. Esto abre una pestaña para modificar la pose relativa del cierre del bucle.

Para ignorar por completo el cierre del bucle, haga clic en Ignorar. 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 Aceptar 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 Sincronizar 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, debería ver 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 occupancyMap. Exporte el mapa al espacio 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 marco 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 puedes guardar una sesión de la app SLAM Map Builder usando el botón Guardar sesión. La app escribe el estado actual de la app en un archivo .mat que se puede cargar más tarde usando Abrir sesión.

Ejemplos relacionados

Parámetros

expandir todo

Escaneos Lidar para importar desde el espacio de trabajo, especificados como un arreglo de celdas de N elementos de objetos lidarScan.

Plantea 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

expandir todo

slamMapBuilder(bag) abre la app SLAM Map Builder e importa el archivo de registro de 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 su rosbag.

slamMapBuilder(sessionFile) abre la app SLAM Map Builder desde un archivo de sesión guardado llamado sessionFile. Un archivo de sesión de app se crea a través del 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 comenzar a construir el mapa.

slamMapBuilder(scans,poses) abre la app SLAM Map Builder e importa los escaneos y 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 comenzar a construir el mapa.

Más acerca de

expandir todo

Historial de versiones

Introducido en R2019b

Consulte también

Funciones

Objetos