学习 / 实践
具身智能实践(九):松爪命令成功,不等于放置完成
具身智能 / 探索 · 工程案例
五条真实轨迹同时检查单帧与持续窗口:错误观测、延迟松爪和完成后的外力揭示验收范围。
这篇之后,已经有了哪些结果?
保留本文发表时的结论与下一步设想;以下是已发表的后续内容,不代表所有局限都已解决。
继续探索
继续探索
浏览统计暂不可用
本文目录 7
从干净环境复现 · 本篇固定版本
以下为 Windows PowerShell,Python 3.12。使用新的目录;不要在有未保存改动的工程里切换版本。每篇固定提交不同,首篇的旧提交不包含后续实验。
git clone https://github.com/VirtualSelect/hohoo-embodied-agent.git hohoo-embodied-agent-study
cd hohoo-embodied-agent-study
git checkout 497d0df30c1f66de50fb38b930f0c6ea069d9634
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py experiments/vl01_exit_release_budget/run.py --out outputs/my-run
& $py experiments/vl01_exit_release_budget/audit.py outputs/my-run预期得到原始轨迹、摘要和审计结果。请使用新的输出目录,避免覆盖旧结果;不同实验对已存在目录的处理并不相同。E8–E10 共用一组实验入口。以上命令不调用模型;先运行数值部分,视频回放按正文单独执行。
排错:找不到实验目录先核对提交;导入失败检查解释器与安装环境;OpenGL 报错仅影响需要渲染的步骤。Linux/macOS 将解释器替换为 .venv/bin/python,尚未在这些平台复测。
查看本篇固定代码 ↗上一轮研究了报警之后怎么退出。这一轮回到正常任务末端:程序已经发出了松爪目标,何时可以向上层报告“物体放好了”?
如果直接在 release() 返回后设 success=true,得到的只是命令链路结果。手指可能卡住,物体可能还在下落,甚至已经落到托盘外。因此本轮增加一个只观察、不改变控制器的完成验收器。
1. 将命令、观察与最终结果分开
固定脚本在6.5s进入释放阶段,手指目标随后逐渐张开。仿真仍按2ms推进、每20ms产生观测。两个判据处理同一条物理轨迹,不会因判定不同而改变动作:
- 单帧:第一次收到满足所有条件的新鲜观测就报告完成。
- 持续窗口:连续合格观测跨越至少250ms才报告完成;缺帧、过期或不合格会打断窗口。
两者的完成结果都锁存。锁存意味着“曾在某时刻满足判据”,不是“以后永远保持成功”。后面的外力对照专门检验这个区别。
2. 完成判据具体是什么
先决条件是已进入计划释放阶段,且此前方块确实抬高过10cm。每份合格观测还要求:
| 字段 | 约束 |
|---|---|
| X/Y | 距托盘中心(0.24,0.12)m,每轴误差小于45mm |
| Z | 距26mm的误差小于6mm |
| 线速度 | 小于0.02m/s |
| 支撑 | 与 bin_floor 接触 |
| 分离 | 不接触 left_pad 或 right_pad |
| 新鲜度 | 采样年龄小于60ms,时间戳递增 |
| 连续性 | 相邻有效采样间隔不超过20ms |
这比“位置到了”更严格,但仍是从仿真真值投影出的教学判据,没有相机估计误差,也没有验证支撑力是否足够。
250ms不是魔法常数。采样间隔20ms,所以从第一份合格观测到窗口通过,实际需要260ms,而不是把样本数量直接乘出一个含糊的时长。
3. 五种条件的实际结果
| 条件 | 单帧报告完成 | 窗口报告完成 | 12s终点验收 |
|---|---|---|---|
| 正常 | 6.842s | 7.102s | 通过 |
| 释放后手指一直闭合 | 不报告 | 不报告 | 失败 |
| 到7.0s才允许张开 | 7.042s | 7.302s | 通过 |
| 闭合故障中伪造一帧合格观测 | 6.602s | 不报告 | 失败 |
| 8.0s后施加短暂外力 | 6.842s | 7.102s | 失败 |
这五条轨迹只有观察判据的两路评分,不是十次独立物理试验。没有复制样本来增加“实验次数”。
4. 持续窗口挡住了什么,又没挡住什么
在伪造观测对照中,手指实际保持闭合,但6.602s的单份报告被改成:位于托盘中心、速度0、只接触托盘底。这是明确注入的错误测量,不是说现实传感器必然产生这种噪声。原始物理状态另外保存,便于核对真假。
单帧判据立即接受;持续窗口在下一份真实的不合格观测到来后被打断,未报告完成。这只支持它对本次孤立错误报告的容忍能力,不能推断它能抵御持续错误或有系统偏差的传感器。
外力对照则完全不同:方块先真的稳定放好,两种判据都正确报告了当时的状态。随后8.0–8.08s施加沿X方向1N外力,最终状态不再满足放置要求。不能倒过来称早先的报告必定是假阳性;它暴露的是锁存事件和持续保证之间的范围差别。
5. 成功应该是事件,还是持续状态?
如果任务只负责把物体放下,完成事件可以交接给下一阶段。如果任务还要保证物体在等待期间不被碰走,那么验收之后仍应监测,必要时撤销当前状态或发出新事件。
一个实用的接口可以分别保留 completedAt、currentlyValid与 invalidatedAt。本篇只实现前者,后两者仍是下一步,不在界面上伪装成已有安全功能。
也不要把连续合格窗口看成统计置信度。相邻采样高度相关,13个间隔不是13个独立证明。
6. 复现与检查
python experiments/vl01_exit_release_budget/run.py --out evidence/my-release-series
python experiments/vl01_exit_release_budget/audit.py evidence/my-release-series在E9目录查看 received与物理 contacts/cube_*,可以直接发现故意注入的那一帧差异。每回合的 single_completion、window_completion与 placement分开保存;独立审计逐行重算窗口,而不是相信摘要里的成功值。
下篇转向恢复次数与冷却。它同样要把“规则被遵守”与“任务完成”分开评估。
同方向继续阅读
写给未来的自己合上文章前,留下一点自己的理解。
你的私人学习便签,只存在当前浏览器,不会上传或公开。清理浏览器数据会丢失,请导出留存。三种语言共用这篇文章的便签。
下一篇已发布内容:具身智能实践(十):恢复次数受控了,为什么任务反而没完成? →
当前学习位置
探索 / 具身智能
- ○ 具身智能实践(八):检测到掉落以后,夹爪应该做什么?
- ○ 具身智能实践(九):松爪命令成功,不等于放置完成
- ○ 具身智能实践(十):恢复次数受控了,为什么任务反而没完成?
继续探索
继续探索
接下来,走哪条路?
- 具身智能实践(八):检测到掉落以后,夹爪应该做什么? →
15回合固定场景对照保持、松爪、松爪后退:报警相同,退出动作不同,最终放置也不同。
- 具身智能实践(十):恢复次数受控了,为什么任务反而没完成? →
12回合对照无限恢复、两次预算与400ms冷却:分别记录启停、验收窗口、终止原因和最终任务结果。
依据文章关联与同主题已发布内容整理,不使用随机推荐。