读这一份就能开工,不需要回看旧对话。 这四件全部不碰硬件、不占机器人时间,可以和现场组员并行。 现场那边的清单在 明天要干什么,两边互不阻塞。
| 事实 | 出处 / 怎么验证 |
|---|---|
lerobot 环境的 torch 是 CPU-only |
torch 2.11.0+cu130,驱动 CUDA 12.6,torch.cuda.is_available() → False |
跑模型要用 train310 |
~/miniconda3/envs/train310/bin/python,torch 2.8.0,CUDA 可用。也是 robot_server.py:67 的 PY_POLICY |
| 机器 | Jetson Orin Nano Super,7.4 GiB 内存(CPU/GPU 共用),16G swap |
| 磁盘剩 34G / 116G | 硬约束。下模型前先 df -h /,满盘会让 Bash 整个失效 |
| 8770 面板 | 已跑着。html 每请求现读,改前端不用重启 |
| git | 所有 git 写命令都在 deny 列表里,提交由操作者做 |
train310。
用 lerobot 会得到一个假的「跑不动」,然后据此否掉一条本来可行的路。
这是这份交接里最容易犯的错。| 状态 | |
|---|---|
试验记录 schema v2 + 读取端归一化(trials_io.py,334 行) | ✅ 三环境自检通过,对 scipy 偏差 6e-15 |
| 三个读取端收敛到一处 | ✅ |
面板显示 k/n + 95% 区间 + 失败模式分布 + 子目标漏斗 | ✅ 已上线 |
| 预注册入口(面板输入框 + CLI 参数) | ✅ |
| 三份 GOAL + 明日现场清单 + 概念 pitch + 市场分析 | ✅ 已发布 |
试验数据管理 GOAL 的第 1、3、4 步都做完了,只剩第 2 步 —— 就是下面的 D。
纯远程 四件里最重要的一件
它是后面每一个动作的共同地基:倾倒、展示、递出,全都要先能稳定找到杯子。
已经失败三次,每次数字都好看,每次都被看图推翻:
| 做法 | 数字 | 真相 |
|---|---|---|
locate_nearest | 检出 79% | 锁的是机械臂,宽度 273–344mm |
locate_on_table | 检出 97.5%,跳动 0.9mm | 还是机械臂。「稳定」是因为锁住了不动的手臂 |
| + 剔除接触边界的连通域 | 检出 97.6%,跳动 6.4mm,宽 86–129mm | 数字全合理,看图仍无法确认是杯子 |
全部在 ~/.cache/huggingface/lerobot/,每个都是三路 RGB
(head 424×240,两个 *_wrist 640×480),30 fps:
| 数据集 | 集数 / 帧数 | 用途 |
|---|---|---|
xlerobot-right-pick-cup-20260826-0042 | 40 / 16487 | 换爪后的当前主数据集 |
xlerobot-cup-grasp-20260820-0230 | 50 / 19453 | 现役模型就是拿它训的 |
xlerobot-left-pick-cup-sep3-20260903-2015 | 29 / 6507 | 最新一批(左臂) |
xlerobot-right-pick-cup-sep2-2026090* | 各 11–14 集 | 还有好几批 |
「换一种杯子仍成立」这条验收,跨数据集跑就能覆盖 —— 不同批次的杯子不一样。
纯远程 几个小时就能出结论
现状: SmolVLA 一次推理 1329 ms,规划 50 步 (原文误作 146 ms/帧,那是 ACT 的数)
B0 想做的: 视觉 token 256 → 16
省下 Y ms (token 变少,语言模型那段变快)
付出 X ms (分割模型每帧要多跑一遍)
净收益 = Y − X
| 结果 | 含义 | 该怎么做 |
|---|---|---|
| X > Y(净负) | 分割模型比省下的还贵 | B0 在这块板子上毙掉 |
| X ≈ Y(净零) | 速度上不赚不亏 | 只剩「结构先验帮泛化」一个理由,和 B1/B2 重新比 |
| X < Y(净正) | 又快又有结构先验 | B0 升为优先,顺带缓解 6.9 Hz vs 30 Hz |
纯远程 产出是一份清单和一个决定
这套东西三周前就写好了(2026-08-14 提交,main 和 china-console 都有):
| 文件 | 行数 | 做什么 |
|---|---|---|
face_perception.py | 265 | 感知适配器 → FaceObservation(检测 + 表情,不做身份识别) |
face_follow.py | 330 | 头部跟随一张主脸,直驱舵机 7/8 |
face_display.py | 168 | ESP32-S3 + OLED 表情脸 |
test_face_emotion.py | 113 | 冒烟测试 |
DEMONSTRATION-INTERFACES.md | 325 | 示范接口决策文档 |
再写一套是重复劳动。先读,再列缺口。
| 内容 | |
|---|---|
| C1 | 通读上面五个文件,出「已有 / 缺 / 冲突」清单 |
| C2 | 决定留哪套人脸检测:Haar(scripts/)还是 YuNet(conversational_ai/)。现在两套并存,别加第三套 |
| C3 | ★ 修下面那处数字错误 ★ |
| C4 | 查文献:人机递交(human-robot handover)。我们没查过。至少三篇带链接 |
policy_safety.py:239 的 HEAD_LOCK_NOTE 断言该数据集
head_motor_2 = 99.649,据此算出 3181 counts、超出标定 564 counts。
实测:19453 帧全部是 49.846。用它自己的公式重算:
| head_2 | counts | 对 range_max = 2617 |
|---|---|---|
| 99.649(注释写的) | 3181.5 | 超出 +564.5 |
| 49.846(实测) | 2615.0 | 在范围内,差 2 counts |
HEAD_DIMS。前提不成立,这个跳过就没了依据。head_presets.json 里 cup-grasp-v0 的 tilt = 2619,
比 range_max 高 2 counts。和数据算出的 2615 相互印证 ——
标定边界和头的实际位置几乎重合,只差个位数 counts。HEAD_DIMS 的钳位加回来,那是行为变更,必须操作者拍板。纯远程 把已完成的 90% 补齐最后一块
试跑时在三个时刻各存一张头相机图,存到 05-training/trials/keyframes/:
开跑前(初始条件)→ 闭爪瞬间 → 结束时。
写进结果文件的 keyframes: {init, closure, end} ——
schema v2 里这个字段已经预留好了,trials_io.py 也已经能读,现在只是永远是 null。
traces/*.npz,17 维,质量很好),关键帧是缺的那一半。run_policy_trials.py 会驱动真手臂,
改之前 pgrep -f run_policy_trials 确认没人在跑;
面板模式走 wait_for_panel() 轮询,不要在那条路径上插 input(),会把面板挂死;
存图别挡住控制循环 —— 30 Hz 回路里同步写盘会掉帧。改完用 --dry 跑一次验证。…/<dataset>/depth/ep<N>-<时间戳>/frame_NNNNNN.pngHANDOFF-REMOTE-2026-09-04.md · 背景:
深度整合 GOAL(A、B)·
观众互动 GOAL(C)·
试验数据管理 GOAL(D)·
现场清单