← 全部报告
行动清单2026-08-23打印 · 测量 · 实验 · 训练

从现在开始做什么

每一项都写了为什么做、怎么做、什么算做完、卡在谁身上。标了「现在就能做」的都不依赖任何还没量出来的数。

这一页怎么用。从上往下做就行。每一项都写了 为什么做、怎么做、 什么算做完、卡在谁身上。凡是标了 现在就能做 的,都不依赖任何还没量出来的数 —— 拿起来就干。凡是遇到看不懂的机器学习名词, 点 模仿学习与 SmolVLA 入门,那一页从零讲起,附论文。
现在的处境,一句话:抓放成功率 0/31;82A 耗材已到位;头部 V12 因为 和立柱干涉判死刑要重做;立柱禁区曲线已经算清楚。所以重心在 先把抓放跑通,头部只做不会白费的那部分。

A · 现在就能打印

这四件都不依赖任何还没定的东西,而且都不会因为头部重做而作废。

A1测试夹具现在就能做 PLA / PETG
做什么
打 rig_mount.stl + rig_hanger.stl,组成一个悬臂 + 挂砝码的测刚度装置。
为什么
没有它,弹性片只能靠手感判断「软硬」。你已经在 8.9cm / 12cm 上各浪费过一次打印,这个夹具就是为了终结「打出来试试」这个循环。
怎么做
夹具本身是刚性件 —— 用 PLA 或 PETG,不要用 TPU,夹具一软测出来的就是夹具的刚度不是片的。把片水平夹住、悬出桌沿。
算做完
能把弹性片水平固定,末端挂得住砝码,夹具自身肉眼看不出变形。
卡在谁
没有依赖。
A212 cm 弹性片(82A)现在就能做 82A TPU
做什么
打 Blade_L120_82A_p36.stl,装上 A1 的夹具测 k 值。
为什么
你已经知道 100mm / 82A 好用。再拿到 120mm 的 k,就有了两个数据点 —— 之后任何长度都能外推,不用再一根一根打。这是整份清单里「一次投入长期省事」最明显的一项。
怎么做
k = 砝码重量(g) ÷ 102 ÷ 末端下垂(mm),单位 N/mm。挂 3~4 个不同重量各测一次,取斜率,别只测一个点。
算做完
得到 120mm 的 k 值,和 100mm 的 k 一起记下来。
卡在谁
要先有 A1。
A3尖端弹性夹现在就能做 82A TPU
做什么
打 Clip_wave_t5.stl(推荐先打这个)。太软就换 Clip_wave_t7.stl,太硬换 Clip_wave_t3.stl。
为什么
这是你自己提的方案,直接针对 98A「摩擦力不足」那个实测问题。 ★ 注意它和「延长套」不是一回事 ★ 尖端夹不改变长度, 所以刚度不变、训练数据也不作废;延长套才是 F 节里排除掉的那个。波浪面(wave)是为了增大接触和形变余量,t3/t5/t7 是三个刚度档 —— 厚度进三次方,所以 t3 到 t7 之间刚度差约 4.5 倍。
怎么做
套在现有 100mm 片的尖端上。先用 Ø70 的杯子试 —— 空杯拿得住不算,装水之后横向拨一下不掉才算。
算做完
Ø70 杯装水,抓起后手动横推不脱落。
卡在谁
没有依赖。
A4100 mm 备件(可选) 82A TPU 低优先
做什么
Blade_L100_82A_p36.stl —— 再打一片当备件。
为什么
现在能用的那副是唯一的一副。测试和试机都会磨损,断一片就停工。
算做完
有一副完整备件。
卡在谁
如果 82A 余量紧张,这条往后排。
不要打的:任何 V12_shell_*、V12_top_key、 V12_cat_ears、V12_sock_cover、V12_cradle —— 头壳整体要重做(相机改到下巴位置、整体向上向后长),现在打出来一定作废。

唯一例外是 V12_ear_pod.stl:耳罩尺寸已经锁死不会再变 (67.2 × 67.2 × 深 29.6,四个固定孔在 ±29),你已经打了的那两个继续有效。

B · 十分钟能量完的四件事

每一件都解锁一块现在做不下去的设计。花的时间以分钟计,挡住的工作以天计。

B1腕部相机的视场角 FOV现在就能做 约 1 分钟
做什么
量出 Sonix USB2.0_CAM1(就是 /dev/video0 和 /dev/video2 那两个腕部相机)的水平视场角。
为什么
决定遮阳檐能伸多长。头顶的 Gemini 是 90° 超广角,檐子伸不出去;腕部这种模组通常只有 60~70°,檐子就真能挡住东西。不知道这个数,挡水板就只能拍脑袋做。
怎么做
相机正对一面墙 → 量镜头到墙的垂直距离 D → 看画面左右边缘对应墙上的宽度 W → FOV = 2 × arctan(W / 2D)。比如 D=500mm、W=700mm,则 FOV ≈ 70°。
算做完
报一个角度数给我。
解锁
腕部遮阳檐 + 透明窗压框(防倾倒液体溅到镜头)。
B2俯仰行程要多大现在就能做 约 2 分钟
做什么
✅ 不用量了。俯仰行程就是相机云台上下能转的幅度,系统里早有记录:vr_extras.py:45   HEAD_TILT_LIMITS = (1479, 2617) —— 2617−1479 = 1138 counts ÷ 11.378 counts/deg = 100.0° 全行程 = ±50°。
为什么
立柱顶面和俯仰轴同高、没有间隙,所以「轴以下」几乎全是禁区。行程越大,头的下边界就得抬得越高 —— 这个数直接锁死 v13 的整个下半部分。
怎么做
舵机断电,用手扳头,从水平开始分别往上、往下扳到你能接受的极限,记下大概角度。不用精确,「大概三十几度」就够,我按保守值算。
结果
V13 已按 ±50° 锁定。顺带救了一次:原来按假设的 ±45° 建,相机底取 34mm;换成实测的 ±50° 后最低要求是 34.5 —— 差 0.5mm 正好不够,已改成 37。
解锁
v13 骨架的下边界。参考值:±30° → 相机底面要在轴上方 10.7mm;±45° → 16.6mm;±60° → 23.1mm。
B3表情屏的尺寸现在就能做 约 1 分钟
做什么
已给比例:宽:高 ≈ 2:1,按 60×30 外形 / 54×27 可视区建了。还想更准的话量:外形长 × 宽 × 厚,以及可视区的长宽(就是真正会亮的那一块)。如果有安装孔,顺便量孔距。
为什么
它是 v13 的脸。开口比可视区小会挡住画面,比外形大会露出边框和线路板。
算做完
报四到六个数。
解锁
v13 面部开口 + 屏幕固定方式。
B4弹性片 k 值要先有 A1+A2 约 10 分钟
做什么
用 A1 的夹具测 100mm 和 120mm 两片的 k。
为什么
决定「要不要延长抓夹」这个悬而未决的问题。
解锁
抓夹前移方案(如果要延长,是在根部加刚性垫块,不是把弹性片打长 —— 见下面 F 节)。
✅ 已经量完的:立柱直径 Ø80、俯仰关节 Ø20、 俯仰轴直接坐在立柱顶面的槽里(两者没有间隙)、立柱中心线正对俯仰轴下方且左右对称。 这四个数一到手,扫掠禁区曲线就算出来了 —— 这是 V12 从来没做过的计算, 也是 V12 判死刑的直接依据。

C · 实机实验 · 严格按顺序

顺序很重要。C1 之前不要做任何别的实验 —— 它零成本, 而且有相当大的机会直接解释掉 0/31。

C1在 speed 1.0 下重跑十次最高优先 零成本
做什么
把速度档从 0.3 改成 1.0,重跑十次抓放。
为什么
这是目前最具体的一条嫌疑。已有数据显示:--speed 0.3 时动作钳位率 47.7%,而 --speed 1.0 时只有 2.7%。因为 --speed 是乘在步长上限上的,把速度调低反而让近一半的动作被截断 —— 低速档跑出来的不是同一个动作的慢版,而是被扭曲的动作。如果你一直在低速下测,那测的根本不是策略本身。
怎么做
面板模式(不用终端):
python 03-software/scripts/run_policy_trials.py \
    --model smolvla --trials 10 --speed 1.0 \
    --task "Grab the cup" --send --panel
然后在 控制面板 上操作,终端只负责跑着。手放在急停上 —— 速度提上去了。
算做完
十次跑完,记下成功次数和钳位率。钳位率应该掉到 3% 附近;如果没掉,说明我对 --speed 的理解有问题,回来告诉我。
卡在谁
没有依赖。今天就能做。
C2五秒钟的夹持力测试现在就能做 五秒钟
做什么
让机器人抓起装了水的杯子,然后用手横向拨一下杯子,看会不会脱手。
为什么
静态抓着不掉,不代表夹得住。真正的失败往往是「抓的时候就没夹稳,一动就掉「。这个五秒钟的实验能直接回答」是不是夹爪的问题「,而不用等底盘链路打通、也不用重训。
算做完
记下「推多大力会掉」的定性感受,换上 A3 的尖端夹之后再测一次做对比。
C3把单臂数据补到 80~100 条要先看 C1 结果 耗时最大的一项
做什么
只选一只手,把示教数据补到 80~100 条。
为什么
SmolVLA 微调一个新技能,一般 50~100 条起步。如果你现在每只手只有二三十条,那很可能是欠训而不是方法错。只做一只手是因为仓库里已经记着:左右腕相机不镜像、标定也不对称,所以右手的能力没法迁移到左手 —— 两只手就是两倍成本。比赛场景下,一只手能用远胜两只手都半吊子。
怎么做
录之前先看 论文里一般怎么做,尤其是关于示教一致性的部分 —— 示教越杂,需要的条数越多。
算做完
单臂 80~100 条,重训后成功率有明显变化(好坏都算信息)。
C4录一份独立的「放下」数据集C3 之后 新技能
做什么
用不同的语言指令录第二份数据:"put down the cup",和抓取那份分开。
为什么
SmolVLA 是语言条件的模型 —— 这是它的设计初衷。所以正确做法是「数据拆分、模型合一」:录多份数据、打不同指令、训同一个模型。这样同时拿到拆分的好处(时域短、失败可归因)和合一的好处(共享视觉表征,更省数据)。详见 入门页 · 为什么时域短这么重要。
算做完
两份数据集、两条指令、一个模型,运行时脚本按顺序发指令。
C5底盘平移写脚本,不要学不要训练它 写代码
做什么
「拿起杯子 → 走一段 → 放下」这个动作里,中间那段用脚本开环走,不放进模仿学习。
为什么
两个理由,都很硬。
① 亏:底盘一动,整个场景在相机里平移。策略学的是「杯子偏左 → 手往左」这种视觉伺服关系,底盘一动这个关系就全乱了 —— 等于往数据里注入大量噪声。
② 赚不到:平移没有接触、没有精度要求,就是个开环里程计问题。花宝贵的示教数据去学脚本三行能做的事,不划算。
附带说明
现在的安全层是把底盘三个维度无条件清零的,而且所有已有训练数据里底盘全是 0 —— 那三个动作维度在数据里是常数,策略永远不可能输出非零值。走脚本路线的话这反而变成优点:安全层继续清零策略的底盘输出,脚本走另一条通道,两者天然隔离。
算做完
抓 → 抬到搬运姿态(固定关节角)→ 脚本走 N cm → 放,能连起来跑通。

D · 训练外包给同学

为什么要外包:本机配置不足,之前已经出现过训练中途数据丢失 / 训练被终止。 Jetson Orin Nano 是推理设备,不是训练设备 —— 它跑得动 SmolVLA 的推理, 但微调需要的显存和持续算力是另一回事。让同学用带独立显卡的机器训,会快一个量级, 而且不会跑一半崩掉。

★ 租 GPU:能不能、多快、多少钱 ★

结论先说:可以租,而且 1~2 小时训完完全做得到 —— 但真正的收益不是「更快」,是「能开大 batch」。

先看本地这一轮的实测日志,两条证据都很硬:

Training:  90%|█████████ | 18000/20000 [4:54:01<32:40,  1.02step/s]
SafetensorError: Error while serializing: I/O error: No space left on device (os error 28)
发现数字意味着什么
速度1.02 step/s,20000 步需 5.5 小时 远超你说的「不要等三小时以上」
中断原因跑到 90% 时磁盘满 这就是你说的「中途丢失/训练终止」。不是算力问题,是空间问题(现在剩 21G,暂时够)
batch size2 ★ 真正的瓶颈 ★ 20000 步 × 2 = 40000 样本,而你有 19453 帧 —— 只过了约 2 遍数据。这是严重欠训,不是训得不够久
这一条比速度重要得多。 batch=2 的梯度噪声极大,模型很难收敛到好解。 租一张卡能开到 batch 32~64,同样 20000 步就是 30~60 遍数据 —— 质量完全是另一个量级。所以租卡的第一价值是 batch,第二才是时间。

租哪里

平台价格量级说明
AutoDL autodl.comRTX 4090 约 ¥2/小时 国内学生用得最多的一家,按小时计费、随时关。镜像里直接有 PyTorch 环境。 首选
恒源云 gpushare.com相近备选,界面类似
矩池云 matpool.com相近备选
Colab Pro约 $10/月 ★ 仓库里已经有 05-training/train_smolvla_colab.ipynb ★ 如果它还能跑,这是最省事的一条 —— 不用配环境
淘宝上的「GPU 租用」通常更贵 不建议。大多是上面这些平台的转卖,中间加价,还多一层沟通成本。 直接上 AutoDL 注册即可,不需要任何资质

预计耗时

机器batch20000 步耗时相当于过几遍数据
Jetson Orin Nano(本机)2约 5.5 小时约 2 遍
RTX 4090(租)32约 1~2 小时约 33 遍
A100 40G(租)64约 40~60 分钟约 66 遍

4090 那一档正好落在你要的区间里。成本大约 ¥3~5 一次训练 —— 比在本机等 5.5 小时然后可能又被磁盘撑爆划算太多。

操作步骤

  1. 把数据集推到 HuggingFace Hub(不要用 U 盘/网盘拷,容易漏文件、版本对不上)
  2. AutoDL 上开一台 RTX 4090,选带 PyTorch 的镜像
  3. 装 LeRobot,huggingface-cli login,拉数据集和 lerobot/smolvla_base
  4. 把 train_smolvla.sh 里的 BATCH=2 改成 32(显存不够就 16), WORKERS 改成 8
  5. 训完把 checkpoint 推回 Hub,本机拉下来跑
  6. 关机(AutoDL 按小时计费,忘关会一直扣)
两个必须一致的地方,不然 checkpoint 直接不可用: ①相机路数和分辨率(训练和推理必须完全相同); ②语言指令字符串(大小写和标点都算)。

交给同学的东西(缺一不可)

项具体是什么怎么给
数据集录好的示教数据(LeRobot 格式) 推到 HuggingFace Hub 上,给他 repo_id。不要用 U 盘拷 —— 容易漏文件,而且版本对不上就白训
基座模型lerobot/smolvla_base 公开的,他自己下就行。务必说清是从这个基座微调,不是从零训
训练配置batch size / steps / lr / 用了哪几路相机 把你现在用的那条训练命令原样发给他
语言指令每份数据对应的 task 字符串 大小写和标点都要一致 —— 推理时对不上就等于换了个任务
相机路数和分辨率两路腕部 + 一路头部,640×480 训练和推理必须完全一致,少一路或分辨率不同,模型直接不可用

要他还回来什么

一个容易忽略的坑:验证 loss 降下去不等于机器上能用。 模仿学习的 loss 衡量的是「预测的动作和示教的动作有多像」, 而真正决定成败的是误差会不会累积到脱离数据分布 —— 这两件事没有可靠的对应关系。 所以不要根据 loss 决定训练是否成功,要根据实机试跑。 原理见 入门页 · 复合误差。

E · 已经锁死的参数(不要再改)

参数值来源
耳罩外形67.2 × 67.2 × 深 29.6 mm已定稿,覆盖件不影响其他部分
耳罩固定孔4 个,X 和 Z 方向各 ±29 mmv13 侧面只要给一块 ≥67.2 见方的平面 + 这 4 个螺母孔
喇叭50 方框 / Ø40 磁体 / 厚 25 / 孔距 41.5操作者实测
Gemini 33590 × 25 × 30 mm,97 g,IP5XOrbbec 官方数据手册 v1.1
Gemini 安装接口1× 1/4-20 UNC(≤4.0 N·m)+ 2× M3(≤0.4 N·m)同上。1/4-20 是这台相机上唯一真正结实的接口
立柱Ø80,中心线正对俯仰轴下方,左右对称操作者实测
俯仰轴Ø20 关节,直接坐在立柱顶面的槽里,无间隙操作者实测
V12_core_link不改已在打印,后续一切设计绕开它

立柱禁区曲线(原点 = 俯仰轴,前后对称)

头的下边界必须在这条线以上。因为立柱顶面就在轴高度上,所以「轴以下」几乎全是禁区,而且越靠近中心越危险 —— Ø80 那个圈躲不开。

水平距轴心±30° 行程±45° 行程±60° 行程
10 mmz ≥ +5.8z ≥ +10.0z ≥ +17.3
20 mmz ≥ +11.5z ≥ +20.0z ≥ +34.6
30 mmz ≥ +17.3z ≥ +26.6z ≥ +28.9
40 mmz ≥ +10.7z ≥ +16.6z ≥ +23.1
50 mmz ≥ 0z ≥ +6.6z ≥ +17.3
60 mmz ≥ 0z ≥ 0z ≥ +11.5
80 mm 以外z ≥ 0z ≥ 0z ≥ 0

形状上是一个朝上开口的喇叭:越靠近中心越必须往上让,越往外才允许往下伸。 V12 的前下角在 R=36.4 处 —— 低头 −38° 就撞,这就是它必须重做的原因。

F · 明确不做的事

这几条都是分析后主动排除的,不是还没做。列在这里免得以后又绕回来。

不做为什么
不打任何头壳件 相机要改到下巴位置、头整体向上向后长,现在打的一定作废。耳罩除外
不学底盘平移 没有接触、没有精度要求,脚本能做;而且底盘一动会让整个场景在相机里平移, 破坏视觉伺服关系。见 C5
不做「延长套」
(★ 不是尖端弹性夹 ★ 那个正在做,见 A3)
指的是套在现有片上往前伸 40mm 的那种延长件:受力点跑到 140mm, 但片根还是按 100mm 设计的。结果是约 2.7× 软 + 根部易裂, 三个延长方案里最差的一个。
尖端弹性夹完全不同 —— 它只在尖端加一层接触面,长度不变, 所以刚度一点不受影响,也不会作废你的训练数据(长度一变, 学到的「关节角 → 接触点」映射就整体平移了)
不直接把弹性片打长 刚度按长度三次方衰减。100→140mm 就是 2.74 倍下垂,会软到夹不住。 要前移就在根部加刚性垫块,弹性特性完全不变
不在杯子上做尖口 你自己指出的:机器人无法识别哪个口是倒液口。 但把导流嘴做在抓夹上就成立 —— 方向永远相对抓夹固定,天然已知
不给 Gemini 做防水 它在头顶,最不需要防水。真正要防的是两个腕部相机 (Sonix USB2.0_CAM1)—— 而且它们没有 IR 投射器、不是双目, 加透明窗的风险比给 Gemini 加低一个量级
不用 3D 打印的「透明」PLA/PETG 做窗 层纹和内部空隙散射极严重。看上去透,光学上是磨砂玻璃。 要用浇铸亚克力 1~2mm

G · 现在挡在我这边的

下面这些我已经准备好,只等一个数:

我能出的等什么
腕部遮阳檐 + 透明窗压框B1 · 相机 FOV
v13 骨架下边界B2 · 俯仰行程
v13 面部开口B3 · 表情屏尺寸
抓夹刚性垫块(如果需要)B4 · 弹性片 k 值
头梁加长件不等 —— 只依赖现有横梁的 4 个 M3 孔(x = ±33.25,z = 8 / 20),随时能出
XLeRobot build reports · 2026-08-23 · 这一页会随进度更新