본문 바로가기

IT 지식/IsaacSim

Isaac Sim의 QoS node property 파헤치기

728x90
반응형

 

 

1. QoS란?

ROS2에서는 네트워크 상태가 불안정하거나 여러 로봇이 동시에 통신할 때, 데이터 손실을 줄이거전송 방식을 최적화하기 위해 QoS (Quality of Service) 설정을 제공합니다.

QoS는 퍼블리셔(Publisher)와 서브스크라이버(Subscriber) 간의 데이터 전달 방식을 조절하는 역할을 합니다.

 

 

2. 각 QoS 설정 옵션 및 의미

아래는 Isaac Sim의 ROS2 QoS Profile Node에서 볼 수 있는 속성과 각각의 설정 옵션들입니다.


(1) createProfile

QoS 프로파일을 미리 정의된 설정으로 선택할 수 있습니다.
선택한 프로파일에 따라 deadline, reliability, durability 등의 QoS 값이 자동으로 변경됩니다.

  • Default for publishers/subscribers
    • 기본 ROS2 퍼블리셔/서브스크라이버 QoS 설정을 사용합니다.
  • Services
    • ROS2의 서비스(서비스 요청/응답) 통신을 위한 QoS 설정입니다.
  • Sensor Data
    • LiDAR, 카메라 등 센서 데이터 전송에 최적화된 설정 (보통 bestEffort 모드 사용).
  • System Default
    • ROS2 기본 시스템 QoS 설정을 따름 (사용 환경에 따라 자동 조절됨).
  • Custom
    • 사용자가 직접 QoS 정책을 정의하여 설정할 수 있음.

💡 예제
만약 카메라 데이터를 송신하는 노드를 운영한다면 Sensor Data QoS 프로파일을 선택하면 적절한 설정이 자동 적용됩니다.

 

이렇게 설정하면 신뢰성 있는 메시지 전달을 보장합니다.

 


(2) deadline

  • 옵션: float (초 단위)
  • 퍼블리셔가 특정 시간 내에 데이터를 보내야 하는 시간을 의미합니다.
  • 0.0이면 제한 없음.

예시:
로봇이 1초마다 센서 데이터를 반드시 보내야 한다면 deadline = 1.0으로 설정.


(3) depth

  • 옵션: int
  • 큐(queue)에 보관할 메시지 개수를 설정합니다.
  • 기본값: 10 (최근 10개 메세지를 저장)
  • keepLast 정책과 함께 사용됨.

예시:

  • depth = 10이면 최근 10개의 메시지만 유지됨.
  • 로봇 센서에서 매우 빠른 속도로 데이터를 보내지만 일부 손실이 허용될 경우 depth 값을 낮출 수 있음.

(4) durability (내구성)

    • Durability (inputs:durability)
      • 메시지가 퍼블리셔가 사라진 후에도 유지될지를 결정하는 정책입니다.
      • 옵션 
        • systemDefault
          • 시스템 기본값을 따릅니다.
        • transientLocal
          • 퍼블리셔가 사라져도 ROS2 내부에서 메시지를 보존함.
          • 새로운 서브스크라이버가 연결되더라도 최근 메시지를 받을 수 있음.
          • 예제:
            • 지도 데이터, 초기 설정값 등 퍼블리셔가 끊겨도 유지되어야 할 데이터에 사용됨.
        • volatile (기본값)
          • 퍼블리셔가 종료되면 메시지가 사라짐.
          • 실시간 센서 데이터와 같이 과거 데이터가 필요 없는 경우 사용.
          • 예제:
            • LiDAR 데이터, 로봇 위치 데이터 (Odometry) 등.
        • unknown
          • 값이 설정되지 않았거나, 알 수 없는 QoS 설정.

(5) history (히스토리)

  • 옵션:
    • keepLast (최근 n개 유지)
    • keepAll (모든 메시지 유지)
  • 설명:
    • keepLast: 큐에서 최근 depth 개수만 유지.
    • keepAll: 모든 메시지를 저장 (메모리 사용량이 커질 수 있음).

예시:

  • 센서 데이터는 오래된 값이 의미 없으므로 → keepLast 사용
  • 중요한 제어 명령은 절대 손실되면 안 되므로 → keepAll 사용

(6) leaseDuration

  • 옵션: float (초 단위)
  • 퍼블리셔가 사라진 후에도 메시지를 유지할 시간.
  • 0.0이면 제한 없음.

예시:

  • 특정 메시지가 일정 시간 동안 남아 있어야 하면 leaseDuration을 설정.

(7) lifespan (생명주기)

  • 옵션: float (초 단위)
  • 메시지가 일정 시간이 지나면 자동으로 삭제됨.
  • 0.0이면 제한 없음.

예시:

  • 5초 이상 지난 데이터는 유효하지 않다면 lifespan = 5.0으로 설정.

(8) liveliness (생존성)

  • 퍼블리셔가 살아 있는지(작동 중인지)를 감지하는 방법을 결정하는 정책입니다.
  • 옵션
    • systemDefault
      • 시스템 기본값을 따름.
    • automatic
      • 퍼블리셔가 자동으로 생존 신호를 보냄.
      • 서브스크라이버는 별도의 확인 없이 퍼블리셔가 살아있는지 판단함.
    • manualByTopic
      • 퍼블리셔가 직접 특정 주기마다 생존 신호를 보내야 함.
      • 퍼블리셔가 정기적으로 신호를 보내지 않으면 구독자가 끊어졌다고 판단할 수 있음.
      • 예제:
        • 자율 주행 로봇의 제어 명령 노드에서 사용하면, 만약 퍼블리셔가 비정상 종료되면 서브스크라이버가 이를 감지할 수 있음.
    • unknown
      • 값이 설정되지 않았거나, 알 수 없는 QoS 설정.

예시:
로봇이 정확히 언제 작동 중인지 구독자가 감지해야 할 경우 manual_by_node 설정.


(9) reliability (신뢰성)

  • 옵션:
    • reliable (신뢰성 있음)
    • best_effort (최선 노력)
  • 설명:
    • reliable: 메시지가 반드시 전달됨 (네트워크가 불안하면 속도가 느려질 수 있음).
    • best_effort: 가능한 한 빨리 메시지를 전달하되, 손실될 수도 있음.

예시:

  • 센서 데이터 (LiDAR, 카메라 등) → best_effort (속도가 중요)
  • 제어 명령 (로봇 이동 명령, 긴급 정지 등) → reliable (데이터 손실이 없어야 함)

 

요약

QoS 속성 설명 주요 옵션 예제
deadline 메시지 전송 기한 0.0 (제한 없음) deadline = 1.0 (1초마다 전송)
depth 큐에 저장할 메시지 개수 10 (기본값) depth = 5 (최근 5개만 유지)
durability 메시지 지속성 volatile, transient_local transient_local (새 구독자가 과거 데이터 받음)
history 저장 정책 keepLast, keepAll keepLast (최근 N개 유지)
leaseDuration 퍼블리셔 종료 후 메시지 유지 시간 0.0 (제한 없음) leaseDuration = 3.0 (3초 유지)
lifespan 메시지 자동 삭제 시간 0.0 (제한 없음) lifespan = 5.0 (5초 지나면 삭제)
liveliness 퍼블리셔 생존성 감지 automatic, manual_by_node manual_by_node (노드가 직접 생존 확인)
reliability 신뢰성 reliable, best_effort reliable (데이터 손실 없음)

 

 

https://docs.omniverse.nvidia.com/py/isaacsim/source/extensions/omni.isaac.ros2_bridge/docs/ogn/OgnROS2QoSProfile.html

 

ROS2 QoS Profile — isaac_sim 4.2.0-rc.17 documentation

© Copyright 2018-2024, NVIDIA. Last updated on Sep 19, 2024.

docs.omniverse.nvidia.com

위 공식 문서에 가면 Isaac Sim 노드들의 속성을 자세히 볼 수 있습니다. 

 

또한 아래 공식 문서에 가면 QoS에 관련된 Tutorial 을 확인해볼 수 있습니다. 

 

https://docs.omniverse.nvidia.com/isaacsim/latest/ros2_tutorials/tutorial_ros2_qos.html

 

ROS 2 Quality of Service (QoS) — Isaac Sim 4.2.0 (OLD)

All ROS 2 OmniGraph nodes such as the ROS2 Publisher include a qosProfile string input. This input is formatted as a JSON string. An example of the JSON string for the default QoS settings for publishers and subscriptions is shown below. { "history": "keep

docs.omniverse.nvidia.com

 

 

 

 

728x90
반응형