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.

transformScan

Transformar el escaneo láser según la pose relativa

Descripción

ejemplo

transScan = transformScan(scan,relPose) transforma el escaneo láser especificado en scan utilizando la pose relativa especificada, relPose.

ejemplo

[transRanges,transAngles] = transformScan(ranges,angles,relPose) transforma el escaneo láser especificado en ranges y angles utilizando la pose relativa especificada, relPose.

Ejemplos

contraer todo

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)]);

Utilice la función matchScans para encontrar la transformación relativa entre dos escaneos lidar. Luego, transforme el segundo escaneo en el marco de coordenadas del primer escaneo.

Cargue un par de escaneos LIDAR como un par de objetos lidarScan . Son dos escaneos de la misma escena con un cambio de pose relativa.

load tb3_scanPair.mat
plot(s1)
hold on
plot(s2)
hold off

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

La pose relativa se estima a partir de un sensor de odometría y se proporciona como una variable, initGuess, como [x y theta].

disp(initGuess)
   -0.7000    0.1500   -0.3254

Utilice la coincidencia de escaneo para encontrar la pose relativa entre los dos escaneos láser y especifique la suposición inicial de la pose.

pose = matchScans(s2,s1,"InitialPose",initGuess);
disp(pose)
   -0.7213    0.1160   -0.2854

Transforme el segundo escaneo al marco de coordenadas del primer escaneo. Traza los dos escaneos para ver que ahora se superponen.

s2Transformed = transformScan(s2,pose);
plot(s1)
hold on
plot(s2Transformed)
hold off

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

Argumentos de entrada

contraer todo

Lecturas de escaneo Lidar, especificadas como un objeto lidarScan .

Valores de rango de los datos de escaneo, especificados como un vector en metros. Estos valores de rango son distancias desde un sensor en angles especificado. El vector debe tener la misma longitud que el vector angles correspondiente.

Valores de ángulo de datos de escaneo, especificados como un vector en radianes. Estos valores de ángulo son los ángulos específicos del ranges especificado. El vector debe tener la misma longitud que el vector ranges correspondiente.

Pose relativa del escaneo actual, especificada como [x y theta], donde [x y] es la traslación en metros y theta es la rotación en radianes.

Argumentos de salida

contraer todo

Lecturas de escaneo LIDAR transformadas, especificadas como un objeto lidarScan .

Valores de rango del escaneo transformado, devueltos como un vector en metros. Estos valores de rango son distancias desde un sensor en transAngles especificado. El vector tiene la misma longitud que el vector transAngles correspondiente.

Valores de ángulo del escaneo transformado, devueltos como un vector en radianes. Estos valores de ángulo son los ángulos específicos del transRanges especificado. El vector tiene la misma longitud que el vector ranges correspondiente.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2017a