feat: add session-gated TG3 data collection
This commit is contained in:
@@ -1012,3 +1012,89 @@ Hub IP/端口变化时,额外同时修改 EAI `--server` 和机器人 `omnisoc
|
||||
当前没有直连断流门控的版本中设置 `locomotion.enabled=false`,同时停用 EAI 的
|
||||
`tg3-omnisocket-sender.service`,并仅以机器人 monitor-only 模式验证;完成第 7.5 节的
|
||||
ZMQ 专用断流门控前不得启用运动发布。
|
||||
|
||||
## 11. 数采部署与迁移
|
||||
|
||||
数采是本项目新增功能,不调用 `/bag_record/control/notify`,也不停止或修改 Ubuntu 厂家
|
||||
`record_bag_node`。Nvidia 独立录制,PS 本机负责把完成数据同步到:
|
||||
|
||||
```text
|
||||
/home/ps/Desktop/TG3_TS1P_OmniSocket_Teleop/Data_Get
|
||||
```
|
||||
|
||||
### 11.1 机器人 Nvidia
|
||||
|
||||
部署 `tg3_local_teleop/` 全目录,至少必须包含:
|
||||
|
||||
```text
|
||||
tg3_local_teleop.py
|
||||
data_collection.py
|
||||
data_recorder_protocol.py
|
||||
data_recorder_node.py
|
||||
config.toml
|
||||
run.sh
|
||||
run_data_recorder.sh
|
||||
wait_ros_ready.sh
|
||||
tg3-local-teleop.service
|
||||
tg3-data-recorder.service
|
||||
ros2_py/
|
||||
```
|
||||
|
||||
目标路径固定为 `/home/nvidia/tg3_local_teleop`。先按原项目步骤构建 `ros2_py`,再安装:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.config/systemd/user
|
||||
cp /home/nvidia/tg3_local_teleop/tg3-data-recorder.service \
|
||||
/home/nvidia/tg3_local_teleop/tg3-local-teleop.service \
|
||||
~/.config/systemd/user/
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now tg3-data-recorder.service
|
||||
systemctl --user restart tg3-local-teleop.service
|
||||
```
|
||||
|
||||
录制脚本必须能依次加载 `/opt/ros/jazzy`、`/home/nvidia/xos`、
|
||||
`/opt/robot_tele_server/install` 和本项目 `ros2_py/install`;否则自定义消息可能无法解码。
|
||||
还需 Python 3 的 PyYAML(Ubuntu 包 `python3-yaml`)解析 rosbag metadata。
|
||||
迁移时在 `config.toml [data_collection]` 核对 `base_directory`、20 GiB 余量、30 分钟上限、
|
||||
明确 topic 白名单和 required topics。不要改成 `ros2 bag record -a`,相机/点云需另行估算
|
||||
带宽和磁盘后再加入。
|
||||
|
||||
### 11.2 PS 本机
|
||||
|
||||
项目需包含 `tg3_data_collection/` 和 `Data_Get/`。确认到新 Nvidia 的免密 SSH 后安装:
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes nvidia@192.168.41.2 true
|
||||
mkdir -p ~/.config/systemd/user
|
||||
cp tg3_data_collection/tg3-data-get-sync.service ~/.config/systemd/user/
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now tg3-data-get-sync.service
|
||||
```
|
||||
|
||||
机器人 SSH IP 改变时,只改同步 unit;最简命令(替换两个地址)是:
|
||||
|
||||
```bash
|
||||
sed -i 's/nvidia@旧IP/nvidia@新IP/g' \
|
||||
~/.config/systemd/user/tg3-data-get-sync.service
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user restart tg3-data-get-sync.service
|
||||
```
|
||||
|
||||
这不修改 OmniSocket Hub、Peer ID 或机器人 `config.toml`。若 PS 用户名/项目路径改变,
|
||||
同时修改 unit 的 `WorkingDirectory`、脚本路径和 `--destination`。
|
||||
|
||||
### 11.3 操作与验收
|
||||
|
||||
1. 保持 L3 松开,长按 Z+C 3 秒正常开启遥操;
|
||||
2. 左摇杆按下(L3)连续 1 秒开始数采;该键是 `button_joystick.left`,不是 X/Y/Z;
|
||||
3. 松开 L3 至少 0.5 秒,再长按 1 秒结束;或正常 Z+C 结束遥操自动收尾;
|
||||
4. 查看 Nvidia `/tg3/data_collection/status`,必须先到 `ready`,不能从 `active/` 取数据;
|
||||
recorder 会同时要求 required topics 有实时发布者且最终消息计数大于零;
|
||||
5. 查看本机 `Data_Get/sync_status.json`,最终目录必须有 `READY`、`manifest.json`、
|
||||
`bag/metadata.yaml` 和非空 `*.mcap`;
|
||||
6. 执行 `ros2 bag info <episode>/bag` 并确认所需 topic 有消息;
|
||||
7. 断开 PS 网络再采一条,确认 Nvidia 保留数据;恢复网络后应续传且 SHA-256 通过。
|
||||
|
||||
每个新会话先要求 L3 稳定松开 0.5 秒,同一次持续按压只切换一次。数采故障不得解除
|
||||
遥操或延迟 STOP/Home;桥心跳中断超过 3 秒时 recorder 会自行 SIGINT 收尾。机器人
|
||||
`ready/` 不自动删除,确认本机和外部备份后才按具体 episode 清理。
|
||||
|
||||
Reference in New Issue
Block a user