feat: package TG3 TS1P OmniSocket teleoperation
This commit is contained in:
53
tg3_omnisocket_transport/README.md
Normal file
53
tg3_omnisocket_transport/README.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# TG3 OmniSocket 同构臂传输代理
|
||||
|
||||
链路:
|
||||
|
||||
```text
|
||||
EAI xTELE tcp://127.0.0.1:5003(原始帧)
|
||||
+ tcp://127.0.0.1:5001(处理后的双手目标)
|
||||
-> 仅将 5001 hand.position 合并到 5003
|
||||
-> tg3-omnisocket-sender
|
||||
-> KCP Hub 175.178.116.187:14049
|
||||
-> tg3_local_teleop(直接 OmniSocket Session)
|
||||
```
|
||||
|
||||
Peer ID:
|
||||
|
||||
- 工控机:`tg3-009027fa8190-iarm`
|
||||
- 机器人:`tg3-009027fa8190-robot`
|
||||
|
||||
EAI 上仅保留 `omnisocket_xtele_sender.py`。它以 5003 最新帧为基础,保留双臂、
|
||||
Z+C 按键及诊断字段;若 5001 的双侧 `hand.position` 在 250 ms 内有效,则合并厂家
|
||||
xTELE 已处理的标量或六维 BrainCoRevo2 目标。5002 的界面事件和腰、头、腿、行走、
|
||||
底盘命令不会进入机器人双臂桥。
|
||||
|
||||
公网业务数据由 EAI 本地会话门控:服务启动后仍持续读取本机 5003/5001,但不发送
|
||||
xTELE 帧;连续长按左 Z + 右 C 3 秒后才生成新的 128-bit `session_id` 并开始发送。
|
||||
再次长按 3 秒时发送最后一帧 `stop`,等待有界 KCP 刷新后关闭 OmniSocket Session;
|
||||
之后 `frames_sent/bytes_sent` 不再增长,待机既没有 xTELE 业务帧,也没有该 sender 的
|
||||
底层注册/心跳。即使 Hub 离线,sender 仍持续读取本机 xTELE 并保持会话关闭;启动连接
|
||||
失败会使本次会话失效,必须松开组合键后重新长按,不会在 Hub 恢复时续发旧动作。
|
||||
活动期间若 KCP 反馈超过 `500 ms` 未更新,或 `snd_queue+snd_buffer` 超过 100 帧,sender
|
||||
立即作废会话并关闭 Session,从源头丢弃待发队列,防止网络恢复后回放旧动作。
|
||||
|
||||
每个业务 JSON 的 `tg3_transport` 由 sender 强制覆盖,不能由 5003 输入伪造:
|
||||
|
||||
```json
|
||||
{
|
||||
"protocol_version": 2,
|
||||
"session_id": "32位十六进制随机值",
|
||||
"session_seq": 1,
|
||||
"session_state": "start | active | stop",
|
||||
"stop_reason": "operator"
|
||||
}
|
||||
```
|
||||
|
||||
`start` 连续发送 50 个源帧,避免接收端只取最新帧时错过唯一启动事件;机器人对同一
|
||||
`session_id` 只做一次启动安全检查。`stop` 是该会话最后一个业务帧。服务重启、源数据
|
||||
失联或网络错误都会使会话失效,恢复后必须先松开组合键,再重新长按 3 秒。
|
||||
`tg3_local_teleop` 内部直接拒绝非预期发送端、
|
||||
乱序、格式错误以及相对本次连接最低包龄额外排队超过 300 ms 的数据;相对包龄会消除
|
||||
两端系统时钟的固定偏差。遥操桥仍有 250 ms 输入失联保护。
|
||||
|
||||
机器人直接在 `tg3_local_teleop` 中接收 OmniSocket 数据,不再安装或运行单独的
|
||||
`tg3-omnisocket-receiver.service`,也不再经过机器人本机 ZMQ 接收代理。
|
||||
Reference in New Issue
Block a user