[ros2] depth array를 pub/sub 할 때, uint16 VS float32?

About_work·2024년 3월 2일
0

ros2

목록 보기
21/41

1. 뭐가 더 보편적인가?

  • ROS 커뮤니티 내에서 depth array를 float32uint16 중 어느 것이 더 보편적으로 사용되는지는 명확히 정의할 수 없습니다.
  • 사용하는 센서, 특정 응용 프로그램의 요구 사항, 그리고 데이터 처리 방법에 따라 달라질 수 있습니다.
  • 각각의 방식은 특정 상황과 요구 사항에 따라 장단점을 가지고 있습니다.

1.1. float32 사용의 경우:

  • 장점:
    • 정밀도:
      • float32는 실수를 사용하여 깊이 값을 표현하기 때문에, 더 높은 정밀도를 제공
      • 이는 특히 복잡한 3D 장면 재구성, 정밀 측정이 필요한 로봇 공학, 고급 시각화 등의 응용 프로그램에서 유리할 수 있음
    • 직접적인 거리 표현:
      • 깊이 스케일 변환 없이도, 깊이 값을 직접적으로 미터 단위 등의 물리적 거리로 표현할 수 있어, 데이터 처리가 보다 직관적이고 단순해질 수 있습니다.
  • 단점:
    • 데이터 크기:
      • float32uint16에 비해 두 배 더 많은 메모리 공간을 차지합니다.
      • 네트워크를 통한 전송 시간과 처리 시간도 더 길어질 수 있습니다.

uint16 사용의 경우:

  • 장점:
    • 메모리 및 대역폭 효율:
      • uint16은 2바이트만 차지하기 때문에, float32보다 데이터 크기가 작습니다.
      • 이는 메모리 사용량을 줄이고, 네트워크를 통한 데이터 전송 시간을 단축
    • 소비자용 깊이 카메라와의 호환성:
      • 많은 소비자용 깊이 카메라(예: Microsoft Kinect, Intel RealSense)는 기본적으로 uint16 형식의 깊이 데이터를 출력
  • 단점:
    • 정밀도 및 범위 제한:
      • uint16 형식은 최대 65,535의 범위를 가지며, 이는 특정 응용 프로그램에서 정밀도와 범위 제한을 초래할 수 있습니다.
    • 깊이 스케일 필요:
      • 실제 물리적 거리를 얻기 위해선 깊이 스케일 변환 과정이 필요합니다.

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

0개의 댓글