# TG3 天工 3.0 本地同构臂遥操 本仓库保存 TS1P 同构臂经 OmniSocket 控制天工 3.0 双臂、BrainCo Revo2 双手和 HBWALK 前后/转向所需的自写代码。它不包含、不修改 xTELE、机器人厂家 控制源码或 OmniSocketGo 本体。 ## 目录 - `tg3_omnisocket_transport/`:部署到 EAI 工控机;从 xTELE 的本机 5003/5001 读取数据,仅在左 Z + 右 C 连续 3 秒开启后注册并发送,STOP 后立即断开;还包含 不走公网时在 EAI 运行 `kcpserver` 的本地 Hub 用户服务模板。 - `tg3_local_teleop/`:部署到机器人 Nvidia;直接接收 OmniSocket 数据,发布双臂、 双手及 `/hric/robot/cmd_vel`,提供限速回 Home,并独立录制控制数据 MCAP。 - `tg3_data_collection/`:部署在本机;通过本地 SSH/rsync 拉取已完整收尾并校验的 episode,原子保存到 `Data_Get/`;持久化验真凭据后自动回收机器人上的对应副本。 - `Data_Get/`:最终数采目录。实际 MCAP、清单和同步状态默认不提交 Git。 - `docs/`:可提交的跨机器人迁移步骤。含实测帧和现场拓扑的汇报/证据文档只保留在 当前本地工作副本,不同步到匿名可读的远端仓库。 ## 外部依赖(不随仓库提交) 两端都需要单独安装 OmniSocketGo 的 Python 扩展。当前验证版本为: ```text https://gitea.public.snrc.site/limingjie/OmniSocketGo.git commit de3f5c96779dbe1571c10feb22fc7f2331b6b222 ``` EAI 还需已安装并运行 xTELE;本地 Hub 模式必须保留完整 OmniSocketGo 源码并编译 `bin/kcpserver`。机器人端需已有 ROS 2 Jazzy、厂家消息包与驱动。 详见 [`docs/天工3.0本地同构臂遥操迁移部署指南.md`](docs/天工3.0本地同构臂遥操迁移部署指南.md)。 OmniSocket Python 扩展包含本机架构代码,必须分别在 EAI 和机器人上从上述固定提交 原生执行 `make python-ext`,不能复制另一种 CPU 或 Python 版本生成的 `.so`。 提交或部署前可运行 `./verify.sh` 完成两端协议、手势、接收端刷新、Python 编译和 TOML 解析检查。若还要核对外置 OmniSocketGo 版本,可设置任务专用环境变量 `OMNISOCKETGO_DIR=/path/to/OmniSocketGo` 后再运行。 ## 当前按键 - 左 Z + 右 C 连续 3 秒:开始遥操;再次连续 3 秒:结束并限速回 Home。 若 Hub 尚未运行,本次长按只检测一次并立即结束,不发送控制数据;服务器启动后须先 稳定松开,再重新长按 3 秒。pending 和活动会话都不会自动重试或自动恢复。 - 右 C + 左摇杆上下:HBWALK 前进/后退。 - 左 Z + 右摇杆左右:HBWALK 原地转向。 - 右 B 连续 1 秒:右手进入厂商“单食指”姿态;松开至少 0.5 秒后再次连续 1 秒退出。手指动作继续受 `400 units/s` 限速。 - 左摇杆按下(L3)连续 1 秒:开始数采;松开至少 0.5 秒后再次连续 1 秒: 结束并保存。只有遥操已开启时才接受;Z+C 结束遥操或安全解除会自动结束数采。 ## 数采保存 Nvidia 独立服务录制明确白名单内的机器人实测状态、双臂/双手命令与反馈、行走、 IMU、电源状态、xTELE 应用帧以及头/腰 Orbbec 的 RGB-D。RGB 使用标准 JPEG 压缩流, 16 位深度使用无损 compressedDepth PNG,并同时保存相机内参与静态 TF。头部和腰部 相机都是可选流:服务运行就自动采集,未运行不阻塞核心 episode;manifest 会分别标记 `absent/healthy/partial/low_rate`。它不接管或停止厂家 `/record_bag_node`,也不录点云。正常结束后先校验 MCAP、生成 SHA-256 `manifest.json` 和 `READY`,再由 本机服务拉取到: ```text /home/ps/Desktop/TG3_TS1P_OmniSocket_Teleop/Data_Get// ``` 传输中断只会留在 `Data_Get/.incoming/`,不会显示为完成 episode。机器人在录制期间 必须临时写 `active/ready`;只有本机完成全文件 SHA-256、fsync、原子发布并写入 `VERIFIED` 后,才会自动删除机器人上同 ID、同 manifest 哈希的 `ready` 目录。EAI 从不保存 MCAP 或图像 payload。部署、状态检查和恢复步骤见 `tg3_data_collection/README.md`。 ## 迁移前必须修改 至少核对并修改服务器地址、两端 Peer ID、同构臂 ID、直连回退 IP、安装用户名和 路径。`config.toml` 中的 14 关节 Home 是当前实机采集值,不能直接用于另一台机器人; 必须在新机器人上重新采集并完成低速验证。所有厂家默认限位、碰撞、电流和急停保护 保持不变。 运行产生的 `status.json`、日志、Python 缓存及 ROS 构建目录已由 `.gitignore` 排除。 ## 安全与仓库可见性 这是物理机器人控制项目。启动带 `--allow-publish` 的服务、测试手势、行走或回 Home 前,必须确认机器人处于 HBWALK,防护和急停有效,双臂、灵巧手与行走区域净空。 仓库保留了现场 Hub 地址、设备/Peer ID、内网地址、当前实机 Home 姿态,以及标记为 `Proprietary` 的 ROS 消息定义,建议 Gitea 仓库保持私有。原厂 SDK 文档和 PDF 未收入 仓库,避免上传其中的下载授权码、Wi-Fi 信息及版权资料。