学习 / 实践
MuJoCo控制调参:最优候选不等于验证通过
具身智能 / 探索 · 工程案例
54个开发回合选择参数,36个留出回合复核位置误差与稳定完成契约。
这篇之后,已经有了哪些结果?
保留本文发表时的结论与下一步设想;以下是已发表的后续内容,不代表所有局限都已解决。
继续探索
继续探索
浏览统计暂不可用
本文目录 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 1d1faab57e20b352761e9abc736c6d277b505e6b
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py experiments/planar_reliability/run.py --out outputs/my-run
& $py experiments/planar_reliability/audit.py outputs/my-run预期得到原始轨迹、摘要和审计结果。请使用新的输出目录,避免覆盖旧结果;不同实验对已存在目录的处理并不相同。E8–E10 共用一组实验入口。以上命令不调用模型;先运行数值部分,视频回放按正文单独执行。
排错:找不到实验目录先核对提交;导入失败检查解释器与安装环境;OpenGL 报错仅影响需要渲染的步骤。Linux/macOS 将解释器替换为 .venv/bin/python,尚未在这些平台复测。
查看本篇固定代码 ↗上一轮发现EMA能降低位置差分的噪声,却可能放大延迟闭环的摆动。直接宣布“滤波不好”并不充分:滤波器改变了动态响应,而控制增益还沿用旧值。本篇把滤波时间常数和PD增益一起扫描,再用没有参与选择的种子和条件检查结果。
这是二维力控执行器的 MuJoCo实际仿真。没有机械臂、相机、ROS2或真机。位置观测参与控制,速度真值只用于离线验收。
为什么不能只找一条漂亮曲线
控制律仍是 F = kp*(目标-观测位置) - kd*估计速度,每轴限制在±5N。降低kp可能减小过冲,但也可能变慢;改变kd会改变阻尼,也会改变估计噪声转成力的幅度;增大EMA时间常数能平滑,却引入更多滞后。
如果看完所有结果后挑一组成功轨迹展示,读者不知道这个参数是不是只对那一条噪声有效。因此协议先冻结选择规则:只按开发集最后300ms的位置RMS均值选最小者,平分时按kp/kd/tau顺序。选择指标与最终成功条件是两件事。
18组参数 × 3个开发种子 → 固定选择规则 → 选中一组
↓
3个新种子 × 6种条件,与旧基线比较开发集上选中了什么
kp取20/40/80,kd取8/18,tau取20/60/120ms,共18组。开发条件固定80ms观测延迟、3mm位置噪声,种子7/19/41,每回合4秒;物理步长2ms、控制周期20ms。
选中结果为 kp=20、kd=8、tau=20ms。原基线是80、18、60ms。这里是降低增益、缩短平滑的组合结果,不能把全部改善单独归功于某一个参数。
更值得保留的是:54个开发回合没有一个通过完整尾段契约。选择规则仍能挑出位置RMS更低的候选,但“最佳候选”并不等于“已经成功”。我们没有因此调整验收阈值。
留出检查确实更好,却仍有边界
留出种子为73/97/131;条件扩展为0/80ms延迟与0/3/10mm噪声。每组参数18回合,两组共36回合。
| 参数来源 | 留出回合通过数 | 尾段位置RMS的跨回合均值 |
|---|---|---|
| 上轮固定基线 | 3/18 | 54.70mm |
| 本轮开发集选中参数 | 7/18 | 3.61mm |
这是同一目标族、少量固定种子的对照,不是机器人泛化成功率。即使均值降至3.61mm,也仍有11个回合不满足完整条件。验收要求最后300ms每一个物理步同时满足距离<15mm和速度<0.04m/s,不能用平均位置误差代替。
控制没有偷看真值速度,EMA使用观测的捕获时间差;延迟队列只有已到达的样本能更新控制。独立审计从CSV重新计算估计速度、控制力和验收,并在这个无接触、无阻尼场景下验证 Δv=F*Δt/m。
这次比较支持什么解释
结果支持“旧控制器与滤波/延迟组合需要重新匹配”,不支持“kp越小越好”或“20ms适用于任何机器人”。kp/kd/tau是联合变化,本轮没有用单变量消融给它们分配贡献。开发和留出都来自同一个仿真模型,尚未覆盖质量、执行器误差、摩擦和更复杂目标。
后两篇分别改变通信与质量,观察这组参数的边界。不会把新条件再次用于选择后,仍称它们为“未见条件”。
一个能自己验证的练习
从 selection.json 找出选中参数,再从 results.json 只筛选 section=tuning 重算18组均值。不得混入holdout结果。接着选一个位置RMS很小却 success=false 的回合,检查最后300ms的最大速度;它会教你为什么平均误差和到达后稳定性不是同一个指标。
若结果不同,先确认锁定MuJoCo/NumPy版本、2ms物理步长和20ms采样间隔,再检查分组与种子。不要先放宽阈值。原始 csv.gz 为无损压缩,每个物理步都保留,不用平滑后的展示曲线替代验收。
最小复现与排错
从干净检出目录运行以下PowerShell命令。输出目录必须尚不存在。同组的三篇文章共用一份冻结协议,只需运行一次,再按各篇的证据分组查看。
git clone https://github.com/VirtualSelect/hohoo-embodied-agent.git hohoo-embodied-agent-study
cd hohoo-embodied-agent-study
git checkout 1d1faab57e20b352761e9abc736c6d277b505e6b
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py -m unittest discover -s experiments/planar_reliability -p "test_*.py"
& $py experiments/planar_reliability/run.py --out outputs/reliability-my-run
& $py experiments/planar_reliability/audit.py outputs/reliability-my-run本机Windows已验证:Python 3.12.14 + MuJoCo 3.3.7 + NumPy 2.2.6;3项单测、153回合、306000行;独立审计预期输出 PASS。其他操作系统未复测。若只想核验归档,不重新实验,可将审计参数换为 evidence/planar-reliability-20261011。源码哈希统一LF,证据哈希按原字节;不要改写manifest掩盖差异。
若导入失败,先检查安装与运行是否使用同一个 $py。失败输出保留,重跑时换新目录。数值按协议容差复核,耗时是本机观察,不要求复现相同速度。
代码与文章由AI辅助整理,结论以归档且可审计的实际运行记录为限。本轮没有新增付费模型请求,也不代表作者已亲手复现或完成人工审校。
写给未来的自己合上文章前,留下一点自己的理解。
你的私人学习便签,只存在当前浏览器,不会上传或公开。清理浏览器数据会丢失,请导出留存。三种语言共用这篇文章的便签。
当前学习位置
探索 / 具身智能
- ○ MuJoCo 速度估计:滤掉噪声,也可能让控制更差
- ○ MuJoCo控制调参:最优候选不等于验证通过
- ○ MuJoCo失联策略:零力不等于停止
继续探索
继续探索
接下来,走哪条路?
- MuJoCo 速度估计:滤掉噪声,也可能让控制更差 →
54回合真实仿真对照位置差分、指数平滑与真值速度参考,解释噪声放大、估计滞后和稳定性验收。
依据文章关联与同主题已发布内容整理,不使用随机推荐。