
如何用Microduck RL的--save-csv对比训练数据与真机行为sim2real量化方法【免费下载链接】microduck_rlRL training environments for Microduck (mjlab)项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rlMicroduck RL是基于 mjlabMuJoCo Warp PPO 的强化学习训练环境仓库用于训练约 800 g 双足机器人 Microduck 的行走、站立、滑行等策略。它的推理脚本 scripts/infer_policy.py 内置--save-csv参数在 CPU MuJoCo 中 50 Hz 运行已导出的 ONNX 策略并把每一步的观测 动作完整落盘为 CSV——这正是把仿真里学到的策略与真机上实际发生的行为做逐项量化对比sim2real 评估的数据入口。本文带你用 4 个步骤完成这套 sim2real 量化流程。一、为什么需要 sim2real 量化对比 小体积舵机驱动双足机器人时执行器模型往往就是 sim2real 差距的大头。Microduck RL 用 BAM M6 XL330 执行器模型电压控制 负载相关摩擦训练策略而--save-csv让你拿到与训练完全同构的观测/动作序列从而可以回答两个核心问题仿真轨迹与真机轨迹差多少差在哪个通道偏差来自执行器、接触还是策略本身二、CSV 里有什么数据结构速览 加上--save-csv sim.csv后脚本每 20 ms50 Hz追加一行CtrlC 退出时统一写盘scripts/infer_policy.py。列结构如下列含义step/time控制步序号 / 累计时间sobs_0..2躯干角速度3 维obs_3..5投影重力向量3 维obs_6..1914 个关节位置相对默认姿态obs_20..3314 个关节速度obs_34..47上一步动作last actionobs_48..60指令速度 3 维 头部 4 维 身体姿态 6 维旧策略为 3 维总 51 维action_0..13策略输出的 14 维动作位置偏移单位弧度61 维观测是全部策略共享的契约48 维本体感知 13 维指令真机运行时也按同一契约记录——这就是同构数据能逐行对齐对比的前提。三、快速上手3 步导出仿真数据 ⚡需要本地环境时先克隆仓库git clone https://gitcode.com/GitHub_Trending/mi/microduck_rl# 1. 从训练结果导出 ONNX观测归一化已烘焙进计算图 uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck --wandb-run-path entity/project/run_id # 2. 键盘驱动仿真运行--save-csv 落盘观测与动作 uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs --save-csv sim_walk.csv # 3. 想更贴近真机固定域随机化 真实鞋底参数参数含义见下表 uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs \ --vin 7.4 --foot-friction 2.0 --foot-solref 0.04 --save-csv sim_walk.csv运行中每秒会打印一行[vel 1s avg] achieved/cmd fwd... lat...scripts/infer_policy.py直接看到命令速度 vs 实际速度的差距再加--debug可实时打印每步观测与动作明细。四、关键参数让仿真尽量贴近真机 ⚙️infer_policy.py内置与训练同款的 BAM 执行器src/mjlab_microduck/actuator/friction_dr_bam.py。训练时电压、摩擦等按环境做域随机化评估时用这些参数把随机化钉到真机的实际值上参数作用建议取值--vin电池电压训练逐环境采样7.4 V 为标称记录真机实测电压--vin-drop-gain负载相关压降增益 [V/Nm]按真机电源标定--kp-fw固件 P 增益与真机 XL330 固件一致--foot-friction鞋底摩擦系数训练范围 0.7–1.3真实 PU 底约 1.5–2.5--foot-solref鞋底接触柔度时间常数越大越软模拟 PU 底--delay MIN MAX指令延迟控制步按真机通信链路--no-bam回退 XML 理想 PD 执行器仅作对照基线五、真机侧采集同构数据 真机由 microduck 运行时加载同一个 ONNX61 维观测契约不变按相同顺序记录观测 动作序列即可与 CSV 逐行对齐。采集时保持与仿真相同的操作序列同样的速度指令、相同的按键时序对齐step后逐通道计算指标位置通道obs_6..19vs 真机关节角计算 MAE / RMS看平均偏差与漂移方向速度通道obs_20..33计算 RMS判断是否系统性滞后动作通道action_0..13两侧策略输出应几乎一致——若差异明显说明是真机观测漂移而非策略问题。六、现成工具单舵机台架 交互可视化 仓库还配了两个开箱即用的 sim2real 对比工具单舵机对比台架scripts/testbench_sim2real.py让同一个 ONNX 策略在 MuJoCo 台架--mode sim和 USB 连接的 XL330 真机--mode real上执行同一目标角度序列--compare sim.npz real.npz直接输出 MAErad/°、速度 RMS、动作 MAE并生成对比图comparison.png——适合先单独验证执行器模型本身。观测对比绘图scripts/plot_observations_comparison_plotly.py读取--record模式scripts/infer_policy.py保存的 pickle 观测文件按角速度 / 加速度 / 关节位置 / 关节速度 / 动作分区绘制 Plotly 交互图真机与仿真曲线叠加一眼看出偏差集中在哪些关节。七、常见问题与排查CSV 文件是空的数据在 CtrlC 正常退出时才写盘scripts/infer_policy.py确认没有直接杀进程。观测维度对不上新策略61 维必须加--new-cmd-obs旧策略51 维不加脚本启动时会校验维度并告警。仿真里正常、真机抖动先用--foot-friction/--foot-solref/--delay把接触与延迟调真实再用单舵机台架定位是执行器问题还是策略问题。更多 sim2real 设计经验沉淀在 AGENTS.md执行器相关回归测试见 tests/test_infer_policy_bam.py。【免费下载链接】microduck_rlRL training environments for Microduck (mjlab)项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考