[Reconstruction] hydra code - src/reconstruction/volumetric_map.cpp

About_work·2024년 10월 14일
0

lifelong scene graph

목록 보기
8/56
  • 생성자, allocateBlocks, removeBlocks, removeBlock , getTsdfLayer,getSemanticLayer, getMeshLayer, blockSize 정도가 쓰임

-이 클래스는 여러 레이어를 관리하고, 이를 통해 환경에 대한 3D 맵을 만들고 유지하는 역할을 합니다.

맵의 주요 레이어

  • TsdfLayer: TSDF를 저장하는 레이어로, 맵의 각 점이 얼마나 물체 표면에 가까운지 정보를 유지.
  • MeshLayer: 메쉬 데이터를 저장하는 레이어로, TSDF 정보를 기반으로 표면을 메쉬 형태로 표현.
  • SemanticLayer: 세멘틱 정보를 저장하는 레이어로, 각 voxel이 어떤 객체나 영역에 속하는지에 대한 정보를 제공.
  • TrackingLayer: 트래킹 정보를 저장하는 레이어로, 시간에 따른 변화를 추적하는 데 사용.

코드의 주요 역할

  • 블록 할당 및 삭제: 맵 블록을 할당하고, 필요하지 않은 블록을 제거. (allocateBlocks, removeBlocks, removeBlock )
  • 맵 데이터 저장 및 로드: 맵 데이터를 파일로 저장하거나 로드.
  • 다른 맵과의 병합: 다른 맵으로부터 데이터를 병합하여 갱신.

주요 구성 요소 설명

  1. 구성 (Config)

    • VolumetricMap::Config 구조체는 맵의 기본적인 설정을 담고 있습니다.
      • voxel_size: 하나의 voxel(입방체)의 크기.
      • voxels_per_side: 하나의 블록을 이루는 voxel의 개수.
      • truncation_distance: TSDF에서 사용하는 절단 거리로, 표면에서 일정 거리 바깥의 정보는 무시.
  2. 맵 블록 관리

    • allocateBlock():
      • 맵의 특정 인덱스에 해당하는 블록을 할당합니다. 이미 블록이 존재하면 할당하지 않고, 존재하지 않을 경우 새로 할당
    • removeBlock():
      • 특정 인덱스에 해당하는 블록을 제거합니다. 해당 블록을 TSDF, 세멘틱, 트래킹 레이어에서 삭제
    • getBlock():
      • 특정 블록의 TSDF, 세멘틱, 트래킹 데이터를 동시에 가져오는 함수로, 모든 레이어에서 해당 블록을 반환.
  3. 맵 데이터 저장 및 로드

    • save(): 현재 맵 데이터를 지정된 파일 경로에 저장하는 함수. TSDF와 세멘틱 레이어 데이터를 저장할 수 있습니다.
    • load(): 파일로부터 저장된 맵 데이터를 불러오는 함수로, TSDF와 세멘틱 레이어 데이터를 읽어들여 맵을 재구성합니다.
  4. 맵 병합

    • updateFrom(): 다른 VolumetricMap으로부터 데이터를 병합하여 현재 맵을 업데이트
      • TSDF, 메쉬, 세멘틱 레이어 등의 데이터가 병합
    • mergeLayer(): 두 개의 레이어를 병합하는 기능으로, 두 맵의 블록을 병합하여 하나의 레이어에 통합.

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

0개의 댓글