[voxblox] 논문리뷰

About_work·2024년 8월 29일
0

voxblox

목록 보기
2/10

0. 읽을거리


1. introduction

  • Map을 3차원으로 표현할 때에 일반적으로 사용되는 것:
    • occupancy grid map, octomap
    • occupancy probabilty를 저장하기 위해 계층화된 octree 구조를 사용
    • 그러나 path planning을 하기 위해서는 장애물까지의 거리가 필요한데 occupancy probabilty로는 정보가 충분하지 않음
  • 이러한 경우에 ESDF 방식 사용
    • ESDF는 이름에서 알 수 있듯이 Euclidean Signed Distance를 저장하고 있으니, 거리를 계산하기에 적합

  • TSDF는 더 조밀한 construction에서 surface reconstruction을 위해서 사용
    • TSDF는 데이터 구조 구성 방식으로 인해 GPU 컴퓨팅에 적합
    • TSDF의 가장 큰 단점
      • fixed-size voxel grid가 필요하다는 것
      • 즉, 이 방법은 map size를 알아야 한다는 것이 되고,
        • 그만큼 큰 memory overhead가 생기게 됩니다.

  • ESDF를 구축하기 위한 일반적인 단계는 다음과 같습니다.
    • Complete TSDF를 구축합니다.
    • TSDF를 Occupancy grid로 변환
    • Batch method를 사용하여 ESDF를 계산
  • 그러나 voxblox는 TSDF에서 ESDF로 직접 구축할 수 있는 방법을 제시

  • 다음은 voxblox의 주요 contributions
    • 동적으로 형성되는 map에서 TSDF를 이용해 ESDF를 점진적으로 구축하는 방법을 제시
    • TSDF를 구축하는 다양한 방법을 분석하고,
      • Size가 큰 Voxel reconstruction speedsurface accuracy를 최대화
    • Final ESDF의 오류 분석과 실험 분석을 제공하고,
      • 오류를 해결하기 위한 Safety margin을 제안
    • MAV에 탑재된 map을 사용하여 online replanning을 수행함으로써, 전체 시스템 검증

2. 주요 내용 요약

    1. TSDF에서 ESDF로의 변환
    • 부드러운 표면 메시(mesh)를 생성하는 데 사용되는 Truncated Signed Distance Fields (TSDFs)에서
      • ESDFs를 생성하는 방법을 제안
    • 이 접근 방식은 센서 노이즈를 줄이고, Octomap과 같은 기존 점유 맵보다 빠르게 구축될 수 있음
    1. 실시간 적용:
    • 단일 CPU 코어에서 실시간으로 실행되도록 설계되었으며, 이는 계산 자원이 제한된 애플리케이션에서 중요
    1. 기여:
    • 속도와 정확성을 극대화하기 위해 TSDFs를 구축하는 다양한 방법에 대한 분석을 수행

3. 본문

3.1. TSDF 구축 과정 (Truncated Signed Distance Field)

  • 입력:
    • 센서(예: RGB-D 카메라 또는 LiDAR)로부터 얻어진 포인트클라우드(Pointcloud) 데이터와 MAV의 6자유도 포즈(Pose) 추정치가 입력으로 사용

  • TSDF는 센서 포인트클라우드의 포인트들을 글로벌 맵에 레이캐스팅한 후,
    • 새롭게 측정된 투영 거리를 기존의 TSDF voxel에 가중 평균화하여 구축
    • 이때 거리 계산은 절단 거리 (\delta)까지만 수행
  • 센서 데이터로 TSDF를 구축하는 방식에 따라
    • 통합 속도와 결과 재구성의 정확도에 큰 영향을 미칠 수 있음
  • 여기서는
    • 새로운 측정값을 기존 측정값과 평균화하는 가중치 전략과,
    • 센서 데이터로부터 얻은 포인트를 그룹화하는 병합 전략에 대해 설명
      • 특히 큰 보컬 크기에서 정확도와 속도를 높이는 방법에 대해 논의

3.1.1. 가중치 설정

  • 새로운 스캔을 TSDF에 통합하는 일반적인 전략은
    • 센서 원점에서 센서 데이터 내의 모든 포인트로 레이캐스트를 수행한 후,
      • 이 레이를 따라 보컬의 거리 및 가중치 값을 업데이트하는 것
  • 가중치 함수의 선택은
    • 결과 재구성의 정확도에 큰 영향을 미칠 수 있으며,
    • 특히 수천 개의 포인트가 하나의 보컬로 병합될 수 있는 큰 보컬에서 그 영향이 큼
  • KinectFusion에서는
    • 센서 원점에서 레이와 표면 법선 사이의 각도 (\theta)에 기반한 가중치를 사용하는 것을 논의했지만, 단순한 상수 가중치를 사용하는 것을 권장 [6].
    • 이는 다른 문헌에서도 일반적으로 사용되는 접근 방식 [10], [12], [17], [18].
  • v: 복셀 위치 / p: pointcloud 위치 / s: 센서 위치

3.1.2. 병합

  • 우리는 TSDF에 새로운 센서 데이터를 병합하는 속도를 높이기 위해,
    • 각 복셀 당 한 번의 레이캐스팅만 수행하도록 전략을 설계
    • 이는 센서 데이터의 해상도에 비해, 보컬의 크기가 상대적으로 크다는 점을 활용한 것
  • TSDF로 센서 데이터를 통합하는 두 가지 주요 방법은
    • 레이캐스팅과 projection mapping [6][14].
  • 레이캐스팅은
    • 카메라의 광학 중심에서 관측된 각 포인트의 중심으로 광선을 쏘고,
    • 포인트 뒤의 절단 거리 δ까지의 모든 보컬을 업데이트
  • 투영 맵핑은
    • 시야 내의 보컬을 깊이 이미지로 투영하고, 보컬 중심과 이미지 내의 깊이 값 사이의 거리를 계산
    • 이 방법은 훨씬 빠르지만, 큰 보컬에서는 강한 에일리어싱(이방성) 효과를 초래할 수 있습니다 [14].
  • 우리의 접근 방식인 그룹 레이캐스팅(grouped raycasting)은,
    • 정확성을 크게 잃지 않으면서 레이캐스팅 속도를 크게 향상
    • 각 센서 스캔에서 포인트의 위치를 보컬 그리드로 투영하고,
      • 같은 보컬에 맵핑되는 다른 모든 포인트와 그룹화하여 색상과 거리를 평균한 후,
      • 레이캐스팅을 한 번만 수행
    • 이는 기존의 레이캐스팅 접근 방식보다 최대 20배 빠르면서도 매우 유사한 재구성 결과를 낳습니다.

3.2. ESDF 구축 과정 (Euclidean Signed Distance Field)

  • TSDF를 입력 데이터로 사용하고, 추가로 ESDF 맵이 동적으로 크기를 변경할 수 있도록 함
  • V_t = 원래 TSDF 맵에 있는 보컬
  • V_e = ESDF 맵에서 동일 위치에 있는 보컬
  • 우리가 개선한 주요 사항 중 하나: 원래 TSDF 맵에 저장된 거리를 사용
    • 기존 구현에서는 각 보컬이 점유 또는 자유 상태를 가지며, 알고리즘이 이를 변경할 수 없었습니다.
    • 대신, 우리는 표면 주위에 고정된 밴드를 도입하여 이 개념을 대체
    • 이 ESDF 보컬들은,
      • 동일 위치에 있는 TSDF 보컬에서 값을 가져오며, 변경될 수 없음
    • 고정된 밴드의 크기:
      • TSDF 보컬의 거리가 을 만족하는 보컬들로 정의
      • 즉, 장애물과 가까운 voxel들만 포함시킨다는 뜻
      • 여기서 γ는 밴드의 반경으로, 섹션 V-B에서 추가로 분석됩니다.
  • 일반적인 알고리즘은 파면(wavefront)이라는 아이디어에 기반
    • 이 파면은 시작 보컬에서 이웃 보컬로 전파되며, 그들의 거리를 업데이트하고, 업데이트된 보컬을 파면 큐에 넣어 이웃 보컬로 다시 전파
    • 우리는 두 가지 파면을 사용합니다: raise와 lower.
  • 모든 보컬을 먼저 raise한 다음, 모든 보컬을 lower
    • 이는 기록 관리를 줄이기 위해서
  • 보컬이 TSDF로부터 얻은 새로운 거리 값 > ESDF 보컬에 저장된 이전 값일 때, 보컬은 raise 큐에 추가
    • raise: 해당 보컬과 그 하위 보컬들이 무효화되어야 함을 의미
    • 파면은 무효화된 부모를 가진 보컬이 더 이상 남지 않을 때까지 전파
  • Lower 파면은 새로운 고정 보컬이 맵에 들어오거나, 이전에 관측된 보컬의 값이 감소할 때 시작
    • 이웃 보컬들의 거리는, 이웃 보컬과 현재 보컬 간의 거리에 기반하여 업데이트
    • 이 파면은 이웃 보컬들로부터 감소할 수 있는 보컬이 더 이상 남지 않을 때 끝남
  • 또한, 전 연구들이 미확인 보컬을 점유된 상태로 간주하는 것과 달리,
    • 우리는 미확인 보컬을 업데이트하지 않습니다.
  • 각 보컬에 대해, 우리는 부모의 전체 인덱스가 아닌 부모를 향한 방향을 저장
    • 준유클리드(quasi-Euclidean) 거리(알고리즘에서 설명됨)에서:
      • 부모 방향이 인접 보컬을 향하지만,
    • 유클리드 거리에서:
      • 부모까지의 전체 거리를 포함
    • 유클리드 거리와 준유클리드 거리의 전체 논의는 아래 섹션에서 제공
  • 마지막으로, 새로운 보컬이 언제든지 맵에 들어올 수 있기 때문에, 각 ESDF 보컬은 이미 관측되었는지 여부를 추적
    • 그런 다음 우리는 알고리즘 1의 20번째 줄에서 이를 사용하여 새로운 보컬에 대한 중요한 기록 관리를 수행
    • 이웃의 모든 보컬을 lower 큐에 추가하여, 새로운 보컬이 유효한 값으로 업데이트되도록 함
  • pseudo code

3.2.1. ESDF의 오차 원인

  • 경로 계획에 지도를 사용할 때, 최종 거리 계산에 있어 이 방법이 미치는 영향을 아는 것이 중요
  • 이 섹션에서는 우리의 근사치가 미치는 영향을 정량화하고,
    • 경로 계획에 사용되는 경계 상자를 늘리기 위한 안전 마진을 추천
  • 최종 ESDF에 대한 오차의 주요 원인은 두 가지로 나눌 수 있습니다:
    • 첫째, TSDF의 투영 거리 계산, 그리고
      • 투영 거리: 카메라 광선에 따라 표면까지의 거리
    • 둘째, 거리 계산에서의 준유클리드(quasi-Euclidean) 근사
  • 투영 거리는 항상 실제 유클리드 거리(가장 가까운 표면까지의 거리)와 일치하거나 이를 과대평가하게 됩니다.
    • 따라서 TSDF로부터 투영 거리를 사용할 때, 이로 인해 발생할 오차를 정량화할 필요가 있습니다.
    • 이 오차는 복셀에서 측정된 거리 \(d\)카메라 광선과 물체 표면 사이의 입사각 \(\theta\)에 의존
      • 우리는 국부적으로 평면인 물체를 가정
    • 따라서 투영 오차 잔차 rp(theta)r_p(theta)는 다음과 같이 표현될 수 있습니다:
  • 섹션 VI-B에서는 이러한 가정이 ESDF 계산의 전체 오차에 미치는 영향을 실험적으로 보여주며,
  • 실제로는 완전한 유클리드 거리와 준유클리드 거리 사이의 속도 향상을 정당화할 만큼 충분히 작은 오차임을 보여줍니다.

3.3. Mesh 구축 과정

  • 입력:
    • TSDF 레이어의 데이터가 Mesh 통합기(Mesh Integrator)로 전달
  • Mesh 통합기(Mesh Integrator):
    • 이 단계에서는 TSDF 데이터를 바탕으로 인간이 읽을 수 있는 3D 메시를 생성
    1. 메시 생성:
    • TSDF에서 추출된 거리 정보는 Marching Cubes 알고리즘 등을 사용하여 3D 표면 메시로 변환
    • 이 메시 생성은 TSDF 내의 모든 보컬에 대해 진행
    1. 최종 메시 구축:
    • 완성된 메시 데이터는 Mesh 레이어에 저장되며,
    • 이 데이터는 시각화 및 원격 운영자가 볼 수 있는 형태로 제공
  • 출력:
    • 생성된 메시(Mesh)는 Mesh Visualization 모듈로 전달되어, 3D 환경을 시각적으로 표현

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글