学习 / 实践

MuJoCo 延迟观测:知道旧位置,能预测现在吗?

具身智能 / 探索 · 工程案例

24条配对轨迹比较即时/80ms延迟、位置噪声和常速度外推,保留超调下降但任务仍失败的结果。

进阶 · 9 分钟 · 更新于 2026-10-07 · 步骤 18 / 22

这篇之后,已经有了哪些结果?

保留本文发表时的结论与下一步设想;以下是已发表的后续内容,不代表所有局限都已解决。

继续探索

继续探索

  1. 工程案例

    MuJoCo 速度估计:滤掉噪声,也可能让控制更差

    54回合真实仿真对照位置差分、指数平滑与真值速度参考,解释噪声放大、估计滞后和稳定性验收。

    11 分钟已发布

浏览统计暂不可用

本文目录 6
跳到正文 ↓
从干净环境复现 · 本篇固定版本

以下为 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 831789c2a1efb4564c4cfabc2298e48e16ada879
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py experiments/planar_reach/run.py --out outputs/my-run
& $py experiments/planar_reach/audit.py outputs/my-run

预期得到原始轨迹、摘要和审计结果。请使用新的输出目录,避免覆盖旧结果;不同实验对已存在目录的处理并不相同。E8–E10 共用一组实验入口。以上命令不调用模型;先运行数值部分,视频回放按正文单独执行。

排错:找不到实验目录先核对提交;导入失败检查解释器与安装环境;OpenGL 报错仅影响需要渲染的步骤。Linux/macOS 将解释器替换为 .venv/bin/python,尚未在这些平台复测。

查看本篇固定代码 ↗

固定版本代码 · 原始证据 · 实验档案

控制器调得稳定、路径也能走通,是否就足够?前两篇用的是即时仿真真值。这次移除障碍,保持同一控制器,只改变它什么时候看见位置,以及看到的位置是否带噪。

对照包括0/80ms延迟、0/10mm高斯位置噪声,以及“直接使用旧观测”和“用旧速度外推到现在”。三个固定种子7、19、41,总计24条轨迹。外推降低了一部分超调,但所有80ms延迟条件仍未达到本轮稳定完成标准。

先分清三个时间

capture:仿真状态被采样
    + 80ms
delivery:这个包对控制器可见
decision:控制器在当前20ms周期使用最后可用包

新包还没到达时,控制器不能偷偷读取当前真值。CSV同时记录物理位置和observed位置,capture_t应早于当前时刻。第一个观测到达前输出零力;这是协议的一部分,会影响运动起始时间。

位置噪声只加到传给控制器的报告,不改变物理真值。旧速度来自同一捕获时刻的仿真真值,且没有速度噪声,是偏乐观的传感器假设;并不是实现了视觉测速。

两种估计器

hold直接使用最后到达的位置,直到下个包出现。predict使用:

estimated_position = captured_position
                   + captured_velocity × (now - capture_time)

两种策略的D项都使用旧速度。predict没有更新速度、没有加速度模型,也没有Kalman滤波。控制力在变化时,常速度近似本来就会偏离真实运动;延迟还会让速度反馈滞后。

实测结果不能只看一个数

延迟 / 噪声 hold稳定通过 predict稳定通过
0ms / 无噪声 3/3 3/3
0ms / 10mm 1/3 1/3
80ms / 无噪声 0/3 0/3
80ms / 10mm 0/3 0/3

无噪声的三种子产生相同条件,不是三个独立随机样本。噪声组三种子也只是敏感性检查,不是带置信度的成功率。

80ms无噪声时,最大超调从hold的210.7mm降到predict的52.0mm;但最终误差由2.79mm变为26.76mm,两者都没有满足“最后0.3秒始终误差<15mm且速度<40mm/s”。只展示超调下降就宣布恢复成功,会误导读者。

0ms带噪声时,部分失败轨迹的最终位置误差只有1.36mm或0.30mm,仍未通过稳定窗口。它说明“最后看起来很准”与“持续稳定”不同。应同时看整个尾段的位置和速度,而非挑一帧。

固定种子7的实际目标误差轨迹,比较延迟、噪声与外推

图示仅种子7,全部种子保存在CSV,不用图中一条线代替全部结果。

怎样复核这个结论

audit.py独立检查每行capture_t不晚于物理时刻,再从x/y/vx/vy重算最后窗口。不要用控制器的估计位置替代真值验收,否则估计器可能“自己证明自己成功”。

练习:选一个最终误差很小但失败的文件,逐行检查最后0.3秒,找出哪一项阈值被破坏。再把延迟减小,在新输出目录运行;先保留原始协议和结果,不用后验调阈值覆盖负结果。

下一步值得验证,而不是直接宣称实现

可以研究带加速度的估计、速度噪声、状态滤波、降低控制增益或基于观测年龄停止。但每一种都引入新假设与参数,需要成组对照。当前predict不是鲁棒控制或安全保证;二维执行器也不能代表真实机械臂。

本轮把第二场景、参数、轨迹与负结果完整公开,后续应先解释具体失败机制,再决定增加哪一种估计器,避免把“算法名更多”当作能力提升。

从干净目录复现

使用 Python 3.12。入口一次运行这组三个主题的对照,各篇只解读自己的子集,不把同一份记录重复当作新增回合。

git clone https://github.com/VirtualSelect/hohoo-embodied-agent.git hohoo-embodied-agent-study
cd hohoo-embodied-agent-study
git checkout 831789c2a1efb4564c4cfabc2298e48e16ada879
python -m pip install -r requirements-lock.txt
python experiments/planar_reach/run.py --out outputs/my-run
python experiments/planar_reach/audit.py outputs/my-run
python experiments/planar_reach/plot.py outputs/my-run

输出目录必须不存在。本机验证环境为 Windows,Linux/macOS尚未复测。不需要模型密钥或付费服务。manifest中的代码冻结提交早于上方含证据的归档提交,源码哈希对应实际执行文件。

写给未来的自己合上文章前,留下一点自己的理解。

你的私人学习便签,只存在当前浏览器,不会上传或公开。清理浏览器数据会丢失,请导出留存。三种语言共用这篇文章的便签。

下一篇已发布内容:MuJoCo 速度估计:滤掉噪声,也可能让控制更差 →

当前学习位置

探索 / 具身智能

  1. ○ MuJoCo 绕障:路径上的点能过去,执行器就能过去吗?
  2. ○ MuJoCo 延迟观测:知道旧位置,能预测现在吗?
  3. ○ MuJoCo 速度估计:滤掉噪声,也可能让控制更差

继续探索

继续探索

  1. 实验 / 038

    MuJoCo 延迟观测:知道旧位置,能预测现在吗?

    24条配对轨迹比较即时/80ms延迟、位置噪声和常速度外推,保留超调下降但任务仍失败的结果。

    已完成
  2. 项目 / 003

    Hohoo 具身实验

    MuJoCo 抓取放置与二维力控两个教学场景,记录阶段契约、调参、绕障和延迟反馈的实际结果与失败。

    实验中
  3. 工程案例

    MuJoCo 绕障:路径上的点能过去,执行器就能过去吗?

    六条实际接触轨迹对照直达、贴边和留余量路径,解释几何尺寸、跟踪误差与碰撞之间的关系。

    9 分钟已发布

接下来,走哪条路?

依据文章关联与同主题已发布内容整理,不使用随机推荐。

← 全部文章