UDP 패킷 스키마
각 패킷은 고정 길이의 45바이트 바이너리 메시지입니다. 모든 다중 바이트 필드는 다음을 사용합니다. 리틀 엔디안 바이트 순서. 끝에 추가된 알 수 없는 바이트는 이후 호환성을 위해 수신기에서 무시됩니다.
| 필드 |
유형 |
바이트 |
설명 |
| 헤더 |
uint8[4] |
4 |
매직 바이트 0x52 0x43 0x54 0x50 — ASCII "RCTP". 잘못된 매직 값을 가진 패킷은 자동으로 삭제됩니다. |
| 타임스탬프 |
float64 |
8 |
단일성 Time.realtimeSinceStartup 초 안에. 지터 측정에 사용됩니다. 로봇 컨트롤러에 의해 해석되지 않습니다. |
| pos_x |
float32 |
4 |
미터 단위의 엔드 이펙터 X 위치, VR 월드 프레임(오른손잡이, Y자 위). mm 로봇 프레임으로 변환 transform_position(). |
| 꽃다발 |
float32 |
4 |
엔드 이펙터 Y 위치(미터), VR 월드 프레임. |
| pos_z |
float32 |
4 |
엔드 이펙터 Z 위치(미터), VR 월드 프레임. |
| rot_x, rot_y, rot_z, rot_w |
float32 × 4 |
16 |
VR 월드 프레임에서 단위 쿼터니언으로서의 엔드 이펙터 회전. 다음에 의해 오일러(롤/피치/요)로 변환됩니다. quat_to_euler() 로봇 SDK로 전달하기 전에. |
| 그리퍼 |
float32 |
4 |
그리퍼 개방성: 0.0 = 완전 폐쇄, 1.0 =완전히 열려있습니다. 다음을 통해 핀치 강도에서 파생됨 VRGripperController.cs. |
| 깃발 |
uint8 |
1 |
비트 0: 유효한 추적(1 = 손 감지). 비트 1: 비상 정지가 요청되었습니다(1 = 운전자가 메뉴를 누름). 남은 비트는 예약되어 있습니다. |
바이트 오프셋 요약: 헤더 0–3, 타임스탬프 4–11, pos_x 12–15, pos_y 16–19, pos_z 20–23, rot_x 24–27, rot_y 28–31, rot_z 32–35, rot_w 36–39, 그리퍼 40–43, 플래그 44.
파이썬 struct 압축을 풀기 위한 형식 문자열:
수입 struct
PACKET_MAGIC = b'\x52\x43\x54\x50' # "RCTP"
PACKET_FMT = '<4sdffffffff f B'
# ^ ^ ^^^^^^^^^^ ^ ^
# | | pos xyz | flags (uint8)
# | timestamp gripper (float32)
# header (4 bytes) rot xyzw (float32×4)
데프 파싱_패킷(data: bytes) -> dict | None:
만약에 len(data) < struct.calcsize(PACKET_FMT):
반품 None
fields = struct.unpack_from(PACKET_FMT, data)
header, ts, px, py, pz, rx, ry, rz, rw, gripper, flags = fields
만약에 header != PACKET_MAGIC:
반품 None
반품 {
"타임스탬프": ts,
"위치": (px, py, pz),
"회전": (rx, ry, rz, rw),
"그리퍼": gripper,
"유효한": bool(flags & 0x01),
"멈추다": bool(flags & 0x02),
}
종단 간 지연 시간
AgileX Piper 암을 사용하여 Wi-Fi 6 LAN에서 30Hz 제어 속도 및 25% 속도 제한으로 측정되었습니다. 값은 일반적입니다. 실제 대기 시간은 Wi-Fi 상태와 로봇 서보 속도에 따라 다릅니다.
~20ms
퀘스트 3 추적 파이프라인
Unity 콜백에 손 자세 센서 융합
<5ms
UDP 전송
Wi-Fi 6 LAN; 구형 Wi-Fi에서는 최대 15ms
<2ms
Python 구문 분석 및 큐
구조체 압축 풀기 + 대기열 삽입
30~80ms
로봇 궤적 실행
제한 속도와 이동 거리에 따라 다름
| Wi-Fi 6 LAN, 25% 속도 |
50~120ms |
| Wi-Fi 5 LAN, 25% 속도 |
80~150ms |
| 소프트웨어 비상 정지 응답(비트 1 경로) |
1 제어 주기(30Hz에서 ~33ms) |
| 추적 손실 감지 |
즉시(현재 패킷의 바이트에 플래그 지정) |
대기 시간 느낌을 줄이려면 속도 제한을 보수적으로 유지하십시오.
지배적인 지각 대기 시간 구성 요소는 로봇 궤적 실행입니다. 더 낮은 SPEED_PERCENT 실제 왕복 시간이 비슷하더라도 시스템을 더 예측 가능하게 만듭니다. 25%에서 시작하여 모션이 완전히 검증된 후에만 올립니다.