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.

show

Escaneos de gráficas y poses de robots.

Desde R2019b

Descripción

ejemplo

show(slamObj) traza todos los escaneos agregados al input lidarSLAM superpuesto con las poses lidar en su gráfico de pose subyacente.

show(slamObj,Name,Value) especifica opciones usando Name,Value argumentos de par. Por ejemplo, "Poses","off" desactiva la visualización del gráfico de pose subyacente en slamObj.

axes = show(___) devuelve el identificador de ejes en el que se trazan los datos LIDAR SLAM utilizando cualquiera de las sintaxis anteriores.

Ejemplos

contraer todo

Utilice un objeto lidarSLAM para agregar y comparar de forma iterativa escaneos LIDAR y crear un gráfico de pose optimizado de la trayectoria del robot. Para obtener un mapa de ocupación de las poses y escaneos asociados, use la función buildMap .

Cargar datos y configurar el algoritmo SLAM

Cargue un arreglo de celdas de objetos lidarScan . Los escaneos LIDAR se recopilaron en un estacionamiento en un robot Husky® de ClearPath Robotics®. Normalmente, los escaneos LIDAR se realizan a alta frecuencia y cada escaneo no es necesario para SLAM. Por lo tanto, reduzca la muestra de los escaneos seleccionando solo cada 40 escaneos.

load garage_fl1_southend.mat scans
scans = scans(1:40:end);

Para configurar el algoritmo SLAM, especifique el rango lidar, la resolución del mapa, el umbral de cierre del bucle y el radio de búsqueda. Ajuste estos parámetros para su robot y entorno específicos. Cree el objeto lidarSLAM con estos parámetros.

maxRange = 19.2; % meters
resolution = 10; % cells per meter

slamObj = lidarSLAM(resolution,maxRange);
slamObj.LoopClosureThreshold = 360;
slamObj.LoopClosureSearchRadius = 8;

Agregar escaneos iterativamente

Usando un bucle for , agregue escaneos al objeto SLAM. El objeto utiliza la coincidencia de escaneos para comparar cada escaneo agregado con los agregados anteriormente. Para mejorar el mapa, el objeto optimiza el gráfico de pose cada vez que detecta un cierre de bucle. Cada 10 escaneos, muestra las poses y escaneos almacenados.

for i = 1:numel(scans)

    addScan(slamObj,scans{i});
    
    if rem(i,10) == 0
        show(slamObj);
    end
end

Ver mapa de ocupación

Después de agregar todos los escaneos al objeto SLAM, cree un mapa occupancyMap llamando a buildMap con los escaneos y las poses. Utilice la misma resolución de mapa y alcance máximo que utilizó con el objeto SLAM.

[scansSLAM,poses] = scansAndPoses(slamObj);
occMap = buildMap(scansSLAM,poses,resolution,maxRange);
figure
show(occMap)
title('Occupancy Map of Garage')

Argumentos de entrada

contraer todo

Objeto Lidar SLAM, especificado como un objeto lidarSLAM . El objeto contiene los parámetros del algoritmo SLAM, los datos del sensor y el gráfico de pose subyacente utilizado para construir el mapa.

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.

Antes de R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: "Poses","off"

Ejes utilizados para trazar el gráfico de pose, especificados como el par separado por comas que consta de "Parent" y un objeto Axes o UIAxes . Ver axes o uiaxes.

Muestra las poses lidar, especificadas como el par separado por comas que consta de "Poses" y "on" o "off".

Argumentos de salida

contraer todo

Ejes utilizados para trazar el mapa, devueltos como un objeto Axes o UIAxes . Ver axes o uiaxes.

Historial de versiones

Introducido en R2019b