feat: harden TG3 teleop and add right-B point gesture

This commit is contained in:
LengedZhao
2026-08-08 15:51:21 +08:00
parent eab60273bc
commit 1a79fca36f
17 changed files with 1725 additions and 196 deletions

108
README.md
View File

@@ -1,79 +1,61 @@
# 天工 3.0 TS1P 同构臂本地遥操
# TG3 天工 3.0 本地同构臂遥操
本仓库汇总当前已经部署并验证的三部分:
```text
TS1P / xTELE
-> tg3_omnisocket_transport(EAI 会话门控发送端)
-> OmniSocketGo / KCP Hub
-> tg3_local_teleop(天工 3.0 机器人接收、双臂、双手和行走桥)
```
启动和结束遥操都使用左 `Z` + 右 `C` 连续 3 秒。待机时 EAI 不连接 Hub、
不发送业务数据;启动后约以 xTELE 原始频率发送;结束时发送匹配会话的最后一个
`STOP`,随后断开。遥操已启动时,右 `C` + 左摇杆在下一个 50 Hz 周期立即控制
HBWALK 行走,不再有第二个 3 秒等待。
本仓库保存 TS1P 同构臂经 OmniSocket 控制天工 3.0 双臂、BrainCo Revo2
双手和 HBWALK 前后/转向所需的自写代码。它不包含、不修改 xTELE、机器人厂家
控制源码或 OmniSocketGo 本体。
## 目录
- `tg3_omnisocket_transport/`:部署到 EAI 工控机;从 xTELE 的本机 5003/5001
读取数据,仅在左 Z + 右 C 连续 3 秒开启后注册并发送,STOP 后立即断开。
- `tg3_local_teleop/`:部署到机器人 Nvidia;直接接收 OmniSocket 数据,发布双臂、
双手及 `/hric/robot/cmd_vel`,并提供限速回 Home。
- `docs/`:可提交的跨机器人迁移步骤。含实测帧和现场拓扑的汇报/证据文档只保留在
当前本地工作副本,不同步到匿名可读的远端仓库。
## 外部依赖(不随仓库提交)
两端都需要单独安装 OmniSocketGo 的 Python 扩展。当前验证版本为:
```text
tg3_omnisocket_transport/ EAI 发送端、用户服务和离线测试
tg3_local_teleop/ 机器人桥、配置、用户服务、ROS 消息和离线测试
OmniSocketGo/ 固定版本的传输依赖(Git 子模块)
docs/ 部署汇报、迁移指南和 Topic/SBUS 证据记录
verify.sh 不连接机器人、不发布 ROS 的离线检查
https://gitea.public.snrc.site/limingjie/OmniSocketGo.git
commit de3f5c96779dbe1571c10feb22fc7f2331b6b222
```
OmniSocketGo 固定在提交 `de3f5c96779dbe1571c10feb22fc7f2331b6b222`。克隆时必须拉取
子模块:
```bash
git clone --recurse-submodules <本仓库地址>
cd TG3_TS1P_OmniSocket_Teleop
./verify.sh
```
如果已经普通克隆:
```bash
git submodule update --init --recursive
```
## 迁移时必须修改
当前提交保留了现场已经运行的配置,便于恢复当前机器人。迁移到其他机器人时,不可
原样启动,至少要检查:
- `tg3_omnisocket_transport/tg3-omnisocket-sender.service` 中的 Hub、发送 Peer ID、
目标 Peer ID 和 EAI 用户路径;
- `tg3_local_teleop/config.toml` 中的 Hub、机器人 Peer ID、预期发送 Peer ID、
同构臂 ID、灵巧手类型和直接局域网回退地址;
- 新机器人的 14 个真实 Home 关节值。现有 `home.joint_goal_rad` 只能用于当前机器人,
绝不能作为另一台机器人的 Home;
- ROS 安装路径、消息类型、HBWALK Topic 和机器人侧厂家速度许可。
完整流程见
EAI 还需已安装并运行 xTELE;机器人端需已有 ROS 2 Jazzy、厂家消息包与驱动。
详见
[`docs/天工3.0本地同构臂遥操迁移部署指南.md`](docs/天工3.0本地同构臂遥操迁移部署指南.md)。
## 构建传输依赖
OmniSocket Python 扩展包含本机架构代码,必须分别在 EAI 和机器人上从上述固定提交
原生执行 `make python-ext`,不能复制另一种 CPU 或 Python 版本生成的 `.so`。
OmniSocket Python 扩展包含本机架构代码,必须分别在 EAI 和机器人上原生编译,不能
复制另一种 CPU/Python 版本生成的 `.so`:
提交或部署前可运行 `./verify.sh` 完成两端协议、手势、接收端刷新、Python 编译和
TOML 解析检查。若还要核对外置 OmniSocketGo 版本,可设置任务专用环境变量
`OMNISOCKETGO_DIR=/path/to/OmniSocketGo` 后再运行。
```bash
cd OmniSocketGo
make python-ext
```
## 当前按键
EAI 和机器人部署命令、systemd 用户服务安装及完整重启顺序分别记录在两个项目的
README 和 `docs/` 中。
- 左 Z + 右 C 连续 3 秒:开始遥操;再次连续 3 秒:结束并限速回 Home。
- 右 C + 左摇杆上下:HBWALK 前进/后退。
- 左 Z + 右摇杆左右:HBWALK 原地转向。
- 右 B 连续 3 秒:右手进入厂商“单食指”姿态;松开至少 0.5 秒后再次连续
3 秒退出。手指动作继续受 `400 units/s` 限速。
## 迁移前必须修改
至少核对并修改服务器地址、两端 Peer ID、同构臂 ID、直连回退 IP、安装用户名和
路径。`config.toml` 中的 14 关节 Home 是当前实机采集值,不能直接用于另一台机器人;
必须在新机器人上重新采集并完成低速验证。所有厂家默认限位、碰撞、电流和急停保护
保持不变。
运行产生的 `status.json`、日志、Python 缓存及 ROS 构建目录已由 `.gitignore`
排除。
## 安全与仓库可见性
这是物理机器人控制项目。执行 `--allow-publish`、启动用户服务或回 Home 前,必须确认
机器人处于 HBWALK、防护和急停有效、双臂及行走区域净空。
这是物理机器人控制项目。启动带 `--allow-publish` 的服务、测试手势、行走或回 Home
前,必须确认机器人处于 HBWALK,防护和急停有效,双臂、灵巧手与行走区域净空。
仓库包含现场 Hub 地址、设备/Peer ID、内网地址、实机 Home 姿态以及标记为
`Proprietary` 的 ROS 消息定义,建议 Gitea 仓库保持私有。运行产生的 `status.json`、
日志、缓存和本机编译文件已由 `.gitignore` 排除。原厂 SDK 文档和 PDF 未收入仓库,
避免上传其中的下载授权码、Wi-Fi 信息及版权资料。
仓库保留了现场 Hub 地址、设备/Peer ID、内网地址、当前实机 Home 姿态,以及标记为
`Proprietary` 的 ROS 消息定义,建议 Gitea 仓库保持私有。原厂 SDK 文档和 PDF 未收入
仓库,避免上传其中的下载授权码、Wi-Fi 信息及版权资料。