안녕하십니까, KROAD의 정주훈입니다. 저는 이번에 자율주행에서 지면을 분리하는 알고리즘에 대해서 연구된 'Patchwork++: Fast and Robust Ground Segmentation Solving Partial Under-Segmentation Using 3D Point Cloud' 논문을 리뷰하고자 합니다.

ground segmentation

3D LiDAR 센서를 사용하는 3D 인식 분야에서 ground segmentation, 즉, 지면 분할방법은 필수적인 작업입니다.

Problem Definition

지면 분할은 여러가지 방법으로 많이 소개되어왔지만 한계도 존재합니다.

  1. 주변환경에 따라 미세 조정으로 매개변수 설정에 많은 시간이 소요된다.
  2. 매개변수를 적절히 조정하더라도 일부 영역에서는 지상 분할 실패를 의미하는 과소 분할 문제가 발생할 수 있다.
  3. 지상이 연석과 같은 구조물 위에 위치한 경우 지상 분할 방법은 적절한 지상 평면을 추정하지 못하는 한계가 있다.

Solution

CZM(Concentric Zone Model)

기존의 ground segmentation에서는 공간을 분할 할 때 고정 크기의 cell 이나 같은 간격의 같은 각도로 공간 분할을 진행을 하였습니다. 이는 LiDAR point cloud는 센서와의 거리에 따라 포인트 밀도가 불균일합니다.

따라서, 거리에 따라 분할공간에 point가 부족한 문제가 발생하게됩니다. 또한 거리가 가까울 때에는 분할 공간의 크기가 작아져 벡터의 추정이 불안정 해지는 문제가 발생하기도 합니다.

- Patchwork 계열 알고리즘의 핵심으로 동심원을 기반으로 한 공간 분할 방식이다.

- 거리에 따라 분할 각도를 조절하여 분할 공간을 설정한다.

C=m=1NZZmC = \bigcup_{m=1}^{N_Z} Z_m

Algorithm & Architecture

Patchwork++

  • 적응형 지상 우도 추정(A-GLE)을 활용하여 이전 지상 분할 결과를 바탕으로 적절한 매개변수를 적응적으로 계산하고 시간적 지상 반전(TGR)은 임시 지상 속성을 사용하여 부분적인 과소 분할 문제를 완화합니다.

  • 지역별 수직 평면 피팅(RVPF)을 도입으로 지면이 다른 층으로 상승하더라도 지상 평면을 적절히 분할 가능합니다.

  • 3D LiDAR 반사 모델을 기반으로 가상 노이즈 포인트를 효율적으로 제거하기 위한 반사 노이즈 제거(RNR)를 제시합니다.

  • 기존 Patchwork 알고리즘은 Noise Removal 이후 CZM 기반 영역 분할을 수행하고, 지역별 지면 평면 피팅(R-GPF)과 GLE를 통해 지면을 추정한 뒤 최종적으로 CZM을 통해 결과를 정리하는 구조로 이루어져 있습니다. (Noise Removal → CZM → R-GPF → GLE → CZM)

  • Patchwork++에서는 기존의 단순 Noise Removal 단계를 LiDAR 반사 모델을 고려한 RNR(Reflected Noise Removal)로 대체하였으며, CZM과 R-GPF 사이에 R-VPF(Region-wise Vertical Plane Fitting)를 추가하여 지면과 수직 구조물을 보다 안정적으로 분리할 수 있도록 하였습니다.
    또한, 기존의 GLE를 A-GLE(Adaptive Ground Likelihood Estimation)로 확장하고, 시간적 정보를 활용하는 TGR(Temporal Ground Revert)을 추가함으로써 부분적인 과소 분할 문제를 완화하고 지면 분할의 시간적 안정성을 향상시켰습니다.

Noise Removal → RNR(Reflected Noise Removal)

  • 기존의 Pathwork는 Noise Removal를 통해 ghost point를 삭제하였습니다. 이는 단순 기하 조건(threshold-based) 또는 단순 임계값에 기반하여 Removal를 진행하였는데 이것을 통해 일부 정상 지면 포인트가 제거될 수 있는 문제를 야기했습니다.
  • RNR(Reflected Noise Removal)을 진행하여 지면보다 비정상적으로 낮은 포인트, 반사 특성상 나올 수 없는 거리/높이 패턴을 추출하여 삭제하여 기존의 Patchwork의 문제점을 해결하였습니다.

R-VPF(Region-wise Vertical Plane Fitting)

  • 기존의 Patchwork는 지면을 하나의 연속된 평면으로 가정하였으나, 실제 도로 환경에서는 연석, 고가도로, 경계석, 단차 등과 같은 수직 구조로 인해 지면이 분리되는 상황이 발생합니다.
    따라서 CZM으로 분할된 각 분할 구역에서 PCA-based 평면 분석을 수행하고, 추정된 법선 벡터의 방향을 기준으로 수직 평면에 해당하는 구조물을 식별합다. 식별된 수직 구조 포인트들은 지면 평면 피팅의 후보에서 제외되어, 이후 지면 평면 추정을 방해하지 않도록 분리됩니다.

R-GPF (Region-wise Ground Plane Fitting)

R-GPF는 R-VPF를 통해 수직 구조가 제거된 지면 후보 point들을 대상으로 구역에 대표하는 지면 평면과 그에 따른 법선 벡터를 추정하는 단계입니다.

A-GLE (Adaptive Ground Likelihood Estimation)

기존 Patchwork는 단일 프레임 기준으로 R-GPF에서 얻은 지면 평면을 이용해 각 point가 지면일 가능성(Likelihood)을 계산하였습니다. 하지만 이는 환경변화에 민감하였고 고정 임계값에 의존해 과소 분할이 발생할수 있었습니다.

  • 이전 프레임에서 확정된 ground들의 elevation, flatness을 활용하여 가능성 계산에 쓰이는 임계값을 적응적 업데이트를 통해 고정 임계값으로 인한 의존도를 줄여 과소분할 가능성을 감소 시켰습니다.

TGR(Temporal Ground Revert)

A-GLE 이후에도 일시적인 노이즈나 지면 거칠기로 인해 지면이 비지면으로 분류되는 경우가 발생할 수 있습니다. TGR은 시간적 연속성을 이용하여 과거 프레임에서 지속적으로 지면으로 판단된 구역을 조건부로 복원함으로써, 부분적인 과소 분할 문제를 완화합니다.

  • 이후 지면부분으로 높은 가능성을 지닌 부분의 분할 구역을 재 설정하여 iteration 횟수 만큼 반복하여 지면을 분할합니다.

Experimental Results

정성적으로 비교한 결과, Patchwork++는 연석 및 단차 환경에서도 지면이 끊기지 않고 연속적으로 유지됨을 확인할 수 있으며, 정량적 평가에서도 기존 Patchwork 대비 Recall과 F1-score가 향상되었습니다. 또한 추가 모듈에도 불구하고 실시간 처리 속도를 유지할 수 있었습니다.

Reference

Open Source: https://github.com/url-kaist/patchwork-plusplus

ros2 launch patchworkpp [patchworkpp.launch.py](http://patchworkpp.launch.py/) \
cloud_topic:=/velodyne_points \
base_frame:=lexus3/os_center_a_laser_data_frame \
visualize:=true
profile
한국기술교육대학교 자율주행연구회 K-ROAD의 기술블로그 입니다.

0개의 댓글