ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从躺平到站立:Microduck RL如何训练StandUp起身策略

从躺平到站立:Microduck RL如何训练StandUp起身策略 从躺平到站立Microduck RL如何训练StandUp起身策略【免费下载链接】microduck_rlRL training environments for Microduck (mjlab)项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rlMicroduck RL 是一个基于 mjlabMuJoCo Warp PPO 的强化学习环境仓库用于训练 800 g 微型双足机器人 Microduck。其中StandUp 起身策略任务Mjlab-StandUp-Flat-MicroDuck能教机器人从趴着、躺着甚至坐姿中自己站起来并保持直立——本文带你拆解它的任务设计、奖励工程与课程训练让你看懂一套真正能 sim2real 的 RL 训练配方。什么是 Microduck 的 StandUp 任务Microduck 是一台约 25 cm 高、14 个 XL330 舵机的双足机器人。StandUp 是一个单集episodic策略每个回合只有 6 秒机器人随机以四种姿态之一开局必须在有限时间内完成起身 站稳 保持开局姿态初始占比难度已经站立40%学保持坐姿sit 策略的交接点40%常规起身趴着face-down20%先翻过身再起身躺着face-up0% → 35%最难后期才引入策略不依赖任何轨迹或关键点起身路径完全由 RL 自己发现——奖励只描述终点长什么样不规定怎么走过去。任务搭建一个目标 一层门控核心配置全部在一个文件里microduck_standup_env_cfg.py。任务在 tasks/init.py 注册平地和粗糙地形各有 Flat/Rough 两个变体。几个值得新手注意的设计决策目标高度是量出来的不是猜的STAND_Z 0.115是实测的站立平衡点。注释里记着一段血泪史——旧值 0.120 比机械极限高了 5 mm导致策略为了凑高度被迫后仰不可能目标卡了团队好几天。移除摔倒终止机器人本来就趴在地上fell_over终止条件必须删掉只保留nan_state安全终止。重置带噪声坐姿开局会在关节上加 ±7° 噪声、躯干倾斜 ±10°防止策略过拟合到教科书坐姿。重置逻辑见 mdp.py 中的 set_random_ground_state。奖励设计让机器人温和且可靠地站起来的 3 组奖励这是整个任务最精华的部分。奖励分成三组各管一件事1. 目标吸引组——站起来就给你钱奖励项作用pose_stand_legs腿部关节向 HOME 姿态的高斯跟踪提供远距离引导height_standheight_stand_sharp双层高斯宽 std(0.04) 管中途拉力窄 std(0.015) 管最后 1 cm 的精细爬升height_stand_l1权重 7.5让继续坐着的净收益为负——这是逼策略离开舒适区的关键standing_composite高度×直立×姿态的乘积型打分任何一项掉链子总分就崩堵死半蹲作弊一个经典教训只给终点奖励时坐着不动白拿大部分姿态分是最优局部解策略从此躺平。2. 运动引导组——奖励爬升过程本身com_upward_velocity只要躯干在向上动就给奖励相当于基于势能的 shaping——爬升每一点立即有正收益。门控在 0.125 m 以下才生效防止策略站着原地弹跳刷分。gentle_rise惩罚垂直加速度 |a_z|与上者组合后匀速缓慢上升才是得分最优解。⚠️符号陷阱该惩罚函数内部已返回负值所以权重必须写正数0.005。写反就变成越猛越高分——仓库里专门有测试锁定这条约定见 AGENTS.md 的奖励规则章节。3. 正则化组——sim2real 的保险丝action_rate_l2动作平滑课程内从 -0.1 爬到 -1.0、body_ang_vel -0.05、angular_momentum -0.02权重与走路任务严格对齐。注释里写得很直白任务总质量曾 ÷4 重新标定就是为了让正则化的相对强度与表现良好的 velocity 环境一致——否则策略在仿真里光滑上真机就抖。课程学习先发现技能再打磨细节训练不是所有奖励从头开满而是精心排演的分阶段剧本开局姿态课程ground_state_mix前 600 iter 只有站立/坐姿/趴着躺着最难在第 2500 iter 才加满到 35%。难姿态留到最后保证它们获得最多成熟策略的数据。惩罚延迟引入arrival_damping、joint_torque_rate_l2、头部下垂惩罚全部从 0 权重开始第 3000 iter 才登场。两次失败的对照实验证明发现阶段开任何尝试税都会让干脆不动获胜——时机timing比强度magnitude更决定成败。身体控制课程站稳后iter 2500 起再引入 6 维 body_pose 命令跟踪权重 0→4.0 爬坡命令范围同步放宽让策略先会站、再会听指挥摆姿势。Sim2real 部署61 维观察契约所有策略walk / stand / trick共享同一个61 维 actor 观察48 维本体感知 3 维速度命令 4 维头部命令 6 维身体命令这就是真机上策略可以热切换的前提。Sim2real 的防坑手段在 StandUp 里全部就位BAM 执行器模型XL330 按电压控制律建模反电动势 负载相关摩擦而非理想 PD见 friction_dr_bam.py全域随机化质心偏移、质量/惯量 ±5%、关节摩擦、IMU 安装偏差 ±6°、编码器偏置全部对齐 velocity 环境导出即部署scripts/export.py把观察归一化器烘焙进 ONNX 图手动转换 checkpoint 会让策略在真机看到未归一化的输入。想在自己的 CPU 上预演真机行为用 scripts/infer_policy.py 键盘驱动导出的 ONNX舵机用与训练相同的 BAM 模型仿真。快速上手3 条命令跑通起身策略需要 CUDA GPU 和 uvgit clone https://gitcode.com/GitHub_Trending/mi/microduck_rl cd microduck_rl # ① 冒烟测试64 环境 × 5 iter先抓 95% 的配置错误 uv run train Mjlab-StandUp-Flat-MicroDuck --env.scene.num-envs 64 --agent.max_iterations 5 # ② 正式训练4096 环境实验名 microduck_stand uv run train Mjlab-StandUp-Flat-MicroDuck --env.scene.num-envs 4096 # ③ 观看 导出 uv run play Mjlab-StandUp-Flat-MicroDuck --wandb-run-path entity/project/run_id uv run scripts/export.py Mjlab-StandUp-Flat-MicroDuck --wandb-run-path ...训练时盯三条曲线主任务项在涨、所有惩罚项 ≤ 0、回合长度符合任务语义。仓库的 CPU 测试无需 GPU锁定了关节索引与奖励符号约定改配置前先跑一下uv run --with pytest pytest tests/。进阶阅读任务注册表与全部任务清单README.md奖励设计规则每条都是踩坑换来的AGENTS.md奖励/事件/观察函数库mdp.py轮滑版起身策略的完整复盘含真机暴力修复记录roller_standup_policy_summary.md起身配置回归测试test_roller_standup_cfg.py从躺着起不来到稳稳站住并听懂身体命令Microduck 的 StandUp 用单一固定目标 势函数引导 分阶段课程这套组合拳回答了强化学习新手最常问的问题奖励到底该怎么写机器人才能既学得快、又不学会坏毛病。【免费下载链接】microduck_rlRL training environments for Microduck (mjlab)项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表