每一项都写了为什么做、怎么做、什么算做完、卡在谁身上。标了「现在就能做」的都不依赖任何还没量出来的数。
这四件都不依赖任何还没定的东西,而且都不会因为头部重做而作废。
rig_mount.stl + rig_hanger.stl,组成一个悬臂 + 挂砝码的测刚度装置。Blade_L120_82A_p36.stl,装上 A1 的夹具测 k 值。Clip_wave_t5.stl(推荐先打这个)。太软就换 Clip_wave_t7.stl,太硬换 Clip_wave_t3.stl。Blade_L100_82A_p36.stl —— 再打一片当备件。V12_shell_*、V12_top_key、
V12_cat_ears、V12_sock_cover、V12_cradle ——
头壳整体要重做(相机改到下巴位置、整体向上向后长),现在打出来一定作废。
V12_ear_pod.stl:耳罩尺寸已经锁死不会再变
(67.2 × 67.2 × 深 29.6,四个固定孔在 ±29),你已经打了的那两个继续有效。
每一件都解锁一块现在做不下去的设计。花的时间以分钟计,挡住的工作以天计。
USB2.0_CAM1(就是 /dev/video0 和 /dev/video2 那两个腕部相机)的水平视场角。FOV = 2 × arctan(W / 2D)。比如 D=500mm、W=700mm,则 FOV ≈ 70°。vr_extras.py:45 HEAD_TILT_LIMITS = (1479, 2617) —— 2617−1479 = 1138 counts ÷ 11.378 counts/deg = 100.0° 全行程 = ±50°。顺序很重要。C1 之前不要做任何别的实验 —— 它零成本, 而且有相当大的机会直接解释掉 0/31。
--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然后在 控制面板 上操作,终端只负责跑着。手放在急停上 —— 速度提上去了。--speed 的理解有问题,回来告诉我。"put down the cup",和抓取那份分开。先看本地这一轮的实测日志,两条证据都很硬:
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 size | 2 | ★ 真正的瓶颈 ★ 20000 步 × 2 = 40000 样本,而你有 19453 帧 —— 只过了约 2 遍数据。这是严重欠训,不是训得不够久 |
| 平台 | 价格量级 | 说明 |
|---|---|---|
AutoDL autodl.com | RTX 4090 约 ¥2/小时 | 国内学生用得最多的一家,按小时计费、随时关。镜像里直接有 PyTorch 环境。 首选 |
恒源云 gpushare.com | 相近 | 备选,界面类似 |
矩池云 matpool.com | 相近 | 备选 |
| Colab Pro | 约 $10/月 | ★ 仓库里已经有 05-training/train_smolvla_colab.ipynb ★
如果它还能跑,这是最省事的一条 —— 不用配环境 |
| 淘宝上的「GPU 租用」 | 通常更贵 | 不建议。大多是上面这些平台的转卖,中间加价,还多一层沟通成本。 直接上 AutoDL 注册即可,不需要任何资质 |
| 机器 | batch | 20000 步耗时 | 相当于过几遍数据 |
|---|---|---|---|
| Jetson Orin Nano(本机) | 2 | 约 5.5 小时 | 约 2 遍 |
| RTX 4090(租) | 32 | 约 1~2 小时 | 约 33 遍 |
| A100 40G(租) | 64 | 约 40~60 分钟 | 约 66 遍 |
4090 那一档正好落在你要的区间里。成本大约 ¥3~5 一次训练 —— 比在本机等 5.5 小时然后可能又被磁盘撑爆划算太多。
huggingface-cli login,拉数据集和 lerobot/smolvla_basetrain_smolvla.sh 里的 BATCH=2 改成 32(显存不够就 16),
WORKERS 改成 8| 项 | 具体是什么 | 怎么给 |
|---|---|---|
| 数据集 | 录好的示教数据(LeRobot 格式) | 推到 HuggingFace Hub 上,给他 repo_id。不要用 U 盘拷 ——
容易漏文件,而且版本对不上就白训 |
| 基座模型 | lerobot/smolvla_base |
公开的,他自己下就行。务必说清是从这个基座微调,不是从零训 |
| 训练配置 | batch size / steps / lr / 用了哪几路相机 | 把你现在用的那条训练命令原样发给他 |
| 语言指令 | 每份数据对应的 task 字符串 |
大小写和标点都要一致 —— 推理时对不上就等于换了个任务 |
| 相机路数和分辨率 | 两路腕部 + 一路头部,640×480 | 训练和推理必须完全一致,少一路或分辨率不同,模型直接不可用 |
| 参数 | 值 | 来源 |
|---|---|---|
| 耳罩外形 | 67.2 × 67.2 × 深 29.6 mm | 已定稿,覆盖件不影响其他部分 |
| 耳罩固定孔 | 4 个,X 和 Z 方向各 ±29 mm | v13 侧面只要给一块 ≥67.2 见方的平面 + 这 4 个螺母孔 |
| 喇叭 | 50 方框 / Ø40 磁体 / 厚 25 / 孔距 41.5 | 操作者实测 |
| Gemini 335 | 90 × 25 × 30 mm,97 g,IP5X | Orbbec 官方数据手册 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 mm | z ≥ +5.8 | z ≥ +10.0 | z ≥ +17.3 |
| 20 mm | z ≥ +11.5 | z ≥ +20.0 | z ≥ +34.6 |
| 30 mm | z ≥ +17.3 | z ≥ +26.6 | z ≥ +28.9 |
| 40 mm | z ≥ +10.7 | z ≥ +16.6 | z ≥ +23.1 |
| 50 mm | z ≥ 0 | z ≥ +6.6 | z ≥ +17.3 |
| 60 mm | z ≥ 0 | z ≥ 0 | z ≥ +11.5 |
| 80 mm 以外 | z ≥ 0 | z ≥ 0 | z ≥ 0 |
形状上是一个朝上开口的喇叭:越靠近中心越必须往上让,越往外才允许往下伸。 V12 的前下角在 R=36.4 处 —— 低头 −38° 就撞,这就是它必须重做的原因。
这几条都是分析后主动排除的,不是还没做。列在这里免得以后又绕回来。
| 不做 | 为什么 |
|---|---|
| 不打任何头壳件 | 相机要改到下巴位置、头整体向上向后长,现在打的一定作废。耳罩除外 |
| 不学底盘平移 | 没有接触、没有精度要求,脚本能做;而且底盘一动会让整个场景在相机里平移, 破坏视觉伺服关系。见 C5 |
| 不做「延长套」 (★ 不是尖端弹性夹 ★ 那个正在做,见 A3) |
指的是套在现有片上往前伸 40mm 的那种延长件:受力点跑到 140mm,
但片根还是按 100mm 设计的。结果是约 2.7× 软 + 根部易裂,
三个延长方案里最差的一个。 尖端弹性夹完全不同 —— 它只在尖端加一层接触面,长度不变, 所以刚度一点不受影响,也不会作废你的训练数据(长度一变, 学到的「关节角 → 接触点」映射就整体平移了) |
| 不直接把弹性片打长 | 刚度按长度三次方衰减。100→140mm 就是 2.74 倍下垂,会软到夹不住。 要前移就在根部加刚性垫块,弹性特性完全不变 |
| 不在杯子上做尖口 | 你自己指出的:机器人无法识别哪个口是倒液口。 但把导流嘴做在抓夹上就成立 —— 方向永远相对抓夹固定,天然已知 |
| 不给 Gemini 做防水 | 它在头顶,最不需要防水。真正要防的是两个腕部相机 (Sonix USB2.0_CAM1)—— 而且它们没有 IR 投射器、不是双目, 加透明窗的风险比给 Gemini 加低一个量级 |
| 不用 3D 打印的「透明」PLA/PETG 做窗 | 层纹和内部空隙散射极严重。看上去透,光学上是磨砂玻璃。 要用浇铸亚克力 1~2mm |
下面这些我已经准备好,只等一个数:
| 我能出的 | 等什么 |
|---|---|
| 腕部遮阳檐 + 透明窗压框 | B1 · 相机 FOV |
| v13 骨架下边界 | B2 · 俯仰行程 |
| v13 面部开口 | B3 · 表情屏尺寸 |
| 抓夹刚性垫块(如果需要) | B4 · 弹性片 k 值 |
| 头梁加长件 | 不等 —— 只依赖现有横梁的 4 个 M3 孔(x = ±33.25,z = 8 / 20),随时能出 |