UDPパケットスキーマ
各パケットは、固定長の 45 バイトのバイナリ メッセージです。 すべてのマルチバイトフィールドでは、 リトルエンディアン バイトオーダー。 最後に追加された不明なバイトは、上位互換性のために受信側によって無視されます。
| 分野 |
タイプ |
バイト |
説明 |
| ヘッダ |
uint8[4] |
4 |
マジックバイト 0x52 0x43 0x54 0x50 — アスキー「RCTP」。 間違ったマジック値を持つパケットは通知なくドロップされます。 |
| タイムスタンプ |
float64 |
8 |
団結 Time.realtimeSinceStartup 数秒で。 ジッタ測定に使用されます。 ロボットコントローラーでは解釈されません。 |
| pos_x |
float32 |
4 |
エンドエフェクターの X 位置 (メートル単位)、VR ワールド フレーム (右回り、Y 上)。 mmロボットフレームに変換 transform_position(). |
| pos_y |
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 = '<4sdfffffffff f B'
# ^ ^ ^^^^^^^^^^ ^ ^
# | | pos xyz | flags (uint8)
# | timestamp gripper (float32)
# header (4 bytes) rot xyzw (float32×4)
確かに parse_packet(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 上で、制御レート 30 Hz、速度制限 25% で測定。 値は典型的なものです。 実際の遅延は、Wi-Fi の状態とロボットのサーボ レートによって異なります。
~20ミリ秒
Quest 3 追跡パイプライン
Unity コールバックへの手姿勢センサーの融合
5 ミリ秒未満
UDPトランジット
Wi-Fi 6 LAN; 古い Wi-Fi では最大 15 ミリ秒
2 ミリ秒未満
Python の解析とキュー
構造体のアンパック + キューの挿入
30~80ミリ秒
ロボットの軌道の実行
制限速度や移動距離によって異なります
| Wi-Fi 6 LAN、25% 高速化 |
50~120ミリ秒 |
| Wi-Fi 5 LAN、25% 高速化 |
80~150ミリ秒 |
| ソフトウェア非常停止応答 (ビット 1 パス) |
1 制御サイクル (30 Hz で約 33 ms) |
| トラッキングロス検出 |
即時 (現在のパケット内のフラグバイト) |
遅延感を軽減するために、速度制限は控えめに保ちます。
主要な知覚遅延コンポーネントは、ロボットの軌道の実行です。 より低い SPEED_PERCENT 実際の往復時間が同じであっても、システムはより予測しやすくなります。 25% から開始し、モーションが完全に検証された後にのみ引き上げます。