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.

lidarScan

Crear objeto para almacenar el escaneo LiDAR 2-D

Descripción

Un objeto contiene datos para una sola exploración LiDAR 2-D (detección de luz y alcance).lidarScan El escaneo LiDAR es un escaneo láser para un plano 2-D con distancias () medidos desde el sensor a obstáculos en el entorno en ángulos específicos ().RangesAngles Utilice este objeto de escaneo láser como una entrada a otros algoritmos de robótica como,matchScans robotics.VectorFieldHistogramO robotics.MonteCarloLocalization.

Creación

Descripción

ejemplo

scan = lidarScan(ranges,angles) crea un objeto a partir de la y, que representan los datos recopilados desde un sensor LiDAR.lidarScanrangesangles Las entradas y son vectores de la misma longitud y se establecen directamente en las propiedades y.rangesanglesRangesAngles

scan = lidarScan(cart) crea un objeto utilizando las coordenadas cartesianas de entrada como una matriz de-por-2.lidarScann La propiedad se establece directamente a partir de esta entrada.Cartesian

scan = lidarScan(scanMsg) crea un objeto a partir de un objeto de mensaje ROS.lidarScanLaserScan

Propiedades

expandir todo

Lecturas de rango de LiDAR, especificadas como un vector. Este vector tiene la misma longitud que, y los elementos vectoriales se miden en metros.Angles

Tipos de datos: single | double

Ángulo de lecturas de rango desde LiDAR, especificado como un vector. Este vector tiene la misma longitud que, y los elementos vectoriales se miden en radianes.Ranges Los ángulos se miden en sentido antihorario alrededor del eje positivo.z

Tipos de datos: single | double

Coordenadas cartesianas de las lecturas LiDAR, devueltas como una matriz.[x y] En el marco de coordenadas LiDAR, positivo es hacia adelante y positivo es a la izquierda.xy

Tipos de datos: single | double

Número de lecturas LiDAR, devueltas como un escalar. Este escalar también es igual a la longitud de los y vectores o el número de filas en.RangesAnglesCartesian

Tipos de datos: double

Funciones del objeto

plot
removeInvalidDataRemove invalid range and angle data
transformScanTransform laser scan based on relative pose

Ejemplos

contraer todo

Especifique los datos LiDAR como vectores de rangos y ángulos. Estos valores incluyen lecturas fuera de la gama de sensores.

x = linspace(-2,2); ranges = abs((1.5).*x.^2 + 5); ranges(45:55) = 3.5; angles = linspace(-pi/2,pi/2,numel(ranges));

Cree un escaneo LiDAR especificando los rangos y ángulos. Trace todos los puntos del escaneo LiDAR.

scan = lidarScan(ranges,angles); plot(scan)

Quite los puntos no válidos en función de un intervalo mínimo y máximo especificado.

minRange = 0.1; maxRange = 7; scan2 = removeInvalidData(scan,'RangeLimits',[minRange maxRange]); hold on plot(scan2) legend('All Points','Valid Points')

Cree un análisis LiDAR de referencia utilizando.lidarScan Especifique rangos y ángulos como vectores.

refRanges = 5*ones(1,300); refAngles = linspace(-pi/2,pi/2,300);  refScan = lidarScan(refRanges,refAngles);

Mediante la función, genere un segundo escaneo LiDAR en un desplazamiento de.transformScanx,y(0.5,0.2)

currScan = transformScan(refScan,[0.5 0.2 0]);

Haga coincidir el escaneo de referencia y el segundo escaneo para estimar la diferencia de pose entre ellos.

pose = matchScans(currScan,refScan);

Utilice la función para alinear los escaneos transformando la segunda exploración en el fotograma del primer escaneo utilizando la diferencia de pose relativa.transformScan Trace los escaneos originales y los escaneados alineados.

currScan2 = transformScan(currScan,pose);  subplot(2,1,1); hold on plot(currScan) plot(refScan) title('Original Scans') hold off  subplot(2,1,2); hold on plot(currScan2) plot(refScan) title('Aligned Scans') xlim([0 5]) hold off

Capacidades ampliadas

Consulte también

| | | |

Introducido en R2017b