[ros2] extrinsic을 publish / subscirbe 하는 다양한 방법

About_work·2024년 4월 27일
0

ros2

목록 보기
34/41

1. TF2 (Transform Library)

  • ROS2에서 가장 일반적인 방법은 TF2 라이브러리를 사용하여 카메라의 위치와 방향을 표현하는 변환(transform)을 publish하는 것
  • TF2는 좌표 변환을 쉽게 관리하고, 시간에 따른 변환의 추적을 가능하게 해줌
  • 카메라와 같은 센서의 경우, 카메라의 포즈(pose)를 로봇의 프레임에 대한 변환으로 publish
  • 카메라 프레임 발행:
    • 카메라에서의 프레임 (예: camera_frame)을 로봇의 참조 프레임 (예: base_link 또는 base_frame)에 대해 정의하고,
    • 이 변환을 정기적으로 TF2를 통해 발행
  • 발행 방법:
    • ROS2에서는 tf2_ros 패키지의 TransformBroadcaster를 사용하여 변환을 publish 할 수 있음
  • 장점:
    • 동적 변환 지원:
      • TF2는 시간에 따른 변환을 지원하므로, 움직이는 로봇이나 카메라에서 매우 유용
    • 다양한 리스너와의 호환성:
      • 다양한 ROS 노드들이 TF2를 사용하여 변환 정보를 쉽게 조회할 수 있으므로, 시스템 전반에서의 통합이 용이
    • 효율적인 데이터 처리:
      • 내부적으로 변환 데이터를 효율적으로 처리하고 캐싱하기 때문에, 요청 시 빠르게 변환 정보를 제공할 수 있음
  • 단점:
    • 리소스 사용량: 연속적인 변환 정보의 업데이트는 CPU와 메모리 리소스를 상당량 사용할 수 있습니다, 특히 많은 수의 센서와 로봇 부품이 관련되어 있을 때 더욱 그렇습니다.

2. 파라미터 서버

  • 카메라의 extrinsic 파라미터가 고정되어 있고 자주 변경되지 않는 경우, ROS2의 파라미터 서버를 사용하여 이 정보를 저장하고 필요할 때 노드들이 조회할 수 있도록 할 수 있음
  • 파라미터 설정: 카메라의 위치와 방향을 파라미터로 설정하고, 필요한 노드에서 이 파라미터를 읽어서 사용합니다.
  • 파라미터 사용 예: camera_offset_x, camera_offset_y, camera_offset_z, camera_roll, camera_pitch, camera_yaw 등의 파라미터를 정의할 수 있습니다.

장점:

  • 간단한 설정: 파라미터 서버를 사용하여 카메라의 위치와 방향을 설정하는 것은 매우 간단하며, 코드 내에서 쉽게 접근할 수 있습니다.
  • 정적 데이터 관리 용이: 카메라 설정이 고정되어 있고 자주 변경되지 않는 경우, 파라미터 서버는 이 정보를 효율적으로 관리할 수 있는 좋은 방법입니다.

단점:

  • 동적 업데이트 제한: 카메라 위치가 변경될 경우 파라미터 서버의 값도 수동으로 업데이트해야 하며, 이는 자동화된 시스템에서는 불편할 수 있습니다.
  • 실시간 반응 능력 부족: 실시간으로 변화하는 데이터를 처리하기에는 파라미터 서버가 적합하지 않습니다.

3. 메시지를 통한 발행

  • 특정 응용 프로그램의 요구 사항에 따라 카메라의 extrinsic 파라미터를 geometry_msgs/msg/TransformStamped 또는 geometry_msgs/msg/PoseStamped 메시지 형식으로 직접 토픽에 publish 할 수도 있습니다.
  • 이 방법은 파라미터가 동적으로 변경될 때 유용할 수 있습니다.
    장점:
  • 유연성: 메시지를 사용하여 카메라의 extrinsic 파라미터를 직접 제어하고 발행할 수 있어, 응용 프로그램에 맞춰 매우 유연하게 구성할 수 있습니다.
  • 동적 데이터 처리: 파라미터가 변할 때마다 새로운 메시지를 발행할 수 있으므로, 변화하는 환경에 잘 적응할 수 있습니다.
    단점:
  • 데이터 관리 복잡성: 모든 변화를 메시지로 처리해야 하므로, 시스템의 다른 부분에서 이 메시지를 적절히 관리하고 동기화하는 추가적인 로직이 필요할 수 있습니다.
  • 네트워크 부하: 메시지를 네트워크를 통해 지속적으로 전송해야 하므로, 통신 부하가 커질 수 있습니다.

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

0개의 댓글