RTDE 배경 설명
==============
.. raw:: html
.. raw:: html
RTDE란 무엇인가
---------------
RTDE는 Universal Robots의 Real-Time Data Exchange 인터페이스입니다. 외부 애플리케이션이 TCP를 통해 선택한 로봇 데이터를 동기화해서 읽고 쓸 수 있게 해줍니다.
이 프로젝트는 공식 RTDE 모델을 최대한 그대로 따릅니다.
- 이름이 있는 output field 선택
- 필요한 경우 input field 선택
- 동기화 루프 시작
- robot output 읽기
- controller input 쓰기
왜 필드 이름을 그대로 쓰는가
-----------------------------
웹 인터페이스와 Python API는 실제 RTDE 필드명을 그대로 사용합니다. 그래서 여기서 설정한 이름이 Universal Robots 공식 RTDE 문서의 이름과 자연스럽게 대응됩니다.
예시:
- ``timestamp``
- ``actual_q``
- ``actual_qd``
- ``actual_current``
- ``actual_TCP_pose``
- ``input_int_register_24``
- ``output_int_register_24``
Output recipe 와 input recipe
------------------------------
RTDE는 다음 구조를 가집니다.
- **하나의 output recipe**: 로봇에서 클라이언트로 스트리밍
- **하나 이상의 input recipe**: 클라이언트에서 컨트롤러로 쓰기
이 프로젝트에서는 보통 필드가 읽기용인지 쓰기용인지 정도만 생각하면 충분합니다.
GP input 과 GP output 구분
--------------------------
실무에서 가장 중요한 구분은 다음입니다.
- ``input_*_register_*`` 는 클라이언트에서 **쓰기 가능**
- ``output_*_register_*`` 는 클라이언트에서 **읽기 전용**
외부 RTDE client에서 자주 쓰는 범위는 아래와 같습니다.
- ``input_bit_register_64`` .. ``input_bit_register_127``
- ``input_int_register_24`` .. ``input_int_register_47``
- ``input_double_register_24`` .. ``input_double_register_47``
- ``output_bit_register_64`` .. ``output_bit_register_127``
- ``output_int_register_24`` .. ``output_int_register_47``
- ``output_double_register_24`` .. ``output_double_register_47``
주파수와 부하
-------------
웹 인터페이스가 높은 RTDE 주파수를 요청할 수 있다고 해서, 모든 시각화 계층이 모든 프레임을 그대로 소비해야 하는 것은 아닙니다.
실무 권장 기준:
- **500 Hz** 는 얇은 필드 조합에서만 사용
- **125 Hz** 는 좀 더 풍부한 모니터링에 사용
- current, GP, diagnostics 필드는 필요한 경우에만 추가
Current-window 보기
-------------------
측정 전류와 허용 편차 window를 비교하려면 다음 필드를 같이 요청합니다.
.. code-block:: python
ROBOT_FIELDS = [
"timestamp",
"target_current",
"actual_current",
"actual_current_window",
]
웹 인터페이스는 다음과 같은 실용적인 비율을 계산합니다.
.. code-block:: text
usage = abs(actual_current - target_current) / actual_current_window
이 값은 모니터링 보조 지표이지, 인증된 안전 기능 자체는 아닙니다.