feat: add session-gated TG3 data collection
This commit is contained in:
@@ -145,13 +145,70 @@ OmniSocket 进程;在此之前桥会保持最后一帧目标。未 START 或
|
||||
正常待机,不触发反复重启。只有匹配的操作员 STOP 自动回 Home;意外断网不自动产生
|
||||
回位运动。
|
||||
|
||||
## 独立数采
|
||||
|
||||
数采使用左摇杆按下键(L3),不是左侧 X/Y/Z 面键:
|
||||
|
||||
- 遥操已成功开启后,先保持 L3 松开至少 `0.5 s`;
|
||||
- 连续按住 L3 `1 s` 开始一条 episode;
|
||||
- 松开至少 `0.5 s`,再次连续按住 `1 s` 正常结束;
|
||||
- 长按 Z+C 结束遥操、安全解除或桥退出时,也会异步请求结束当前 episode;
|
||||
- 数采失败只记录错误,不解除遥操、不阻塞 50 Hz 控制,也不延迟 STOP/Home。
|
||||
|
||||
`button_joystick.left` 是 xTELE 5003 中独立的摇杆按压字段。已安装的 xTELE 0.1.2
|
||||
没有给它注册处理函数;X/Y/Z/A/B/C 均已有厂家功能或本项目绑定,因此不复用面键。
|
||||
新会话和服务重启后都先锁定为“必须松开”,畸形或陈旧按键帧不能被当作有效松开。
|
||||
|
||||
项目自有 `tg3-data-recorder.service` 在 Nvidia 上运行独立 `ros2 bag record`,不停止、
|
||||
重配或接管 Ubuntu 厂家 `/record_bag_node`。默认仅录 `config.toml` 中的明确白名单,
|
||||
包含 `/robot_state`、双臂/BrainCo 双手命令与反馈、HBWALK、IMU、电源状态以及完整
|
||||
xTELE 应用帧;相机和点云默认不录,也禁止改成 `-a`。
|
||||
|
||||
机器人暂存目录:
|
||||
|
||||
```text
|
||||
/home/nvidia/tg3_data_collection/
|
||||
active/ # 尚未完成,不能取走
|
||||
ready/ # 已正常收尾、校验并生成 READY
|
||||
failed/ # 启动、磁盘、进程或校验失败,保留供诊断
|
||||
```
|
||||
|
||||
MCAP 使用 `zstd_fast`、64 MiB cache、每 300 秒分片;每条 episode 最长 30 分钟,
|
||||
启动/运行最低保留 20 GiB。正常停止以 SIGINT 让 rosbag 写完 `metadata.yaml`,随后执行
|
||||
`ros2 bag info`,并确认所有 required topics 都有非零消息数;然后计算 SHA-256、写
|
||||
`manifest.json` 和 `READY`,最后才原子进入 `ready/`。Nvidia 需已安装 `python3-yaml`
|
||||
(现场已验证 PyYAML 6.0.1)。
|
||||
|
||||
部署两个机器人侧服务:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.config/systemd/user
|
||||
cp tg3-data-recorder.service 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
|
||||
```
|
||||
|
||||
只读检查:
|
||||
|
||||
```bash
|
||||
systemctl --user --no-pager status tg3-data-recorder.service
|
||||
ros2 topic echo --once /tg3/data_collection/status
|
||||
python3 -m json.tool /home/nvidia/tg3_local_teleop/status.json
|
||||
find /home/nvidia/tg3_data_collection/ready -mindepth 1 -maxdepth 1 -type d
|
||||
```
|
||||
|
||||
完成 episode 由 PS 本机服务校验后保存到项目 `Data_Get`,详见
|
||||
`../tg3_data_collection/README.md`。机器人 `ready/` 中的副本不会自动删除。
|
||||
|
||||
## 完整重启顺序
|
||||
|
||||
只重启本项目的网络与机器人桥时,先启动 Nvidia 接收端,再启动 EAI 本地门控服务;
|
||||
EAI 在收到物理 START 前不会建立发送 Session:
|
||||
|
||||
```bash
|
||||
ssh nvidia@192.168.41.2 'systemctl --user restart tg3-local-teleop.service'
|
||||
ssh nvidia@192.168.41.2 \
|
||||
'systemctl --user restart tg3-data-recorder.service tg3-local-teleop.service'
|
||||
ssh eai 'systemctl --user restart tg3-omnisocket-sender.service'
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user