ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从站不稳到会踢球:基于Every-Embodied的Microduck双足强化学习完整教程(PPO+ONNX导出)

从站不稳到会踢球:基于Every-Embodied的Microduck双足强化学习完整教程(PPO+ONNX导出) 从站不稳到会踢球基于Every-Embodied的Microduck双足强化学习完整教程PPOONNX导出【免费下载链接】every-embodied仅需Python基础从0构建自己的具身智能机器人从0逐步构建VLA/OpenVLA/SmolVLA/Pi0 深入理解具身智能项目地址: https://gitcode.com/gh_mirrors/ev/every-embodied本教程带你使用Every-Embodied 具身智能开源教程项目中现成的训练脚本和验收工具在 MuJoCo 仿真里让约 25 cm 的开源双足机器人Microduck从零学会走路再进一步学会踢球最终把PPO 策略导出为 ONNX 模型部署到浏览器和 RDK X5 开发板上运行。全程只需要 Python 基础无需真机跟着命令一步步执行即可完成训练 → 导出 → 部署 → 验证的完整闭环。这个教程能带你做出什么完成本教程后你将掌握一条完整的具身智能强化学习流水线阶段你将学会对应素材走路训练用 PPO 在 4096 个并行环境中训练速度跟踪策略Mjlab-Velocity-Flat-MicroDuck任务踢球训练训练一次性的接触技能策略并检查支撑脚Mjlab-BallKick-Flat-MicroDuck任务模型导出用官方导出脚本把 PyTorch checkpoint 转为 ONNX输入[1,61]→ 输出[1,14]端侧部署在浏览器 WASM 或 RDK X5 板上运行 50 Hz 策略闭环网页 Sandbox 与 TCP 策略服务Microduck 是一款只有 800 g 的开源双足小机器人项目里的所有策略共用同一套观测与动作契约61 维观测输入、14 维关节动作输出。这个契约是后面所有导出、部署和网页演示能够即插即用的关键本教程会在导出环节详细解释。先看懂完整链路Microduck 双足强化学习是怎么跑的Microduck RL 官方项目总览左边是仿真中踢球的双足机器人右边是官方真机踢球画面整个训练链路可以拆成五个模块理解它们是理解 Microduck 强化学习的前提机器人与执行器模型用 MJCF 描述机器人结构电机不是理想 PD而是带反电动势、摩擦和电池电压影响的 BAM 舵机模型更接近真实硬件。观测与动作契约actor 只读真机上能拿到的 61 维观测IMU、关节状态、命令、历史动作critic 训练时额外读仿真特权信息如球的位置速度这是典型的非对称 actor-critic既加速学习又保证部署可行。奖励塑形奖励不止往前走还包括姿态保持、脚步离地、动作平滑、防自碰撞等并配合课程学习逐步加难。PPO 训练在数千个 GPU 并行环境中采样、更新策略checkpoint 定期写入磁盘。导出与部署官方导出脚本把观测归一化器烘入 ONNX 计算图随后即可在 CPU MuJoCo、浏览器或 RDK X5 上闭环运行。完整的训练数据流、奖励项拆解和 sim-to-real 四层保护建议精读教程正文05-OpenDuckMini与Microduck双足强化学习/README.md。环境准备训练前的三步检查官方工程要求 Linux 支持 CUDA 的 GPU Python 3.12由uv按锁文件创建环境。开始前先做三件事确认 GPU 可用运行nvidia-smi并检查torch.cuda.is_available()是否为True最常见的坑是装了 CPU 版 PyTorch。安装uv并执行uv sync安装项目依赖ARM 平台首次下载 CUDA wheel 很慢可先设置export UV_HTTP_TIMEOUT600再重试。不训练先验证注册表和单元测试uv run list-envs | grep MicroDuck uv run --with pytest pytest tests/看到Mjlab-Velocity-Flat-MicroDuck、Mjlab-BallKick-Flat-MicroDuck等任务名且测试通过说明依赖、注册表和配置约束都可用。用 PPO 训练走路策略从 Smoke Test 到正式训练第一步必做的小规模 smoke test长训之前官方建议先跑64 个环境 × 5 次迭代的快速测试验证整条链路能跑通uv run train Mjlab-Velocity-Flat-MicroDuck \ --env.scene.num-envs 64 \ --agent.max_iterations 5这一步要证明的是GPU 能创建并行环境、观测/动作维度正确、每个奖励项都能完成计算、rollout 不产生 NaN、checkpoint 能写盘。5 次迭代时动作接近随机是正常的它不证明策略学会了走路。第二步4096 环境正式训练确认 smoke test 通过后启动正式训练教程实际采用的配置是 4096 环境 × 6000 次迭代耗时约 1.5 小时WANDB_MODEoffline uv run train Mjlab-Velocity-Flat-MicroDuck \ --env.scene.num-envs 4096 \ --agent.max_iterations 6000 \ --agent.save-interval 500 \ --agent.run-name every-embodied-4096x6000WANDB_MODEoffline让日志只写本地普通开发机嫌 4096 太重时可以改用64 环境 × 10000 迭代的教学配置先把训练 → 保存 → 导出 → 回放全流程走一遍。训练时重点盯四类信号mean reward 长期趋势上升不是每轮都升episode length与摔倒率一起解读越长不一定越好线速度、角速度跟踪要一起提升会走直线不等于会转向录一段回放视频肉眼检查是否蹭地、屁股跳或高频抖动——曲线不能替代物理行为。第三步回放与录制走路视频训练完不要急着导出先用 checkpoint 回放确认步态。教程提供了无桌面也能用 EGL 渲染的录制脚本MUJOCO_GLegl uv run python \ $EVERY_EMBODIED/05-具身场景的深度和强化学习/05-OpenDuckMini与Microduck双足强化学习/record_microduck_policy.py \ --checkpoint logs/rsl_rl/velocity/run-name/model_5999.pt \ --output-dir artifacts/microduck-video \ --frames 600 --speed 0.4录完 600 帧脚本会主动关闭环境避免play命令在桌面环境录完帧后一直挂着 Viser 服务的问题。训练踢球技能BallKick 任务与奖励设计走路解决的是持续速度跟踪踢球是一次性的接触技能先站稳再用一条腿快速摆动击球同时支撑脚不离地最后回到可交接的站姿。所以不能把走路 ONNX 改个名当踢球策略用必须单独训练Mjlab-BallKick-Flat-MicroDuck任务。这个任务的几个关键设计值得新手学习设计点具体做法为什么重要自由球体直径 70 mm、15 g 的球开局位置加 ±1.5 cm 随机扰动策略没有视觉只能靠训练时的随机化容忍瞄准误差非对称 critic只有 critic 看球的位置和速度价值函数能判断这一脚会不会碰到球部署时不带球传感器目标速度奖励奖励球沿朝向运动并在 1.0 m/s 截断超速另有惩罚防止策略追求暴力击球支撑脚约束要求非踢球脚持续接地抑制双脚起跳和乱跑撞球左右脚分开训练默认KICK_FOOTright左脚需另起一次训练哪条腿踢、哪条腿支撑本身就是任务语义教程把训练参数抽成了环境变量化的脚本 train_microduck_ballkick.sh先跑 64 环境 × 5 迭代的 smoke 检查球体资产、接触传感器和 PPO 反向传播确认正常后再启动export MICRODUCK_RL$PWD export NUM_ENVS4096 export MAX_ITERATIONS6000 export WANDB_MODEoffline bash $EVERY_EMBODIED/05-具身场景的深度和强化学习/05-OpenDuckMini与Microduck双足强化学习/train_microduck_ballkick.sh教程实际完成的一轮右脚踢球训练4096 环境 × 6000 迭代约耗时 2 小时 6 分训练记录与模型文件清单见 microduck_ballkick_6000_model_card.md。检查 checkpoint 时至少观察五点球是否由脚接触后沿朝向运动、支撑脚是否接地、击球后能否恢复站姿、不同球初始偏差下能否命中、是否出现踢更猛但超速惩罚更高的策略退化。ONNX 导出把归一化器烘进计算图这一步最容易踩坑。不要手工转换 checkpoint——官方scripts/export.py除了导出网络权重还会把训练时的 observation normalizer 烘入 ONNX 计算图。手工导出的模型即使输入输出维度对得上也会因为原始观测没有归一化而在部署时完全失效机器人表现为乱动或直接摔倒。uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck \ --checkpoint-file logs/rsl_rl/velocity/run-name/model_5999.pt \ --onnx-file output.onnx导出后先做一次不依赖显示器的契约检查打开 ONNX 确认输入是[1,61]、输出是[1,14]喂一个全零向量推理一次确认输出有限值。如果推理端报Got: 51 Expected: 61说明用的是旧版 51 维命令布局的模型需要给推理脚本加--new-cmd-obs而不是裁剪或补零输入。ONNX 模型导出后可在 RDK X5 板端以 50 Hz 闭环驱动仿真中的 Microduck 行走部署实战浏览器 Sandbox 与 RDK X5 策略大脑在浏览器里运行自己的踢球策略官方 Microduck Sandbox 把 MuJoCo 物理WebAssembly和 ONNX 推理onnxruntime-web都跑在浏览器标签页里无需 GPU 服务器。流程是本地把模拟器仓库拉下来并执行git lfs pullONNX 文件由 Git LFS 管理漏拉只会得到几十字节的指针文件页面会启动失败然后npm ci npm run dev启动。浏览器端网页 Sandbox 中触发的右脚 BallKick 瞬间ONNX 推理与 MuJoCo WASM 物理均在本地浏览器执行想换成自己训练的策略只替换同名 ONNX 后重新构建即可。按 Q/E 触发左右脚踢球、F 交替踢、R 坐下站起、G 低头叼取网页里的策略只接管 25 个控制周期0.5 s后交还走路策略——这种短时技能策略 → 稳定策略的热切换方式与真机运行时一致。让 RDK X5 当策略大脑更贴近真实机器人分工的做法是Ubuntu 电脑负责 MuJoCo 物理与渲染RDK X5 只跑 ONNX 推理。板端不需要 MuJoCo 和 PyTorch只需 NumPy ONNX Runtime三个核心脚本都已提供脚本运行位置用途rdk_policy_smoke.pyRDK检查 ONNX 契约、推理延迟和 50 Hz 截止时间rdk_policy_server.pyRDK持久 TCP 连接提供批量61→14策略推理rdk_microduck_video.pyUbuntu运行单鸭/多鸭 MuJoCo 并向 RDK 请求动作、编码视频教程实测14 自由度 MLP 在 RDK X5 板上单次推理平均约 0.3 ms250 步 50 Hz 定时循环0 次超时完整记录见 rdk_policy_smoke_report.json。CPU 预算远小于 20 ms 控制周期因此这个量级的策略没必要强行上 BPU后续接入视觉检测网络时再把 BPU 留给计算量大的感知模型更合理。验证结果连续追球与摔倒自恢复部署不是终点闭环验收才是。教程用同一 MuJoCo 运行时做了两类严格测试连续追球测试球只在开局放置一次之后不瞬移、不复位。视觉状态机完成找球、绕行到球后、对准射门方向、选择左右脚、进入接触带再让 BallKick 策略接管 0.5 s踢完等球自然滚动再追逐同一颗球完成第二脚和第三脚。整段视频来自连续闭环不是三段动作拼接。连续追球闭环鸭子在踢出第一脚后等待球自然滚动再重新检测、追赶并完成第二、三脚全程保持直立摔倒恢复测试不直接改写位姿放倒机器人而是给浮动基座施加一次横向速度冲量倾倒与接触全部由物理引擎自然推进。摔倒检测器确认失稳后切到 stand 策略约 2 秒恢复直立再交还走路策略。注意一个常见误区网页里的检测框是由仿真真值投影构造的与检测器同形状的接口用于验证相机、状态机和策略切换链路不是训练好的视觉检测器接到真机时用 YOLO 等检测器替换 bbox 来源即可状态机不用重写。常见坑与排查速查表现象原因处理uv sync下载超时ARM 平台首次需下载数 GB CUDA 依赖export UV_HTTP_TIMEOUT600后重试网页启动报Unexpected token vGit LFS 指针文件被当模型解析git lfs pull确认 ONNX 为数百 KBONNX 报Got: 51 Expected: 61新模型用了旧版 51 维推理观测先做契约检查再给推理脚本加--new-cmd-obs手工导出的 ONNX 部署后摔倒观测归一化器没进计算图只使用官方scripts/export.py导出SSH 交互回放报GLXBadDrawable无桌面会话的 GLX 上下文缺失交互回放到 VNC/本机桌面跑无界面录像用MUJOCO_GLegl奖励上升但机器人不走策略钻了奖励空子录回放分项检查 tracking、air-time、slip按 Q/E 摆腿但碰不到球踢球策略看不到球先走到合适距离并把球对准对应脚继续深入MicroDuck 专题资料学会走路和踢球之后Every-Embodied 里还整理了一整套 MicroDuck 进阶任务篮球平衡、浏览器物理扰动、高跷行走、摆动旋转、梯面攀爬、RDK 端侧与网页部署、配套 Notebook 等按先跑通基线再理解代码最后做任务开发的顺序组织入口在专题总览16-专题组队学习/05-MicroDuck运动策略与任务开发专题/README.md可运行代码包含任务配置、训练/评测/导出脚本与测试02-可运行代码/microduck-playground-stilts/Notebook 学习线含 ONNX 契约检查与 BPU 验收03-Notebook/README.md进阶方向同一个 ONNX 策略被批量推理驱动同一物理世界中的 3×3 鸭子方阵验证边缘推理与多实例闭环总结从站不稳到会踢球的完整路线回顾本教程的五个里程碑这正是所有具身智能运动策略的通用范式smoke test 验证链路64 环境 × 5 迭代确认环境、维度、奖励和 checkpoint 落盘全部正常PPO 正式训练4096 并行环境长跑盯分项奖励而非单一曲线并用视频回放做物理验证契约化导出 ONNX归一化器必须烘入计算图[1,61] → [1,14]是部署的硬前提分层部署浏览器 WASM 沙盒快速迭代RDK X5 承担 50 Hz 策略大脑仿真端只管物理与画面严格闭环验收球只放一次、扰动只加冲量用可归档的 JSON 记录代替看起来正常的片段。距离真机还有一步关节标定、IMU 校准、失联与跌倒保护、悬空小幅度测试等安全门禁全部通过之前不要把新策略直接写进实体机器人。完整命令、脚本与验收记录都在 05-OpenDuckMini与Microduck双足强化学习/README.md照着执行即可完成从站不稳到会踢球的全过程。【免费下载链接】every-embodied仅需Python基础从0构建自己的具身智能机器人从0逐步构建VLA/OpenVLA/SmolVLA/Pi0 深入理解具身智能项目地址: https://gitcode.com/gh_mirrors/ev/every-embodied创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表