Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

lidarScan

Crea oggetto per memorizzare la scansione LiDAR 2D

Descrizione

Un oggetto lidarScan contiene dati per una singola scansione LiDAR (rilevamento della luce e misurazione della distanza) 2-D. La scansione LiDAR è una scansione laser per un piano 2D con distanze (Ranges) misurate dal sensore agli ostacoli nell'ambiente ad angoli specifici (Angles). Utilizzare questo oggetto di scansione laser come input per altri algoritmi di robotica quali matchScans, controllerVFH o monteCarloLocalization.

Creazione

Descrizione

scan =LiDARScan(ranges,angles) crea un oggetto lidarScan da ranges e angles, che rappresentano i dati raccolti da un sensore LiDAR. Gli input ranges e angles sono vettori della stessa lunghezza e vengono impostati direttamente sulle proprietà Ranges e Angles.

esempio

scan =LiDARScan(cart) crea un oggetto lidarScan utilizzando le coordinate cartesiane di input come una matrice n per 2. La proprietà Cartesian viene impostata direttamente da questo input.

scan =LiDARScan(scanMsg) crea un oggetto lidarScan da un oggetto messaggio ROS LaserScan (ROS Toolbox).

Proprietà

espandi tutto

Letture della distanza dal LiDAR, specificate come vettore in metri. Questo vettore ha la stessa lunghezza di Angles e gli elementi del vettore sono misurati in metri.

Tipi di dati: single | double

Angolo delle letture della distanza dal LiDAR, specificato come vettore. Questo vettore ha la stessa lunghezza di Ranges e gli elementi del vettore sono misurati in radianti. Gli angoli vengono misurati in senso antiorario attorno all'asse positivo z.

Tipi di dati: single | double

Coordinate cartesiane delle letture LiDAR, restituite come matrice [x y]. Nel sistema di coordinate LiDAR, x positivo è in avanti e y positivo è a sinistra.

Tipi di dati: single | double

Numero di letture LiDAR, restituito come valore scalare. Questo scalare è anche uguale alla lunghezza dei vettori Ranges e Angles o al numero di righe in Cartesian.

Tipi di dati: double

Funzioni oggetto

plotDisplay laser or lidar scan readings
removeInvalidDataRemove invalid range and angle data
transformScanTransform laser scan based on relative pose

Esempi

comprimi tutto

Specificare i dati LiDAR come vettori di intervalli e angoli. Questi valori includono letture al di fuori dell'intervallo dei sensori.

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

Crea una scansione LiDAR specificando intervalli e angoli. Rappresentare graficamente tutti i punti della scansione 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.

Rimuovi i punti non validi in base a un intervallo minimo e massimo specificato.

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.

Crea un oggetto lidarScan. Specificare gli intervalli e gli angoli come vettori.

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

Traslare la scansione laser di un offset [x y] di (0.5,0.2) .

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

Ruotare la scansione laser di 20 gradi.

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

Crea una scansione LiDAR di riferimento utilizzando lidarScan (Robotics System Toolbox) . Specificare intervalli e angoli come vettori.

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

Utilizzando la funzione transformScan (Robotics System Toolbox), generare una seconda scansione LiDAR con un offset x,y di (0.5,0.2).

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

Abbina la scansione di riferimento e la seconda scansione per stimare la differenza di posa tra di esse.

pose = matchScans(currScan,refScan);

Utilizzare la funzione transformScan per allineare le scansioni trasformando la seconda scansione nel fotogramma della prima scansione utilizzando la differenza di posa relativa. Rappresentare graficamente sia le scansioni originali sia quelle allineate.

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

Funzionalità estese

espandi tutto

Cronologia versioni

Introdotto in R2019b