[voxblox] voxblox/src/core/tsdf_map.cc

About_work·2024년 9월 3일
0

voxblox

목록 보기
7/10

1. tsdf_map.h

1.1. 기본 기능 요약

  1. TSDF 데이터 관리:
    • 3D 공간에서 각 지점(복셀)이 표면에서 얼마나 떨어져 있는지를 나타내는 TSDF 데이터를 관리
    • 이 데이터는 주로 로봇이 주변 환경을 인식하고, 3D 맵을 생성하는 데 사용

1.2. 구체적인 기능 설명

  1. 평면 슬라이스 기능(coordPlaneSliceGetDistanceWeight 함수):
    • 특정 평면에 있는 복셀들을 찾아
      • 그 복셀들이 평면과 얼마나 가까운지,
      • 그리고 그 복셀의 무게와 거리를 계산
    • 이 기능은 3D 공간에서 특정 높이 또는 깊이에서의 데이터를 분석할 때 유용하게 사용
  2. 위치 기반 무게 계산 기능(getWeightAtPosition 함수):
    • 3D 공간의 특정 위치에서의 TSDF 데이터를 기반으로 무게를 계산
    • 보간(interpolation) 기능을 통해, 위치가 복셀의 중심과 일치하지 않더라도 주변 데이터의 영향을 받아 더 정확한 무게를 계산할 수 있습니다.
  3. 설정 정보 출력 기능(Config::print 함수):
    • TSDF 맵의 설정 값을 출력하는 기능을 제공
    • 복셀의 크기와 블록 내 복셀 수 등의 설정 정보를 출력하여, TSDF 맵이 어떻게 구성되어 있는지 확인할 수 있음

2. .cc file

1. coordPlaneSliceGetDistanceWeight 함수

목적

  • 이 함수는 3D 공간의 특정 평면을 기준으로 TSDF 데이터를 슬라이스하여, 그 평면에 가까운 복셀들의 거리와 무게를 계산하고, 이를 배열에 저장

알고리즘 개요

  1. TSDF 레이어에서 할당된 모든 블록을 가져옴:

    • TSDF 맵은 여러 개의 블록으로 구성됩니다.
      • 각 블록은 여러 복셀로 이루어져 있음
    • 이 함수는 먼저 현재 할당된 모든 블록을 가져와 처리할 준비를 합니다.
  2. 블록 내 복셀 탐색:

    • 모든 블록을 순회하면서, 각 블록 내의 모든 복셀을 조사
  3. 평면과의 거리 계산:

    • 각 복셀의 좌표와 지정된 평면의 위치를 비교하여, 복셀이 평면과 얼마나 가까운지 계산
    • 평면과 복셀이 충분히 가까우면, 해당 복셀의 거리와 무게를 기록
  4. 결과 저장:

    • 평면에 가까운 복셀들의 위치, 거리, 무게를 각각 지정된 배열에 저장
    • 이때, 최대 저장할 수 있는 복셀 수(max_points)를 넘으면 계산을 멈춥니다.
  5. 오류 처리:

    • 만약 복셀 데이터가 배열에 모두 저장되지 못하면, 오류를 발생시켜 이 문제를 알립니다.

2. getWeightAtPosition 함수

목적

  • 이 함수는 3D 공간에서 특정 위치의 복셀에 해당하는 무게(weight)를 계산하여 반환
  • 이 무게는 해당 위치의 데이터 신뢰도를 나타낼 수 있습니다.

알고리즘 개요

  1. 위치 기반 중요도 계산:

    • 주어진 위치에서의 중요도를 계산
    • 이 과정에서 위치는 3D 좌표로 주어지며, TSDF 맵에서 해당 위치에 가까운 복셀을 찾아 그 무게를 반환
  2. 보간(Interpolation) 옵션:

    • 보간 기능을 사용하여, 주어진 위치가 정확히 복셀 좌표에 일치하지 않더라도 주변 복셀의 데이터를 종합하여 보다 정확한 값을 계산할 수 있습니다.
    • 보간을 사용하면 데이터의 연속성을 고려하여 더 정확한 값을 얻을 수 있습니다.
  3. 결과 반환:

    • 계산된 무게가 성공적으로 얻어졌다면 이를 반환하며, 그렇지 않다면 실패를 반환합니다.

3. Config::print 함수

목적

  • 이 함수는 TSDF 맵의 설정 값을 출력 가능한 문자열로 변환합니다. 이는 주로 디버깅이나 설정 값을 확인할 때 사용됩니다.

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

0개의 댓글