Main Content

라이다 데이터에서 지면점 및 비지면점 추출

velodyneFileReader 함수를 사용하여 PCAP 파일에서 라이다 데이터를 읽어옵니다.

veloReader = velodyneFileReader("lidarData_ConstructionRoad.pcap","HDL32E");

시간 구간을 지정하여 입력 라이다 데이터에서 일련의 라이다 데이터 프레임을 추출합니다.

veloReader.CurrentTime = veloReader.StartTime + seconds(0.5);
StopTime = veloReader.StartTime + seconds(10);

Figure 창을 구성하고 pcplayer 함수를 사용하여 입력 라이다 데이터 프레임과 추출된 지면점을 표시합니다.

fig = figure(Position=[0 0 800 600]);

xlimits = [-30 30];
ylimits = [-30 30];
zlimits = [-10 20];
hPanel = uipanel(fig,Position=[0 0.5 1 0.5]);
hPlot = axes(hPanel);
player = pcplayer(xlimits,ylimits,zlimits,Parent=hPlot);

hPanel_groundData = uipanel(fig,Position=[0 0 0.5 0.5]);
hPlot_groundData = axes(hPanel_groundData);
player_groundData = pcplayer(xlimits,ylimits,zlimits,Parent=hPlot_groundData);

hPanel_nongroundData = uipanel(fig,Position=[0.5 0 0.5 0.5]);
hPlot_nongroundData = axes(hPanel_nongroundData);
player_nongroundData = pcplayer(xlimits,ylimits,zlimits,Parent=hPlot_nongroundData);

라이다 데이터 프레임을 읽어오고 segmentGroundFromLidarData 함수를 사용하여 라이다 데이터에서 지면점을 추출합니다. 그런 다음, 추출된 지면점의 인덱스를 사용하여 프레임에서 비지면점을 분할합니다.

while (hasFrame(veloReader) && veloReader.CurrentTime < StopTime)
    % Read a lidar data frame
    ptCloud = readFrame(veloReader);

    % Extract ground points from lidar data frame
    groundPtsIdx = segmentGroundFromLidarData(ptCloud);
    ptCloudGround = select(ptCloud,groundPtsIdx,OutputSize="full");

    % Extract non-ground points from lidar data frame
    ptCloudNonGround = select(ptCloud,~groundPtsIdx,OutputSize="full");
    
    % Display the input lidar data and the extracted points 
    view(player,ptCloud)
    title(hPlot,"Input Lidar Data")
    view(player_groundData,ptCloudGround)
    title(hPlot_groundData,"Extracted Ground Points")
    view(player_nongroundData,ptCloudNonGround)
    title(hPlot_nongroundData,"Extracted Non-Ground Points")
    colormap(autumn)
    pause(0.01);
end

Figure contains 3 axes objects and other objects of type uipanel. Axes object 1 with title Input Lidar Data, xlabel X, ylabel Y contains an object of type scatter. Axes object 2 with title Extracted Ground Points, xlabel X, ylabel Y contains an object of type scatter. Axes object 3 with title Extracted Non-Ground Points, xlabel X, ylabel Y contains an object of type scatter.

참고 항목

| |