99 lines
5.9 KiB
Markdown
99 lines
5.9 KiB
Markdown
# 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`](docs/天工3.0同构臂遥操与数采跨设备迁移手册.md),
|
||
更底层的公网/本地 Hub 与 ZMQ 细节见原迁移部署指南。含实测帧和现场拓扑的汇报/证据文档只保留在
|
||
当前本地工作副本,不同步到匿名可读的远端仓库。
|
||
|
||
## 外部依赖(不随仓库提交)
|
||
|
||
两端都需要单独安装 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 和活动会话都不会自动重试或自动恢复。
|
||
- 遥操开启且双摇杆先回中过一次后,左摇杆上下直接控制 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`,再由
|
||
本机服务拉取到:
|
||
|
||
```text
|
||
/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 信息及版权资料。
|