两条臂的推理设置
双手推理运行一个单一的策略网络,同时输出双臂的动作。 观察-动作循环以 50Hz 运行——与训练数据的频率相同——两个从动臂同步执行各自的动作块。
对于第一次评估运行,允许策略不间断地执行,除非即将发生物理碰撞。 双手策略在适应真实环境时常常会在前 1-2 次发作中产生意想不到的动作。 第3-10集是有意义的评估数据。 请注意该策略是否始终达到任务的相同阶段(接近、抓取、转移、放置、回家),即使它最终失败了——部分成功是诊断信息。
双手评估方案
使用结构化协议。 非正式评估——“看起来它正在发挥作用”——对于双手政策来说是不可靠的,因为部分成功更为常见,并且可能掩盖从根本上被破坏的交接。
| 协议项目 | 双手规格 |
|---|---|
| 集数 | 最少 10 个; 添加更多数据之前,20 可获得高置信度结果 |
| 立方体起始位置 | 固定的、用胶带标记的位置 — 与您的第 4 单元训练设置相同 |
| 灯光 | 必须符合训练条件。 即使打开窗户也会改变照明足以影响工作区相机 |
| 什么才算完全成功 | 立方体从右侧开始,在左侧结束,双臂返回原始姿势,发作期间没有人接触 |
| 什么算作部分成功 | 掌握正确但转移失败,或转移成功但放置偏离目标。 分别记录这些。 |
| 故障分类 | 日志:(A) 抓取失败,(B) 交接失败 — 手臂到手臂的转移掉落,(C) 放置失败,(D) 超时。 切换失败类别 (B) 是双手独有的,并且对于改进来说信息量最大。 |
| 报告指标 | 完全成功率(所有 4 个阶段均正确的剧集)。 还报告部分成功率。 示例:“4/10 已满,7/10 已达到切换阶段”。 |
常见的双手故障模式
这些故障模式与单臂故障不同,需要针对双手进行修复:
- 手臂异步到达切换点: 一只手臂到达交接位置并等待; 另一个迟到了。 该策略尚未了解各臂之间的相对时间。 修复:添加 20 个演示,其中双臂在完成转移之前在交接点明确暂停 1-2 秒。 这使得数据中的同步要求变得明确。
- 切换掉落——立方体落在两个手臂之间: 最常见的双手特定故障。 相对于给予臂的释放,接收臂太早或太晚关闭其夹具。 修复:收集 15 个慢动作切换演示,具体以 25% 的速度进行。 夸张的时间为政策提供了有关夹具状态转换序列的更清晰的信号。
- 政策集中于单臂策略: 该策略学会仅用一只手臂完成任务,而忽略另一只手臂的能力。 当一只手臂的表现比另一只手臂的表现更加一致时,就会发生这种情况。 修复:从训练曲线(第 5 单元)中检查每个手臂的动作错误,并收集专门针对较弱手臂阶段的其他演示。
- 臂间碰撞: 两条手臂都试图占据相同的工作空间位置。 这是一个安全事件 — 在 DK1 硬件服务器中启用碰撞避免(
collision_avoidance: true在评估期间在 dk1-config.yaml 中。 始终遵守安全手臂分离的演示培训将防止大多数碰撞; 硬件级防护处理边缘情况。 - 部署时的相位去同步: 该策略执行正确的操作,但不按正确的时间顺序 - 例如,右臂先于左臂转移。 这是一个动作分块工件,其中块边界与任务阶段转换不一致。 修复:减少
chunk_size从 100 到 50 并重新训练。
用于双手改进的数据飞轮
适用于单臂策略的相同改进循环也适用于双手 - 增加了一项针对双手的特定功能:始终针对 第一的 任务序列中的故障模式。 如果抓握(A 阶段)仍然不一致,则无法改进切换(B 阶段)。 修复任务序列顺序中的错误。
评价
连播10集。 按阶段对每个故障进行分类 (A/B/C/D)
目标
确定第一个故障阶段。 收集 20-30 个专门涵盖该阶段的演示
重新训练
将目标演示添加到数据集。 从头开始重新训练或微调最佳检查点
评价
再次播放10集。 完全成功率提高了吗? 进入下一个故障阶段。
下一步是什么
您现在已经有了一个可用的双手学习管道。 立方体切换是基础——相同的架构可以扩展到更加复杂的任务:
第 6 单元完成时...
您的 DK1 在结构化评估运行中自主完成立方体移交任务,完全成功率至少为 6/10。 您已按阶段 (A/B/C/D) 对所有故障事件进行分类,并确定了哪个阶段造成了大多数故障。 您已经观看了失败视频并且可以具体阐明出了什么问题。 您对双手数据飞轮有足够的了解,可以规划您的下一次改进迭代。