Files
TG3/README.md

5.9 KiB
Raw Permalink Blame History

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/:跨设备迁移先看 天工3.0同构臂遥操与数采跨设备迁移手册.md, 更底层的公网/本地 Hub 与 ZMQ 细节见原迁移部署指南。含实测帧和现场拓扑的汇报/证据文档只保留在 当前本地工作副本,不同步到匿名可读的远端仓库。

外部依赖(不随仓库提交)

两端都需要单独安装 OmniSocketGo 的 Python 扩展。当前验证版本为:

https://gitea.public.snrc.site/limingjie/OmniSocketGo.git
commit de3f5c96779dbe1571c10feb22fc7f2331b6b222

EAI 还需已安装并运行 xTELE;本地 Hub 模式必须保留完整 OmniSocketGo 源码并编译 bin/kcpserver。机器人端需已有 ROS 2 Jazzy、厂家消息包与驱动。 详见 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 和活动会话都不会自动重试或自动恢复。
  • 遥操开启且双摇杆先回中过一次后,左摇杆上下直接控制 HBWALK 前进/后退。
  • 遥操开启且双摇杆先回中过一次后,右摇杆左右直接控制 HBWALK 原地转向。
  • 遥操开启且右摇杆纵轴先回中过一次后,按住左 Z + 右摇杆上下调整 头部相机视角:上推抬头、下推低头;无需 R3。按住 Z 时会屏蔽右摇杆水平 转向,避免调整视角时误转。软件工作区为 -10°~+50°,最大 0.2 rad/s。
  • 右 B 连续 1 秒:左右手同时进入厂商“单食指”姿态;松开至少 0.5 秒后再次连续 1 秒退出。手指动作继续受 400 units/s 限速。
  • 按住右 A:右手限速摆到目标位置 [428,735,500,77,77,72];松开 A 后恢复 原有右手输入。A 在每个新遥操会话中必须先稳定松开 0.5 秒,防止跨会话误触。
  • 左摇杆按下(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,再由 本机服务拉取到:

/home/ps/Desktop/TG3_TS1P_OmniSocket_Teleop/Data_Get/<episode_id>/

传输中断只会留在 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 信息及版权资料。