Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

lidarScan

2차원 라이다 스캔을 저장하기 위한 객체 생성

R2019b 이후

설명

lidarScan 객체는 단일 2차원 라이다(LIDAR, Light Detection And Ranging) 스캔에 대한 데이터를 포함하고 있습니다. 라이다 스캔은 센서가 일정 거리(Ranges)와 특정 각도(Angles)로 환경 내 장애물까지 측정한 2차 평면의 레이저 스캔입니다. 이 레이저 스캔 객체를 matchScans, controllerVFH 또는 monteCarloLocalization과 같은 다른 로보틱스 알고리즘에 대한 입력값으로 사용합니다.

생성

설명

예제

scan = lidarScan(ranges,angles)는 라이다 센서에서 수집된 데이터를 나타내는 rangesangles에서 lidarScan 객체를 만듭니다. ranges 입력값과 angles 입력값은 동일한 길이의 벡터이며, Ranges 속성과 Angles 속성에 직접 설정됩니다.

scan = lidarScan(cart)는 입력 카테시안 좌표를 n×2 행렬로 사용하여 lidarScan 객체를 만듭니다. 이 입력값으로부터 직접 Cartesian 속성이 설정됩니다.

scan = lidarScan(scanMsg)LaserScan (ROS Toolbox) ROS 메시지 객체에서 lidarScan 객체를 만듭니다.

속성

모두 확장

라이다의 거리 측정값으로, 미터 단위의 벡터로 지정됩니다. 이 벡터는 Angles와 길이가 동일하며 벡터 요소는 미터 단위로 측정됩니다.

데이터형: single | double

라이다의 거리의 각도 측정값으로, 벡터로 지정됩니다. 이 벡터는 Ranges와 길이가 동일하며 벡터 요소는 라디안 단위로 측정됩니다. 각도는 양의 z축을 중심으로 반시계 방향으로 측정됩니다.

데이터형: single | double

라이다 측정값의 카테시안 좌표로, [x y] 행렬로 반환됩니다. 라이다 좌표 프레임에서, 양의 x는 정방향이며 양의 y는 왼쪽 방향입니다.

데이터형: single | double

라이다 측정값 개수로, 스칼라로 반환됩니다. 이 스칼라는 또한 Ranges 벡터와 Angles 벡터의 길이 또는 Cartesian의 행 개수와 동일합니다.

데이터형: double

객체 함수

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

예제

모두 축소

라이다 데이터를 거리와 각도로 구성된 벡터로 지정합니다. 이들 값에는 센서 거리를 벗어난 측정값이 포함되어 있습니다.

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

거리와 각도를 지정하여 라이다 스캔을 만듭니다. 라이다 스캔의 모든 점을 플로팅합니다.

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.

지정된 최소 및 최대 거리를 기준으로 유효하지 않은 점을 제거합니다.

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.

lidarScan 객체를 만듭니다. 거리와 각도를 벡터로 지정합니다.

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

레이저 스캔을 [x y] 오프셋 (0.5,0.2)로 변환합니다.

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

레이저 스캔을 20도 회전합니다.

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

lidarScan (Robotics System Toolbox) 항목을 사용하여 기준 라이다 스캔을 만듭니다. 거리와 각도를 벡터로 지정합니다.

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

transformScan (Robotics System Toolbox) 항목을 사용하고 x,y 오프셋 (0.5,0.2)로 두 번째 라이다 스캔을 생성합니다.

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

기준 스캔과 두 번째 스캔을 매칭하여 두 스캔 간의 자세 차이를 추정합니다.

pose = matchScans(currScan,refScan);

두 스캔을 정렬하기 위해 transformScan 함수와 상대 자세 차이를 사용하여 두 번째 스캔을 첫 번째 스캔의 프레임으로 변환합니다. 원래 스캔과 정렬된 스캔을 모두 플로팅합니다.

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

확장 기능

버전 내역

R2019b에 개발됨