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.

lidarScan

Crear un objeto para almacenar el escaneo LiDAR 2D

Desde R2019b

Descripción

Un objeto lidarScan contiene datos para un único escaneo lidar 2-D (detección de luz y alcance). El escaneo lidar es un escaneo láser para un plano 2-D con distancias (Ranges) medidas desde el sensor hasta obstáculos en el entorno en ángulos específicos (Angles). Utilice este objeto de escaneo láser como entrada para otros algoritmos robóticos como matchScans, controllerVFH o monteCarloLocalization.

Creación

Descripción

ejemplo

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

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

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

Propiedades

expandir todo

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

Tipos de datos: single | double

Ángulo de las lecturas de alcance de LiDAR, especificadas como un vector. Este vector tiene la misma longitud que Ranges y los elementos del vector se miden en radianes. Los ángulos se miden en el sentido contrario a las agujas del reloj alrededor del eje positivo z.

Tipos de datos: single | double

Coordenadas cartesianas de lecturas lidar, devueltas como una matriz [x y] . En el marco de coordenadas lidar, el x positivo está hacia adelante y el y positivo está hacia la izquierda.

Tipos de datos: single | double

Número de lecturas de LiDAR, devuelto como un escalar. Este escalar también es igual a la longitud de los vectores Ranges y Angles o al número de filas en Cartesian.

Tipos de datos: double

Funciones del objeto

plotMostrar lecturas de escaneo láser o lidar
removeInvalidDataEliminar datos de rango y ángulo no válidos
transformScanTransformar el escaneo láser según la pose relativa

Ejemplos

contraer todo

Especifique los datos de LiDAR como vectores de alcances y ángulos. Estos valores incluyen lecturas fuera del alcance de los 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 alcances y los ángulos. Represente todos los puntos del escaneo LiDAR.

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

Figure contains an axes object. The axes object with title LiDAR Scan, xlabel X, ylabel Y contains a line object which displays its values using only markers.

Elimine los puntos no válidos en función de un alcance 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')

Figure contains an axes object. The axes object with title LiDAR Scan, xlabel X, ylabel Y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent All Points, Valid Points.

Cree un objeto lidarScan . Especifique los alcances y los ángulos como vectores.

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

Traduzca el escaneo láser mediante un desplazamiento [x y] de (0.5,0.2).

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

Gire el escaneo láser 20 grados.

rotateScan = transformScan(refScan,[0,0,deg2rad(20)]);

Cree un escaneo lidar de referencia usando lidarScan (Robotics System Toolbox). Especifique rangos y ángulos como vectores.

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

Usando la función transformScan (Robotics System Toolbox) , genere un segundo escaneo LIDAR en un desplazamiento x,y de (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 transformScan para alinear los escaneos transformando el segundo escaneo en el cuadro del primer escaneo usando la diferencia de pose relativa. Traza tanto los escaneos originales como los escaneos 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

Figure contains 2 axes objects. Axes object 1 with title Original Scans, xlabel X, ylabel Y contains 2 objects of type line. One or more of the lines displays its values using only markers Axes object 2 with title Aligned Scans, xlabel X, ylabel Y contains 2 objects of type line. One or more of the lines displays its values using only markers

Capacidades ampliadas

Historial de versiones

Introducido en R2019b